和ctrl討論linux系統上s,t許可權位的問題,頗有感觸,總結如下
關於Linux系統中檔案或目錄的s、t許可權位的說明
[root@localhost /]# ls -l /bin/bash
-rwxr-xr-x 1 root root 626028 2003-02-11 /bin/bash
-----------------------------------------------------------------------------------
[root@localhost /]# chmod u+s /bin/bash
[root@localhost /]# ls -l /bin/bash
-rwsr-xr-x 1 root root 626028 2003-02-11 /bin/bash
s位的說明:
如上圖所示:
一般來說,一個執行中的程式為執行這個程式的使用者所擁有。 但如果該程式是suid/guid程式,則執行的程式則為檔案所有者擁有,執行中的程式在程式執行期間擁有檔案所有者的全部許可權。 如果一個普通使用者執行了一個屬於根使用者的帶s標誌的程式,那麼,該程式將不考慮使用者許可權,而是自動擁有在系統中讀/寫任何檔案及目錄的特權。
這樣做,有一定的好處,但一般我們不建議採用s位,要嚴格設定這種許可權,避免破壞性。
比如:若你的suid程式是/bin/bash的話,則會導致嚴重後果,一個普通使用者若在某個短時間取得過root許可權,他就能設定一個suid程式/binb/bash來取得根特權。 (若拿它來破壞別人的系統,後果自負)
# cp /bin/bash /home/jephe/.backdoor
# chmod 4755 /home/jephe/.backdoor
這樣當攻擊者執行了/home/jephe/.backdoor後就得到了根特權,可用id命令顯示suid=0
t位的說明:
t位就比較好理解了。如下圖所示:
[root@localhost root]# ls -l 4444.jpg
-rw-r--r-- 1 root root 550349 3?? 14 14:31 4444.jpg
[root@localhost root]# chmod o+t 4444.jpg
[root@localhost root]# ls -l 4444.jpg
-rw-r--r-T 1 root root 550349 3?? 14 14:31 4444.jpg
程式的t屬性表示粘著位,即告訴系統在程式完成後在記憶體中儲存一份執行程式的備份,如該程式常用,可為系統 節省點時間,不用每次從磁碟載入到記憶體。由本人註明:是儲存在虛擬記憶體中,而不是實體記憶體中。
目錄的t屬性,設定了目錄的T屬性後1000,由只有該目錄的所有者及root才能刪除該目錄,
如/tmp目錄就是drwxrwxrwt
記住,記住,呵呵。
lhdz_bj:
好,很精深的問題。美中不足的是,T粘著位的介紹少了點,再清楚點就好了,呵。。。
主人回覆:
哈,多謝老大哥捧場。 t位的說明就那點意思啊,呵呵。若有不太清楚的地方,您說~,我知無不言,言無不盡。
lhdz_bj:
首先,你說的很清楚了,可我覺得S和T許可權位,似乎都和安全能扯上關係,S位對安全的影響你說的很清楚很詳細了,T位雖然說清楚了,但沒涉及到安全的問題,能否說點T位和安全的具體關係呢?不過,首先宣告,我對LINUX研究肯定沒老弟深入,就是再7、8年前看過一點,還看過一本有關安全的書,都講到了S、T位和安全的關係,現在也忘記的差不多了,呵,多賜教啊。
主人回覆:
據目前所看到的資料而言,t位好像確實沒有安全方面的關係。它的作用應該就是~可以使帶有t位的程式在執行結束以後,不會退出記憶體,而是將這個程式保留在虛擬記憶體當中。這樣,當再次執行這個程式的時候,就不再需要從磁碟中重新讀取調入記憶體了,加快了程式的執行速度。好像就是這個作用:)
lhdz_bj:
我剛才查了一下,是這個意思,其實你剛才最後一句有這個意思:
要刪除一個檔案,你不一定要有這個檔案的寫許可權,但你一定要有這個檔案的上級目錄的寫許可權。也就是說,你即使沒有一個檔案的寫許可權,但你有這個檔案的上級目錄的寫許可權,你也可以把這個檔案給刪除,而如果沒有一個目錄的寫許可權,也就不能在這個目錄下建立檔案。
如何才能使一個目錄既可以讓任何使用者寫入檔案,又不讓使用者刪除這個目錄下他人的檔案,sticky就是能起到這個作用。sticky一般只用在目錄上,用在檔案上起不到什麼作用。
在一個目錄上設了sticky位後,(如/tmp,許可權為1777)所有的使用者都可以在這個目錄下建立檔案,但只能刪除自己建立的檔案,這就對所有使用者能寫的目錄下的使用者檔案啟到了保護的作用。
至於,sticky bit是否如你所說,可以使程式執行後儲存在記憶體的交換區中,你是參考的什麼資料,我一直沒看到相應的資料。
主人回覆:
可以建立自己的檔案,刪除自己的檔案,但就是不能刪除別人的檔案。嗯,學到!! 檔案也可以設定t位,它不僅可以設定t位(chmod 1777 myfie),而且,也可以設定T位(chmod o+t myfile)。t和T之間的區別我還沒有搞清楚。 程式的t位,參考地址:http://blog.chinaunix.net/u2/63316/showart_495911.html
lhdz_bj:
查了些資料,都是些互相抄錄的東西,總結如下:
1.目錄設定STICKY BIT後,即使使用者擁有該目錄的寫許可權,目錄下的檔案也只能由屬主和 ROOT才能刪除,使用者不能刪除該目錄下的其他使用者的檔案。
2.檔案設定了STICKY BIT後,即使其他使用者擁有對該檔案的寫許可權,也不能刪除該檔案,只能由該檔案的屬主刪除。當然,也有檔案設定該sticky bit位後,程式執行後要再記憶體中保留影像的說法,也可能會有這種功能,但現在用的不是很多,有待驗證,至於程式留在系統交換區的說法,我覺得有待商榷,因為系統交換區是再硬碟上的,放在交換區和用到該程式時重新從盤上讀,能快多少呢?
3.關於t和T,是這樣的,當設定STICKY BIT位後,當用ls -al命令列目錄或檔案許可權時,如果目錄或檔案的的STICKY BIT位原來有x許可權,就顯示t,如果原來沒有x許可權,就顯示T,因為顯示時sticky bit位要佔用x位的。
共勉。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8484829/viewspace-478111/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux 檔案許可權 s 許可權和 t 許可權解析Linux
- linux特殊許可權s和tLinux
- 第十篇:Linux中許可權的再討論( 上 )Linux
- 基於角色的許可權系統的問題
- Android系統許可權和root許可權Android
- Linux 特殊許可權a,i,t,s以及查詢帶有特殊許可權的所有檔案Linux
- 總結sysdba和sysoper許可權
- 各位高手,問下許可權上的問題
- 關於jdon裡許可權系統的問題
- Linux 檔案許可權總結Linux
- Oracle的物件許可權、角色許可權、系統許可權Oracle物件
- 許可權系統設計--概論
- [技術討論]資料許可權中的理論和實際
- 深入討論通用許可權元件的理論和設計實現。元件
- 第十一篇:Linux中許可權的再討論( 下 )Linux
- linux檔案許可權問題Linux
- Guest許可權突破——許可權提升方法總結(轉)
- 系統許可權傳遞和物件許可權傳遞的測試物件
- 關於系統許可權的設計-位操作
- laravel 事件系統 問題討論Laravel事件
- 許可權維持專題:作業系統許可權維持作業系統
- 解決從linux本地檔案系統上傳檔案到HDFS時的許可權問題Linux
- MySQL許可權問題MySql
- Linux系統中檔案許可權ACL功能(上)。薦Linux
- oracle的許可權管理的總結Oracle
- mongodb 的許可權系統MongoDB
- 角色許可權(Role)和系統許可權(System)的幾個澄清實驗
- 上傳APP到Google Play許可權問題APPGo
- vivo系統無許可權開啟懸浮框的問題
- 許可權系統設計的理論基礎--RBAC
- moderator permission的許可權問題
- postgresql關於許可權的總結SQL
- 列許可權的一點總結!
- 許可權系統:一文搞懂功能許可權、資料許可權
- Linux的檔案存取許可權和0644許可權Linux
- Linux系統命令許可權搜尋等練習題Linux
- MySQL許可權系統MySql
- Oracle系統許可權Oracle