[root@localhost ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 22984 Jan 7 2007 /usr/bin/passwd
Linux 系統中,絕對多數命令的文件所有者默認都是 root。
換句話說,當普通用戶使用 passwd 命令嘗試更改自己的密碼時,實際上是在以 root 的身份執行passwd命令,正因為 root 可以將密碼寫入 /etc/shadow 文件,所以普通用戶也能做到。只不過,一旦命令執行完成,普通用戶所具有的 root身份也隨之消失。[root@localhost ~]# chmod u-s /usr/bin/passwd
#屬主取消SetUID權限
[root@localhost ~]# ll /usr/bin/passwd
-rwxr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd
[root@localhost ~]# su - lamp
[lamp@localhost ~]$ passwd
Changing password for user lamp.
Changing password for user.
(current) UNIX password:
#看起來沒有什么問題
New passwor:
Retype new password:
password:Authentication token manipulation error <--鑒定令牌操作錯誤
#最后密碼沒有生效
注意,實驗完成后,一定要再把 /usr/bin/passwd 文件的 SetUID 權限加上。
那么,普通用戶可以使用 cat 命令查看 /etc/shadow 文件嗎?答案的否定的,因為 cat 不具有 SUID 權限,因此普通用戶在執行 cat /etc/shadow 命令時,無法以 root 的身份,只能以普通用戶的身份,因此無法成功讀取。
新聞熱點
疑難解答