Setuid
非root使用者可以以root身份執行passwd命令,為什麼不能修改root密碼?
我知道文件中的
setuid
位/bin/passwd
允許我們(非 root 使用者)以使用者身份執行該命令root
。執行passwd
命令需要root
更改/etc/shadow
文件的權限。我的問題是,如果我正在執行
passwd
命令,為什麼我在執行該命令時root
無法更改密碼?root``root
edward@ArchLinux:~$ passwd root passwd: You may not view or modify password information for root.
是
passwd
不允許非root使用者更改密碼的命令嗎?我可以編寫一個passwd
帶有 setuid 位的惡意命令來更改任何使用者的密碼嗎?(從邏輯上講,我知道這將是災難性的,但我想知道這在後台是如何工作的)
passwd(1)
檢查呼叫它的人的憑據,如果不是root
,則不允許更改其他使用者的相關條目。您描述的場景正是為什麼必須非常小心地編寫 SUID/SGID 程序的原因,以避免它們被欺騙做一些意想不到的事情或以某種方式受到損害的可能性。