/etc/shadow 的权限

/etc/shadow 的权限

我正在使用 Red Hat Enterprise Linux,详细信息如下:

uname -a
3.10.0-327.22.2.e17.x86_64 

当我检查影子文件的权限时,我看到以下内容:

ls -l /etc/shadow
----------. 1 root root 1467 /etc/shadow

我很惊讶地看到这些权限。我认为“passwd”至少需要所有者的读/写权限才能更新此文件。知道这是怎么回事吗?

答案1

这很正常。

passwd不需要读/写权限,因为它设置了 suid 位,以 root 身份运行。

# ls -l /etc/shadow /usr/bin/passwd
---------- 1 root root   798 Jul 21 21:15 /etc/shadow
-rwsr-xr-x 1 root root 26688 Sep 10  2015 /usr/bin/passwd
#

更多信息请访问Stackexchange“‘passwd’命令如何获得 root 用户权限?”如果你想要的话。

答案2

权限位通常不适用于以适当功能运行的进程(例如,当它们以 root 权限运行时)。更准确的总结,感谢豪克·拉金的帖子

始终假设(以及具有和 的root任何其他用户/进程)可以执行CAP_DAC_OVERRIDECAP_DAC_READ_SEARCH一切除非 LSM(SELinux、AppArmor 或类似的)阻止他这样做。

作为史蒂夫已经指出passwd并且类似的程序要么设置了 suid 位(因此每个人都可以使用 root 权限运行它们),要么仅由 root 使用,因此/etc/shadow无论哪种方式,权限都无关紧要。

相关内容