Linux特殊權限suid sgid和sbit比較好的講解

Linux特殊權限介紹


Set UID
當s這個標誌出現在文件所有者的x權限上時,如/usr/bin/passwd這個文件的權限狀態:“-rwsr-xr-x.”,此時就被稱爲Set UID,簡稱爲SUID。那麼這個特殊權限的特殊性的作用是什麼呢?

  1. SUID權限僅對二進制程序(binary program)有效;
  2. 執行者對於該程序需要具有x的可執行權限;
  3. 本權限僅在執行該程序的過程中有效(run-time);
  4. 執行者將具有該程序擁有者(owner)的權限。

      SUID的目的就是:讓本來沒有相應權限的用戶運行這個程序時,可以訪問他沒有權限訪問的資源。passwd就是一個很鮮明的例子,下面我們就來了解一下這相passwd執行的過程。

      我們知道,系統中的用戶密碼是保存在/etc/shadow中的,而這個文件的權限是----------. (這個權限和以前版本的RHEL也有差別,以前的是-r--------)。其實有沒有r權限不重要,因爲我們的root用戶是擁有最高的權限,什麼都能 幹了。關鍵是要把密碼寫入到/etc/shadow中。我們知道,除了root用戶能修改密碼外,用戶自己同樣也能修改密碼,爲什麼沒有寫入權限,還能修 改密碼,就是因爲這個SUID功能。
      
    下面就是passwd這個命令的執行過程
  5. 因爲/usr/bin/passwd的權限對任何的用戶都是可以執行的,所以系統中每個用戶都可以執行此命令。
  6. 而/usr/bin/passwd這個文件的權限是屬於root的。
  7. 當某個用戶執行/usr/bin/passwd命令的時候,就擁有了root的權限了。
  8. 於是某個用戶就可以藉助root用戶的權力,來修改了/etc/shadow文件了。
  9. 最後,把密碼修改成功。
      
    注:這個SUID只能運行在二進制的程序上(系統中的一些命令),不能用在腳本上(script),因爲腳本還是把很多的程序集合到一起來執行,而不是腳本自身在執行。同樣,這個SUID也不能放到目錄上,放上也是無效的。

    Set GID
    我們前面講過,當s這個標誌出現在文件所有者的x權限上時,則就被稱爲Set UID。那麼把這個s放到文件的所屬用戶組x位置上的話,就是SGID。如開頭的/usr/bin/wall命令。
    那麼SGID的功能是什麼呢?和SUID一樣,只是SGID是獲得該程序所屬用戶組的權限
    這相SGID有幾點需要我們注意:
  10. SGID對二進制程序有用;
  11. 程序執行者對於該程序來說,需具備x的權限;
  12. SGID主要用在目錄上;
      
    理解了SUID,我想SGID也很容易理解。如果用戶在此目錄下具有w權限的話,若使用者在此目錄下建立新文件,則新文件的羣組與此目錄的羣組相同。

    Sticky Bit
    這個就是針對others來設置的了,和上面兩個一樣,只是功能不同而已。
    SBIT(Sticky Bit)目前只針對目錄有效,對於目錄的作用是:當用戶在該目錄下建立文件或目錄時,僅有自己與 root纔有權力刪除
    最具有代表的就是/tmp目錄,任何人都可以在/tmp內增加、修改文件(因爲權限全是rwx),但僅有該文件/目錄建立者與 root能夠刪除自己的目錄或文件。
    注:這個SBIT對文件不起作用。
      

SUID/SGID/SBIT權限設置
和我們前面說的rwx差不多,也有兩種方式,一種是以字符,一種是以數字。
4 爲 SUID = u+s
2 爲 SGID = g+s
1 爲 SBIT = o+t

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章