|
|
|
|
|
特殊權限的設定
除了一般的 rwx 權限外,還有下列三種特殊權限
Step 0:前言
Step 1: SUID(Set user ID)
Step 2: SGID (Set Group ID)
Step3 :sTick(Set stick)
Step 0:前言
若要加上特殊權限,則要使用第四個數字來表示
- SUID (Set user ID) : 4 --->檔案的執行,會自動轉換成檔案所有人的身分執行.
- SGID (Set group ID) : 2 ---> 和Setuid相同,不過這是會自動轉換成 Group 的身份來執行.
除了可以針對檔案做設定外,還可以對目錄設 SGID.之後目錄下所建立的檔案 Group會變的和目錄相同.
- sTicky (t) : 1 --->只有擁有者有權限去刪除,搬移自己建立的檔案.
因為特殊權限和可執行(x)共用同一個位置,所以加上特殊權限時會有大小寫的分別,小寫 s,t 代表有特殊權限再加上可執行(x)的權限,大寫S,T 代表只有特別權限.為惟護系統安全,Linux 系統不理會 script 檔案的 SUID,GUID
Step 1: SUID(Set user ID)
ex: . SUID 測試
讓 cat 程式帶有 root 的身份去執行, root 登入,建立一個檔 test.txt ,並改變權限為 600(只有 root 能讀寫)
| [root@benjr ~]# echo "ABCDEF" > test.txt [root@benjr ~]# chmod 600 test.txt |
此時除了 root 帳號本身外其他人沒有權限去看檔案內容
| [root@benjr ~]# su - user1 passwd: [root@benjr ~]# cat test.txt cat:test.txt: Permission denied |
讓 cat 程式帶有 root 的權限去開啟檔案
| [root@benjr ~]# su - passwd |
| [root@benjr ~]# ll /bin/cat -rwxr-xr-x 1 root root 20790 Mar 23 2002 /bin/cat |
| [root@benjr ~]# chmod 4755 /bin/cat [root@benjr ~]# ll /bin/cat -rwsr-xr-x 1 root root 20790 Mar 23 2002 /bin/cat |
此時其他人就可以用 cat 來看 test.txt 檔案
| [root@benjr ~]# su - user1 passwd: [root@benjr ~]# cat test.txt ABCDEF |
Step 2: SGID (Set Group ID)
ex.目錄的 SGID 測試
| [root@benjr ~]# vi /etc/group . www:x:503:user1,user2 |
www 是個 group , 而他的成員有 user1 , user2 . 這是我事先設定的
| [root@benjr ~]# cd /home [root@benjr ~]# mkdir www [root@benjr ~]# chmod g+w www [root@benjr ~]# chown .www www [root@benjr ~]# chmod g+s www [root@benjr ~]# ll drwxrwsr-x 2 root www 4096 Nov 23 00:47 www |
在 /home 目錄下建一個 www 的目錄 , 必將權限設定為 group 有權限讀,寫,執行,並設定 SGID.
| [root@benjr ~]# su user1 [root@benjr ~]# touch t1 |
切換成 user1 ,建立一個檔叫 t1
| [root@benjr ~]# su user2 [root@benjr ~]# touch t2 |
切換成 user2 ,建立一個檔叫 t2
| [root@benjr ~]# ll total 0 -rw-rw-r-- 1 user1 www 0 Nov 23 00:53 t1 -rw-rw-r-- 1 user2 www 0 Nov 23 00:54 t2 |
剛建立的檔案的 group owner ,都會變成 www
Step3 :sTick(Set stick)
ex. sTicky bit 測試
| [root@benjr ~]# ls -dl /tmp drwxrwxrwt 7 root root 4096 Nov 23 00:19 /tmp |
/tmp 目錄下就是很好的範例
| [root@benjr ~]# su user1 [root@benjr ~]# touch t1 [root@benjr ~]# chmod 777 t1 |
切換成 user1 ,建立一個檔叫 t1 ,並將權限全開
| [root@benjr ~]# su user2 [root@benjr ~]# touch t2 [root@benjr ~]# chmod 777 t2 |
切換成 user2,建立一個檔叫 t2 ,並將權限全開
| [root@benjr ~]# ll -rwxrwxrwx 1 user1 user1 0 Nov 23 00:27 t1 -rwxrwxrwx 1 user2 user2 0 Nov 23 00:29 t2 [root@benjr ~]# rm t1 rm: cannot unlink `t1': Operation not permitted |
雖然 user1 將 t1 檔案權限全開,但是 user2 還是無法將 t1 刪除.這都是因為 /tmp 目錄有設 sTick bit
| [root@benjr ~]# su [root@benjr ~]# chmod o-t /tmp [root@benjr tmp]# ll -d /tmp drwxrwxrwx 7 root root 4096 Nov 23 00:29 /tmp |
切換成 root , 並將sTick bit 移除
| [root@benjr ~]# su user2 [root@benjr ~]# rm t1 |
切換成 user2 , 發現此時可以移除檔案 t1 .
| [root@benjr ~]# su [root@benjr ~]# chmod o+t /tmp [root@benjr ~]# ll -d /tmp drwxrwxrwt 7 root root 4096 Nov 23 00:36 /tmp |
恢復sTick bit 的設定
-
- 增加新的回應
- 瀏覽次數 2303