當我看著
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 的原因。