特殊權限:
SUID:運作某程式時,相應程序的屬主是檔案本身,而不是啟動者
chmod u+s FILE
chmod u-s FILE
如果FILE本身具有執行權限,則顯示為s,否則顯示為S
SGID:運作某程式時,相應程序的屬組是檔案本身,而不是啟動者
chmod g+s FILE
chmod g-s FILE
如果FILE屬組具有執行權限,則顯示為s,否則顯示為S
Sticky:在一個公共目錄,每個都可以建立檔案,删除自己的檔案,但是不能删除别人的檔案
chmod o+t FILE
chmod o-t FILE
如果FILE其他權限具有執行權限,則顯示為t,否則顯示為T
suid粗略解釋:當使用者登入linux時,作業系統會啟用一個使用者程序,當這個使用者去啟動一個指令的時候,作業系統會對比其權限,如果通過,則啟動這個指令的程序,當沒有設定suid的時候,這個指令的程序的屬主預設為啟動着使用者,而當設定了suid以後,這個程序的屬主屬于指令本身的屬主。
suid用途舉例:
如passwd指令,我們知道/etc/passwd隻有root有寫權限,但是普通使用者也可以通過passwd指令修改自己的密碼,這是因為,passwd指令被設定了suid,當使用者執行passwd指令的時候,程序以passwd屬主root的身份修改/etc/passwd檔案。
當一個檔案被設定了suid的時候,它的屬主權限如果具有執行權限,那麼它的x位會顯示為s,如果沒有則顯示為S,如:
[root@logstash ~]# ls -al /usr/bin/passwd
-rwsr-xr-x. 1 root root 25980 Feb 22 2012 /usr/bin/passwd
[root@logstash ~]# ls -alh /etc/passwd
-rw-r--r-- 1 root root 1.9K Jan 14 10:16 /etc/passwd
sgid用途舉例:
假設/tmp/test為公共目錄,我們希望使用者tom和使用者jerry都能編輯修改裡面的内容,但是又希望其他人不能修改。這種情況我們可以把tom和jerry加入/tmp/test的屬主來解決,但是這個有個問題,tom和jerry在裡面建立的檔案,屬主和屬組都會是自己和自己的基本組,也就是說tom和jerry不能互相通路修改對方自己建立的檔案,當我們希望這麼做的時候,我們就可以用到gid,下面是具體示範過程:
[root@logstash ~]# groupadd test
[root@logstash ~]# mkdir /tmp/test
[root@logstash ~]# chown -R root:test /tmp/test
[root@logstash ~]# ls -ald /tmp/test
drwxr-xr-x 2 root test 4096 Jan 20 14:10 /tmp/test
[root@logstash ~]# chmod g+w /tmp/test
[root@logstash ~]# ls -ald /tmp/test
drwxrwxr-x 2 root test 4096 Jan 20 14:10 /tmp/test
[root@logstash /]# usermod -a -G test tom
[root@logstash /]# usermod -a -G test jerry
[tom@logstash ~]$ cd /tmp/test
[tom@logstash test]$ touch a
[tom@logstash test]$ ls -al a
-rw-rw-r-- 1 tom tom 0 Jan 20 14:22 a
[jerry@logstash ~]$ cd /tmp/test
[jerry@logstash test]$ touch b
[jerry@logstash test]$ ls -alh
total 8.0K
drwxrwxr-x 2 root test 4.0K Jan 20 14:23 .
drwxrwxrwt. 4 root root 4.0K Jan 20 14:20 ..
-rw-rw-r-- 1 tom tom 0 Jan 20 14:22 a
-rw-rw-r-- 1 jerry jerry 0 Jan 20 14:23 b
[root@logstash ~]# chmod g+s /tmp/test
[root@logstash ~]# su - jerry
[jerry@logstash ~]$ cd /tmp/test
[jerry@logstash test]$ touch c
drwxrwsr-x 2 root test 4.0K Jan 20 14:29 .
-rw-rw-r-- 1 jerry test 0 Jan 20 14:29 c
Sticky用途示例:
承上個例子,目前情況,在/tmp/test下,tom和jerry是可以互相删對方檔案的,這是想當不友好的,這個時候我們可以借用sticky位。
[tom@logstash test]$ ls -l
total 0
-rw-rw-r-- 1 tom test 0 Jan 20 14:42 a
-rw-rw-r-- 1 tom test 0 Jan 20 14:42 b
-rw-rw-r-- 1 jerry test 0 Jan 20 14:29 c
[tom@logstash test]$ rm c
-rw-rw-r-- 1 tom test 0 Jan 20 14:42 a
-rw-rw-r-- 1 tom test 0 Jan 20 14:42 b
[root@logstash test]# chmod o+t /tmp/test
[root@logstash test]# su - jerry
[jerry@logstash test]$ ls -l
-rw-rw-r-- 1 tom test 0 Jan 20 14:44 a
-rw-rw-r-- 1 tom test 0 Jan 20 14:42 b
[jerry@logstash test]$ rm a
rm: cannot remove `a': Operation not permitted
把suid、guid、sticky跟類似rwx組合
000:
001:設定了sticky位
010:guid
011:
100:suid
101:
110:
111:
chmod 5755 /backup/test 則test權限為 rwsr-xr-t
本文轉自biao007h51CTO部落格,原文連結:http://blog.51cto.com/linzb/1736495 ,如需轉載請自行聯系原作者