什么是“阴影”组用于?

在我的Ubuntu 9.10系统上,有一个shadow系统组。 根本没有任何用户被分配到这个组。 我能find的唯一属于这个组的文件是/etc/shadow/etc/gshadow

我知道这些文件的目的是将密码分开存储,而普通用户仍然可能因为其他原因想要访问passwd

shadow 的目的是什么?

我对此感到好奇的原因是因为我正在考虑将nsswitch.confconfiguration为将其存储在其他位置,并想知道是否有任何内容正在尝试使用shadow组凭据访问shadow数据库。

 $ find /usr/bin/ -group shadow | xargs ls -l -rwxr-sr-x 1 root shadow 45384 2008-12-08 03:13 /usr/bin/chage -rwxr-sr-x 1 root shadow 21424 2008-12-08 03:13 /usr/bin/expiry 

可能没有任何用户,但肯定有软件需要能够读取该文件。 请注意, passwd本身是setuid root,所以不需要这个。

不, shadow组应该没有用户,但是这个组是影子密码工作所必需的。

我想这里的想法是让文件只能由root和root访问。 您可能在根组中有额外的用户,这就是创build单独的用户组的原因。

在我的Ubuntu机器上有一些set-group-id命令。 这就为他们提供了读取两个影子文件的精确和唯一的权限(这些影子文件被分组到阴影中,并且只能被组读取)。

 -rwxr-sr-x 1 root shadow 35584 Mar 16 11:45 /sbin/pam_extrausers_chkpwd -rwxr-sr-x 1 root shadow 35544 Mar 16 11:45 /sbin/unix_chkpwd -rwxr-sr-x 1 root shadow 59224 Jul 20 2015 /usr/bin/chage -rwxr-sr-x 1 root shadow 23424 Jul 20 2015 /usr/bin/expiry -rw-r----- 1 root shadow 1043 Apr 2 00:27 /etc/gshadow -rw-r----- 1 root shadow 1732 Apr 2 00:27 /etc/shadow 

如果你有一个服务, 需要能够读取其中一个或另一个影子文件,只需将其set-group-id设置为shadow即可。 这与上面提到的相反 – 并不是说​​有很多其他人在组根中,而是按照惯例(和文件权限),这个组只允许你访问这两个资源。