Linux系統下,常見的檔案權限有rwx, 分别對應可讀, 可寫,可執行三種權限。 除了這三種權限之外, 還有哪些特殊權限呢?
Linux下的另外三種特殊權限, 分别是SUID, SGID, SBIT權限。 這裡重點介紹SUID權限。
suid:set uid 權限,任何一個使用者運作一個帶此權限的指令時,不是以此使用者的身份啟動,而是以檔案自身的屬主通路。
Set UID
基本上SUID有這樣的限制與功能:
SUID 權限僅對二進位程式(binary program)有效, 不能用在shell script上面;
運作者對於該程式需要具有 x 的可運作權限;
本權限僅在運作該程式的過程中有效 (run-time);
運作者将具有該程式擁有者 (owner) 的權限。
這裡舉個栗子。 Linux系統中預設的被賦予suid權限的檔案是passwd。
[email protected]:~# ll /usr/bin/passwd
-rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd*
passwd的擁有者是root使用者。 假定有某個使用者叫hackstoic, 他要修改自己的密碼, 即執行passwd 指令, 這時候hackstoic就會被臨時賦予root的權限來執行passwd指令檔案, passwd就會去修改/etc/shadow檔案下對應的記錄,進而修改使用者自己的密碼。這就解釋了為什麼可以執行passwd指令的緣由。
但是你可以會問, 既然我可以臨時獲得root的權限,我為什麼不能使用passwd指令來修改别人的密碼呢?
這是因為
passwd
在修改密碼之前會檢視目前使用者是否比對要修改的使用者,否則就不會往下執行。
會顯示“您不能檢視或更改xxx的密碼資訊。”之類的提示。這個提示是
passwd
修改密碼之前的判斷,而不是在修改
shadow
的時候系統提示的權限不足。
文章首發于: www.hackstoic.com