這一次要介紹的主題,分三個,但觀念都很類似,所以就放在一起寫好了!!
但前提是,先瞭解一下檔案的屬性,我們先拷貝一個無關痛養的檔案來當作範例:
cat -n /etc/issue
cp -vf /etc/issue /root/
ls -l /root/issue
當我們執行ls的時後,就可以看到/root/issue這個檔案的一些基本屬性。
由上圖可知,檔案的基本屬性,總共有11碼:-rw-r--r--.。但我們的重點是在中間的九碼。
rw-: 第2到4碼,指的是這個檔案使用者 (User)的權限。r代表Read (可以讀取);w代表Write (可以寫入);x代表Executable (可以執行);-代表無法執行。
r--: 第5到7碼,指的是這個檔案的所屬群組 (Group)的權限。這裡所表示的是:這個檔案的所屬群組只能夠讀取。
r--: 第8到10碼,指的是其它的使用者 (Others)對這個檔案的權限。
簡介完檔案屬性之後,就要講一些進階一點的東西,也就是接下來要講的主題。
◎ SUID (Set User ID)
Set UID是幹嘛的?? 讓這支程式的執行者,在執行時 (Run-Time)等同擁有者的權限;且只能針對Binary File,無法針對目錄。
有一支程式剛好可以解釋這個範例─passwd
which passwd
ls -l /usr/bin/passwd
由上圖可知,passwd這支程式的擁有者是root;可是當我們為一般使用者時,依然可以執行這支程式 (因為每個使用者都可以重新定義自己的密碼):
passwd擁有者的第三個欄位為小寫的s,表示這個Binary File被Set過UID了。
那麼該如何設定一個檔案的SUID呢?? 再回到一開始那個無關痛養的檔案;有兩種方式:
chmod u+s /root/issue; ls -l /root/issue
既然要讓這支程式的執行者,在執行時等同擁有者的權限,所以意味著這個檔案的使用者本身要能夠執行 (所以我必須要讓issue這個檔案的第4個欄位為x):
如此,這個檔案就已經Set過UID了。我們除了使用chmod u+s的方法之外,也能透過數字表示法來設定,原本的權限為744,我們還可以這樣執行:
chmod 4744 /root/issue
也可以得到同樣的結果。
(To be continue....)
沒有留言:
張貼留言