天天看點

linux中SET位權限和粘滞位權限詳解

        對檔案或目錄進行通路控制時,“讀取”、“寫入”、“執行”是最基本的三種權限類型。除此之外,在linux中還存在着SET位權限(SUID、SGID)、粘滞位(Sticky Bit)等為為檔案或目錄提供額外的控制方式。下面我們就來聊聊這兩個非常有用的方式。

SET位權限

        位權限多用于給可執行的程式或腳本檔案進行設定,其中SUID表示對屬主使用者增加SET位權限,SGID表示對屬組内的使用者增加SET位權限。執行未見被設定了SUID、SGID權限後,任何使用者在執行該檔案時,将獲得該檔案屬主、屬組賬号對應的身份。

        為執行檔案添加SET位權限一般使用chmod指令實作:

        如使用“chmod u+s”設定SUID權限,使用“chmod g+s”設定SGID權限。

        也可以使用數字形式,SUID對應八進制數字“4”、SGID對應八進制數字“2”:

        如使用“chmod 4755”設定SUID權限,使用“chmod 2755”設定SGID權限,使用“chmod 6755”同時設定SUID和SGID權限

        合理利用SUID、SGID設定SET位權限,可以在確定安全性的同時為linux系統的管理和使用帶來友善。例如,linux系統中passwd指令的程式檔案就被設定了SUID權限,正因為如此,盡管普通使用者無法直接修改“/etc/shadow”檔案,但仍然可以通過passwd指令修改自己的登入密碼,進而以root使用者的身份間接更新shadow檔案中的密碼資訊。

        另一方面,若沒有确切的應用需要,不要輕易為可執行檔案設定SET位權限,特别是那些屬主、屬組是root的執行程式,使用SET位權限時更應該謹慎。例如,若為vim編輯器程式設定SUID權限,将導緻普通使用者也可以使用vim編輯器修改系統中的任何配置檔案。

        需要去除SUID、SGID權限時,隻需要使用“u-s”、“g-s”的權限模式即可。

粘滞位權限

        粘滞位主要用于為目錄設定特殊的附權重限,當目錄被設定粘滞位權限後,即便使用者對該目錄有寫入權限,也不能删除該目錄中其他使用者的檔案資料。設定了粘滞位權限的目錄,使用ls指令檢視其屬性時,其他使用者權限處的“x”将變為“t”。

        使用chmod指令設定目錄權限時,“chmod +t”、“chmod -t”權限模式可分别用于添加、移除粘滞位權限。将數字權限模式“nnnn”中 的第1位數字改為“1”、“0”,也可以實作添加移除粘滞位權限。

繼續閱讀