在我的Ubuntu 9.10系统上,有一个shadow
系统组。 根本没有任何用户被分配到这个组。 我能find的唯一属于这个组的文件是/etc/shadow
和/etc/gshadow
。
我知道这些文件的目的是将密码分开存储,而普通用户仍然可能因为其他原因想要访问passwd
。
但shadow
组的目的是什么?
我对此感到好奇的原因是因为我正在考虑将nsswitch.conf
configuration为将其存储在其他位置,并想知道是否有任何内容正在尝试使用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即可。 这与上面提到的相反 – 并不是说有很多其他人在组根中,而是按照惯例(和文件权限),这个组只允许你访问这两个资源。