11.08.2011

SUID, SGID, SBIT (II)

自己覺得BLOG的文章,應該要精簡一點,不用太冗長,畢竟不是在寫PAPER或是企劃書,所以就把這個主題拆成兩部份來寫。

接續前一篇文章,已知如何查看檔案的基本屬性和SUID了。接著繼續介紹SGIDSBIT

◎ SGID (Set Group ID)

Set GID的用意:
1. SUID只能夠針對Binary File;SGID除了針對檔案之外,還能夠針對目錄
2. 使用者在目錄下的有效群組,即為該目錄群組。這句話的意思是:即該群組的使用者在該目錄下所建立的檔案,即該目錄群組

第二點講的文謅謅的,直接舉例會比較容易理解。

mkdir -p /TEMP/; ls -ld /TEMP/



我們直接設定SGID,一樣有兩種方式:

chmod g+s /TEMP/;
或者是:
chmod 2755 /TEMP/;

我們把/TEMP/這個資料夾的群組,改成picasso;然後進到該資料夾,建立一個叫TEST.TXT的檔案:

chgrp picasso /TEMP/; ls -ld /TEMP/



cd /TEMP/; touch ./TEST.TXT; ls -l



由上圖可知,以管理者root的權限,進入到SGID過的資料夾/TEMP/,所建立的檔案,其群組即為picasso。

我們再細看這個檔案,使用者root的權限為rw-,表可讀寫;群組picasso的權限為r--,表僅可讀取。

所以,我們以root的身份去修改TEST.TXT這個檔案;然後再以picasso群組的成員-picasso去檢視這個檔案。

假如picasso可以檢視這個檔案,代表SGID這個資料夾成功!!



◎ SBIT (Sticky Bit)

終於提到最後一個了─SBIT!!

SUID只能針對Binary File,無法針對目錄;
SGID除了針對一般檔案之外,亦能夠針對目錄;
SBIT只能夠針對目錄,無法用在一般檔案。

mkdir -p /TEMP/; chmod 777 /TEMP/; ls -ld /TEMP/

chmod o+t /TEMP/; ls -ld /TEMP/

id ally

su - ally

cd /TEMP/; touch ./MIS.TXT; echo "Ally test." > ./MIS.TXT; ls -l ./MIS.TXT; cat -n ./MIS.TXT

exit

id jasmine

su - jasmine

cd /TEMP/; echo "Jasmine appended." >> ./MIS.TXT; cat -n ./MIS.TXT



由上圖的範例可知,我們建立一個資料夾/TEMP/,其權限為777,表擁有者、所屬群組和其它的使用者均有讀取、寫入和執行的權限。

我們再把/TEMP/資料夾設定SBIT,以Ally的身份來新增檔案;再以Jasmine的身份去修改檔案。會發現權限不符而被拒決了。表示/TEMP/資料夾設定SBIT成功!!

最後,再補充一點:無論是SUID、SGID或SBIT,我們看到的都是小寫的s小寫的t,如下圖:



倘若,User、Group和Others連執行的權限都沒有,我們還強制設定SUID、SGID和SBIT,會發生什麼狀況??



都變成大寫的S大寫的T了!!

相關文章:SUID, SGID, SBIT (II)

沒有留言:

張貼留言