非root用户可以以root身份运行passwd命令,为什么他们不能更改root密码?

非root用户可以以root身份运行passwd命令,为什么他们不能更改root密码?

我知道文件setuid上的位/bin/passwd允许我们(非 root 用户)以root用户身份运行该命令。运行passwd命令需要root更改/etc/shadow文件的权限。

我的问题是,如果我正在运行passwd命令,为什么我在运行该命令时root无法更改密码?rootroot

edward@ArchLinux:~$ passwd root
passwd: You may not view or modify password information for root.

是不是passwd不允许非root用户修改密码的命令?我可以编写passwd带有 setuid 位的恶意命令来更改任何用户的密码吗?

从逻辑上讲,我知道这将是灾难性的,但我想知道它在后台是如何工作的

答案1

passwd(1)检查调用它的人的凭据,如果不是,root则不允许更改其他用户的相关条目。

您所描述的场景正是必须极其小心地编写 SUID/SGID 程序的原因,以避免它们被欺骗做一些意想不到的事情或以某种方式受到损害。

相关内容