/etc/shadow 和 /etc/passwd 权限 - 为什么它是可写的

/etc/shadow 和 /etc/passwd 权限 - 为什么它是可写的
sghk1> id
uid=0(root) gid=0(root)

sghk1> ls -l /etc/shadow
-r--------   1 root     sys         4045 Aug 24 15:52 /etc/shadow

sghk1> ls -l /usr/bin/passwd
-r-sr-sr-x   1 root     sys        26764 Jan 11  2012 /usr/bin/passwd

当我尝试使用 vi 编辑文件并 :wq 时,它会提示以下内容

"/etc/shadow" File is read only

为什么当我调用 /usr/bin/passwd 时,该文件可由可执行文件写入/更改,但当我尝试以 root 身份手动编辑时,却无法

答案1

就像root,你可以做“任何事情”,但诸如vi会进行检查并为你提供建议的程序。 vim(你可能正在使用)将允许你写入只读文件使用:w!(感叹号)。

passwd程序旨在更新/etc/shadow,并将使用、等的任意组合chmodwrite而无需通知用户。

root当然,作为普通用户(不是以 的身份运行), vim)无法更新/etc/shadow。该/usr/bin/passwd程序可以运行,因为它使用了 setuid 功能(执行 时为“s” ls -l /usr/bin/passwd)。

答案2

您引用的文件(/etc/shadow)未显示可写标志在其权限. vivim默认情况下不会写入没有可写标志的文件,即使以 root 身份或文件所有者身份,除非您用感叹号覆盖其行为。

您可以使用:w!来写入文件,忽略缺少可写标志的事实。

答案3

查看您对文件的权限,root 是所有者,root 本身只有读取权限。要更改它,您应该以 root 身份执行“chmod u+w /etc/shadow”,它将授予“您自己”写入权限。

相关内容