天天看點

特殊權限-SUID,SGID,Stick講解

SUID :

運作某程式時,相應程序的屬主是程式檔案自身的屬主,而不是啟動者

​ chmod u+s FILENAME (添加 SUID 權限) chmod u-s FILENAME (除去

SUID 權限)

​ 如果 FILE 本身原來就有執行權限,則 SUID 顯示為 s ; 否則顯示 S;

​ passwd 指令預設具有 SUID 權限

SGID :

運作某程式時,相應程序的屬組是程式檔案自身的屬組,而不是啟動者

​ (目錄有SGID權限後,在該目錄下建立檔案目錄時,建立後的屬組為目錄自身的屬組,)

​ chmod g+s FILENAME (添加 SGID 權限) chmod g-s FILENAME (除去 SGID

權限)

Sticky :

在一個公共目錄,每個使用者都可以建立檔案,删除自己的檔案,但不能删除别人的檔案

​ chmod o+t DIR (添加 Sticky 權限) chmod o-t DIR (删除 Sticky 權限)

權限表示 SUID : 4 SGID : 2 Sticky : 1

​ chmod 1755 /tmp/test #test具有 755 權限 ( 1 : 具有 Sticky 權限 )

​ chmod 3755 /tmp/test #test具有 755 權限 ( 2 : 具有 SGID 權限 + 1 : 具有

Sticky 權限 )

​ chmod 5755 /tmp/test #test具有 755 權限 ( 4 : 具有 SUID 權限 + 1 : 具有

Sticky 權限 )

SUID : 執行個體測試 讓一個普通使用者對指定檔案具有原本沒有的檢視權限 (user1使用者可以檢視 /etc/shadow 檔案)

[[email protected] ~]# useradd user1            '添加使用者 user1'
[[email protected] ~]# passwd user1
[[email protected] ~]# ls -l /etc/shadow         '檢視 /etc/shadow 檔案, 權限為000 , 是以除 root 使用者都不能檢視'
----------. 1 root root 1053 7月   3 09:54 /etc/shadow
[[email protected] ~]# su - user1               '切換到 user1 使用者, 應為 /etc/'
[[email protected] ~]$ cat /etc/shadow         'user1使用者 沒有權限檢視'
cat: /etc/shadow: 權限不夠
[[email protected] ~]# chmod u+s /bin/cat   '将 /bin/cat 指令添加 SUID 指令,則 cat 指令的執行者為檔案自身的屬主,而不是啟動者'
[[email protected] ~]# ls -l /bin/cat       'SUID指令添加成功 (若 /bin/cat 本身就有執行權限,添加 SUID 指令後,顯示為 s 否則為 S)'
-rwsr-xr-x. 1 root root 48568 10月 15 2014 /bin/cat
[[email protected] ~]$ cat /etc/shadow     'user1 可以檢視'
bin:*:15980:0:99999:7:::
daemon:*:15980:0:99999:7:::
           

SGID : 執行個體測試 三個使用者可以在同一目錄中,建立檔案目錄,并互相修改檔案内容

[[email protected] ~]$ tail -5 /etc/passwd      '目前系統中有三個使用者'
user1:x:500:500::/home/user1:/bin/bash
hbase:x:501:501::/home/hbase:/bin/bash
hadoop:x:502:502::/home/hadoop:/bin/bash  
[[email protected] tmp]# mkdir project            '在 /tmp 目錄中建立新目錄 /project'
[[email protected] tmp]# groupadd developteam     '添加 developteam 使用者組'
[[email protected] tmp]# chown -R :developteam /tmp/project      '将 /tmp/project 目錄的屬組改為 developteam'
[[email protected] tmp]# ls -ld project
drwxr-xr-x. 2 root developteam 4096 7月   9 02:15 project
[[email protected] tmp]# usermod -a -G developteam user1    '分别将三個使用者的附加組改為 developteam'
[[email protected] tmp]# usermod -a -G developteam hadoop
[[email protected] tmp]# usermod -a -G developteam hbase
[[email protected] project]# ls -ld     '檢視 project 目錄的權限,屬組沒有寫權限,則添加
drwxr-xr-x. 2 root developteam 4096 7月   9 02:15'
[[email protected] project]# chmod g+w /tmp/project   
[[email protected] project]# ls -ld
drwxrwxr-x. 2 root developteam 4096 7月   9 02:15 .
[[email protected] project]# ll #分别用三個賬号在 /tmp/project 目錄中建立檔案( a.* ),沒有權限編輯其他人的檔案
-rw-rw-r--. 1 hadoop hadoop 0 7月   9 02:33 a.hadoop
-rw-rw-r--. 1 hbase  hbase  0 7月   9 02:34 a.hbase
-rw-rw-r--. 1 user1  user1  0 7月   9 02:33 a.user1
[[email protected] ~]# chmod g+s /tmp/project  '給/tmp/project 目錄添加 SGID 權限'
[[email protected] ~]# ls -ld /tmp/project
drwxrwsr-x. 2 root developteam 4096 7月   9 02:34 /tmp/project
[[email protected] project]# ll               '添加 SGID 權限後,用三個使用者分别在 /tmp/project 目錄下建立檔案 ( b.* )'
總用量 0
-rw-rw-r--. 1 hadoop hadoop      0 7月   9 02:33 a.hadoop
-rw-rw-r--. 1 hbase  hbase       0 7月   9 02:34 a.hbase
-rw-rw-r--. 1 user1  user1       0 7月   9 02:33 a.user1
-rw-rw-r--. 1 hadoop developteam 0 7月   9 02:37 b.hadoop
-rw-rw-r--. 1 hbase  developteam 0 7月   9 02:37 b.hbase
-rw-rw-r--. 1 user1  developteam 0 7月   9 02:37 b.user1
           

三個使用者建立的檔案,屬組均為developteam,故可以互相編輯删除對方檔案

Sticky : 執行個體測試 同一目錄下使用者可以建立檔案并互相修改,但不能删除對方的檔案

[[email protected] project]# chmod o+t /tmp/project   '給 /tmp/project 添加 Sticky 權限,(原有執行權限 t , 否則 T)'
[[email protected] project]# ls -ld
drwxrwsr-t. 2 root developteam 4096 7月   9 02:42 .
[[email protected] project]$ rm -rf a.hbase         '用 hadoop 使用者身份去删除 hbase 使用者的檔案,删除失敗(隻能删除自己的檔案目錄)'
rm: 無法删除"a.hbase": 不允許的操作
           

今天就到這吧~

繼續閱讀