天天看點

Linux檔案系統的特殊權限之SUID

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 

繼續閱讀