Setuid

非root使用者可以以root身份執行passwd命令,為什麼不能修改root密碼?

  • February 4, 2016

我知道文件中的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 程序的原因,以避免它們被欺騙做一些意想不到的事情或以某種方式受到損害的可能性。

引用自:https://unix.stackexchange.com/questions/259847