当我看着
usr/bin/
目录中,我看到带有 passwd 的命令行
-rwsr-xr-x. 1 root root 30768 2012-02-22 20:48 /usr/bin/passwd
并且它允许更改以获得root权限。与 s。
我想知道只有 root 可能可以更改其他用户的密码
passwd user
我想找到这个命令的位置并查找它。
该命令也是 usr/bin/ 目录的一部分吗?或者是别的东西
我想做的是。
我登录
user1
并输入
[user1] passwd user2
当然它在某种程度上被阻止了。但我想了解更多。
答案1
Unix(和Linux)有这样的概念真实的用户和有效的用户。 setuid 程序,例如/usr/bin/passwd
将有效用户设置为文件的所有者;在本例中,它将有效用户设置为root
。
现在,程序如何使用这些提升的权限取决于程序本身。
就该程序而言passwd
,如果您传递用户名,那么它将检查是否真实的用户是root;如果是则成功,否则返回错误。
因此root
用户可以运行/usr/bin/password user2
并且这将起作用,但是如果user
运行相同的命令则会失败。只有一个程序,但它的工作方式会根据运行它的用户而变化。
答案2
该passwd
二进制文件是 suid,因为它需要 root 权限才能修改该/etc/shadow
文件。它不允许非特权用户修改其他用户的密码。它将允许root
修改任何用户的密码,但这不是它是 suid 的原因。