suid權限

我們首先來談一下passwd程序特殊的地方。大家都知道,Linux把用戶的密碼信息存放在/etc/shadow裏面,該文件屬性如下:
 可以看到Shadow的 只有所有者可讀寫,所有者是root,所以該文件對普通用戶是不可讀寫的。但是普通用戶調用passwd程序是可以修改自己的密碼的,這又是爲什麼呢?難 道普通用戶可以讀寫shadow文件?當然不是啦。password可以修改shadow文件的原因是他設置了SUID文件權限。
    SUID文件權限作用於可執行文件。一般的可執行文件在執行期的所有者是當前用戶,比如當前系統用戶是simon,simon運行程序a.out,a.out執行期的所有者應該是simon。但是如果我們給可執行文件設置了SUID權限,則該程序執行期間的所有者,就是該文件所有者。還以前面的a.out爲 例,假如a.out設置了SUID,並且其所有者是root,系統當前用戶是simon,當simon運行a.out的時候,a.out在運行期的所有者 就是root,這時a.out可以存取只有root權限才能存取的資源,比如讀寫shadow文件。當a.out執行結束的時候當前用戶的權限又回到了 simon的權限了。
     passwd就是設置了SUID權限,並且passwd的所有者是root,所以所有的用戶都可以執行他,在passwd運行期,程序獲得臨時的root權限,這時其可以存取shadow文件。當passwd運行完成,當前用戶又回到普通權限。
     同理,設置程序的SGID,可以使程序運行期可以臨時獲得所有者組的權限。在團隊開發的時候,這個文件權限比較有用,一般系統用SUID比較多。
     SGID可以用於目錄,當目錄設置了SGID之後,在該目錄下面建立的所有文件和目錄都具有和該目錄相同的用戶組。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章