linux 文件特殊權限位小結

SUID、SGID、STICKY簡介:

在瞭解特殊權限位前,先來了解一下安全上下文概念。

安全上下文:
進程運行時能夠訪問哪些資源或文件,不取決於進程文件的屬主屬組,而是取決於運行該命令的用戶身份的uid/gid,以該身份獲取各種系統資源。

特殊位作用:
  SUID:對一個可執行文件,不是以發起者身份來獲取資源,而是以可執行文件的屬主身份來執行。
  SGID對一個可執行文件,不是以發起者身份來獲取資源,而是以可執行文件的屬組身份來執行。
  STICKY:粘滯位,通常對目錄而言。通常對於全局可寫目錄(other也可寫)來說,讓該目錄具有sticky後,刪除只對屬於自己的文件有效(但是仍能編輯修改別人的文件,除了root的)。不能根據安全上下文獲取對別人的文件的寫權限。

設置方式:
 #chmod u+s
 #chmod g+s
同上,去除特殊位有: #chmou u-s  .等

  SUID:置於 u 的 x 位,原位置有執行權限,就置爲 s,沒有了爲 S .
  SGID:置於 g 的 x 位,原位置有執行權限,就置爲 s,沒有了爲 S .
  STICKY:粘滯位,置於 o 的 x 位,原位置有執行權限,就置爲 t ,否則爲T .

表示方法:
  將三個特殊位的用八進制數值表示,放於 u/g/o 位之前。其中 suid :4 sgid:2  sticky:1

  例: 對某個目錄:
   #chmod  4551  file  // 權限: r-sr-x--x
   #chmod  2551  file  // 權限: r-xr-s--x
   #chmod  1551  file  // 權限: r-xr-x--t

   由於SUID和SGID是在執行程序(程序的可執行位被設置)時起作用,而可執行位只對普通文件和目錄文件有意義,所以設置其他種類文件的SUID和SGID位是沒有多大意義的。

   對一個屬主爲root的可執行文件,如果設置了SUID位,則其他所有普通用戶都將可以以root身份運行該文件,獲取相應的系統資源。當然這在某些場合時需要的,但是濫用會造成系統的安全隱患。

  對一個全局可寫目錄,若其從屬於mygrp組,一個屬於mygrp組的用戶建立文件後屬組爲自己的私有組,但是加上給該文件夾加上SGID位後,可以讓用戶創建的文件從屬於該目錄所屬的組,因爲是以文件夾屬組的身份來創建的。

  對於一個全局可寫目錄,加上sticky位以後,普通用戶將只能刪除自己的文件,而不能刪除其他用戶的文件。

  1. [root@localhost tmp]# su - user1  
  2. [user1@localhost ~]$ id  
  3. uid=512(user1) gid=512(user1) groups=504(mygrp),512(user1)context=root:system_r:unconfined_t:SystemLow-SystemHigh  
  4. [user1@localhost ~]$ cd /tmp/share/  
  5. -bash: cd: /tmp/share/: Permission denied  
  6. [user1@localhost ~]$ ll -d /tmp/share  
  7. drwxrwSr-t 5 root mygrp 4096 Dec 30 16:09 /tmp/share  
  8. [user1@localhost ~]$   
  9. # 如上例,如果沒有原位沒有置X權限,即使同組的用戶也無法進入目錄,
  10. # 再設置SGID位也不起作用 
  11.  

 

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