linux下粘滯位引出的SUID和SGID

2021-07-30 07:56:55 字數 2106 閱讀 3458

許可權字母表示: 

r:讀許可權(檢視檔案中的資料/檢視目錄的內容) 

w:寫/修改許可權(修改檔案以及刪除/在目錄內建立或刪除物件) 

x:執行許可權(執行程式/進入目錄)

許可權數字表示: 

---: 0 

--x: 1 

-w-: 2 

-wx: 3 

r--: 4 

r-x: 5 

rw-: 6 

rwx: 7 

故/bin/bash的許可權集合的數字表示為:755。

但是在mode_t(比如0022)當中的話,它還有乙個最高的為,就是我們所說的粘滯位。

粘滯位(sticky bit)的功能是這樣的,當某乙個檔案設定了這一位的時候,這個可執行程式退出後,作業系統會在記憶體當中儲存該程式的記憶體映像,這樣做是為了節約大型程式的啟動時間,但是也要占用系統資源。因此,設定這個粘滯位,到不如把自己的程式寫得更好些。這一位可以理解為防止刪除位,設定了這一位之後,就算使用者對目錄具有讀寫的許可權,但也只能新增檔案而不能刪除檔案。

由此引出的兩個位是suid和sgid。

當設定了suid的檔案被執行時,該檔案將以所有者的身份執行,也就是說無論誰來執行這個檔案,他都有檔案所有者的所有許可權。如果所有者是root的話,那麼執行人就有超級使用者的許可權了,這樣的話,其實是不太安全的,因此不要輕易這麼來設定這一位。

下面來說一說sgid,這一位和suid是類似的,當檔案執行的時候,檔案執行者就具有檔案所屬組的許可權了。

我們繼續來討論一下這些位的簡單使用。

1.粘滯位的應用:

說明:粘滯位只對檔案有效,而且只能使用與檔案其他使用者的最後乙個x位的修改,也就是說只能進行chmod o+t或者chmod o-t這樣的操作(這一點不太確定,但我認為是正確的)。如果檔案的其他使用者沒有x許可權,那麼進行chmod o+t的話,最後一位就變成了t,而不是t。

2.suid位的應用:

/home/sunny/test# gcc fan.c -o fan.out

/home/sunny/test# ls -l

-r-- 1 root root 45 2011-07-08 21:29 fan.c

/home/sunny/test# chmod u+s fan.out

/home/sunny/test# chmod u+s fan.c

/home/sunny/test# ls -l

-r-- 1 root root 45 2011-07-08 21:29 fan.c

/home/sunny/test# exit

/test]67$ whoami

/test]68$ ls -l

-r-- 1 root root 45 2011-07-08 21:29 fan.c

/test]69$ .

/fan.out

/test]70$

說明:首先,我切換到了root使用者下,建立了乙個fan.c檔案(內容為hello world程式),然後編譯生成了fan.out檔案。並將這兩個檔案的suid位進行了設定。退出root使用者,執行fan.out檔案,結果正確執行(其實/usr/bin/passwd也就是樣的)。這個suid位只對檔案有效,並且只修改檔案的所有者的許可權,關於小s和大s(s和s)的區別就是,當檔案所有者開始有x許可權時,執行chmod u+x之後就會成為小s,否則就是大s。

3.sgid的應用:

相信弄懂了suid的人,對這個也是能夠理解的。sgid只針對使用者組和目錄適用。但是當我在測試的時候,發現了乙個問題驚人的問題:用root建立的乙個空目錄,居然用普通使用者就可以刪除了。經過研究,發現原來是ubuntu搞的鬼,因為我用的是ubuntu,而ubuntu為了方便使用者,故意這麼設定的。呵呵,這個可不是我的錯了。有關sgid的測試以後補上來。

小結:如果本來在x位上設定了x的時候,設定這些位將會顯示小寫的(s,s,t),否則會顯示為大寫的(s,s,t)。這三位如果轉化為8進製表示的話,分別對應的是4(suid),2(sgid),1(sticky bit),0(什麼也不是),這樣的話,就解決了我開始的疑問了。

4000:set uid on execution

2000:set gid on execution

1000:set sticky bit

0 給主人留下些什麼吧!~~

Linux下的粘滯位詳解

1.產生粘滯位的原因 linux下有乙個用於存放臨時檔案的目錄 temp,每乙個使用者產生的臨時檔案都存放在 temp目錄下面,而且每個使用者都對於這些檔案具有寫許可權,為了防止使用者對於除自己外的其他使用者的檔案進行刪除操作,所以產生了粘滯位。2.什麼是粘滯位 上圖所示的t就是所謂的粘滯位 對於許...

什麼是Linux下的粘滯位

一 linux下的檔案許可權 在linux下每乙個檔案和目錄都有自己的訪問許可權,訪問許可權確定了使用者能否訪問檔案或者目錄和怎樣進行訪問。最為我們熟知的乙個檔案或目錄可能擁有三種許可權,分別是讀 寫 和執行操作。乙個檔案具有的三種許可權,在linux下有一種一切皆檔案的思想,所以,這裡的檔案包含普...

Linux系統下粘滯位的使用

粘滯位 stickybit 或粘著位,是unix檔案系統許可權的旗標。最常見的用法在目錄上設定粘滯位,如此一來,只有目錄內檔案的所有者或者root才可以刪除或移動該檔案,如果不為目錄設定粘滯位,任何具有該目錄寫和執行許可權的使用者都可以刪除和移動檔案。實際應用中,粘滯位一般用於 tmp目錄,以防止普...