Linux系統下,常見的文件權限有rwx, 分別對應可讀, 可寫,可執行三種權限。 除了這三種權限之外, 還有哪些特殊權限呢?
Linux下的另外三種特殊權限, 分別是SUID, SGID, SBIT權限。 這裡重點介紹SUID權限。
suid:set uid 權限,任何一個用戶運行一個帶此權限的命令時,不是以此用戶的身份啟動,而是以文件自身的屬主訪問。
基本上SUID有這樣的限制與功能:
SUID 權限僅對二進位程序(binary program)有效, 不能用在shell script上面;
運行者對於該程序需要具有 x 的可運行權限;
本權限僅在運行該程序的過程中有效 (run-time);
運行者將具有該程序擁有者 (owner) 的權限。
這裡舉個慄子。 Linux系統中默認的被賦予suid權限的文件是passwd。
root@VMS001:~# 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的時候系統提示的權限不足。這就解釋了為什麼普通用戶不能修改他人的密碼的原因。
--全文完-
/** 轉載請註明來自: 作者 hackstoic **/
文章首發於: www.hackstoic.com