一、SUID、SGID、SBIT簡介
SUID:對一個可執行檔案,不是以發起者身份來獲取資源,而是以可執行檔案的屬主身份來執行。
SGID:對一個可執行檔案,不是以發起者身份來獲取資源,而是以可執行檔案的屬組身份來執行。
SBIT:粘滯位,通常對目錄而言。通常對於全域性可寫目錄(other也可寫)來說,讓該目錄具有SBIT後,刪除只對屬於自己的檔案有效(但是仍能編輯修改別人的檔案,除了root的)。不能根據安全上下文獲取對別人的檔案的寫許可權。
設定方式:
#chmod u+s
#chmod g+s
#chmod o+t
同上,去除特殊位有: #chmou u-s .等。
SUID:置於 u 的 x 位,原位置有執行許可權,就置為 s,沒有了為 S .
SGID:置於 g 的 x 位,原位置有執行許可權,就置為 s,沒有了為 S .
SBIT : 粘滯位,置於 o 的 x 位,原位置有執行許可權,就置為 t ,否則為T .
表示方法:
將三個特殊位的用八進位制數值表示,放於 u/g/o 位之前。其中 suid :4 sgid:2 SBIT:1
將三個特殊位的用八進位制數值表示,放於 u/g/o 位之前。其中 suid :4 sgid:2 SBIT:1
例: 對某個目錄:
#chmod 4551 file // 許可權: r-sr-x–x
#chmod 2551 file // 許可權: r-xr-s–x
#chmod 1551 file // 許可權: r-xr-x–t
#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位後,可以讓使用者建立的檔案從屬於該目錄所屬的組,因為是以資料夾屬組的身份來建立的。
對於一個全域性可寫目錄,加上SBIT位以後,普通使用者將只能刪除自己的檔案,而不能刪除其他使用者的檔案。
粘著位(sticky)—–tmp目錄
一般來說都是用於目錄
其他使用者可以寫 但是就是不能隨便的刪除。。。。。。
chmod 777 abc
chmod +t abc
等價於 chmod 1777 abc
,即當一個目錄被設定為”粘著位”(用chmod a+t),則該目錄下的檔案只能由
一、超級管理員刪除
二、該目錄的所有者刪除
三、該檔案的所有者刪除
也就是說,即便該目錄是任何人都可以寫,但也只有檔案的屬主才可以刪除檔案
UID—4
GID—2
黏貼位-1
粘著位(sticky)—–tmp目錄
一般來說都是用於目錄
其他使用者可以寫 但是就是不能隨便的刪除。。。。。。
chmod 777 abc
chmod +t abc
等價於 chmod 1777 abc
,即當一個目錄被設定為”粘著位”(用chmod a+t),則該目錄下的檔案只能由
一、超級管理員刪除
二、該目錄的所有者刪除
三、該檔案的所有者刪除
也就是說,即便該目錄是任何人都可以寫,但也只有檔案的屬主才可以刪除檔案
UID—4
GID—2
黏貼位-1