根据suid概念,如果在任何文件/可执行文件上设置suid位,并且普通用户执行该命令。命令将以该文件/命令的所有者的权限执行。
suid bit设置在" passwd" command和root是passwd的所有者。现在,如果普通用户说" user1"执行命令' passwd'它将以root权限执行。但是,他只能更改密码而不能更改其他密码。为什么这样?
答案 0 :(得分:2)
/usr/bin/passwd
程序将检查两个条件:
仅满足两个条件之一,该过程才能修改密码。
因此,阻止您修改其他用户密码的是/usr/bin/passwd
程序,而不是suid
权限。您对suid
权限的理解是正确的。
顺便说一句,原谅我可怜的英语,我正在寻找一种改善它的好方法。
答案 1 :(得分:0)
suid
位并不会使某些内容以root身份运行。它只是允许某些东西进行setuid
系统调用,以提升它的特权。
passwd
需要root权限才能更新用户凭据。但它非常谨慎地做到了 - 它从用户上下文开始,验证内容,然后升级权限以使系统发生变化。设置setuid
并不会对此产生任何影响 - 它只是允许它执行此操作。
如果要完成非root密码更改,则应该使用sudo
以root身份运行passwd
。
如果你真的想要,你可以编写自己的嵌入setuid
系统调用的命令,但sudo
可能是更好的方法。