Linux的特殊權限
1、SUID
使用場合:當你需要讓一個普通使用者在執行某個指令或者檔案擁有root權限的時候,可以給這個檔案或者指令添加SUID權限(S權限),使普通使用者在執行檔案或者指令的過程的權限得到提升。如果不采用SUID這個方式,就需要開通檔案屬組或者所屬組權限才能達到效果。
功能:程式在運作的過程中從執行者變成程式的所有者
限定:隻能對二進制可執行程式設定,對目錄設定無效。
系統指令具體說明:
密碼檔案的權限如下:
[[email protected] ~]# ll /etc/passwd
-rw-r–r-- 1 root root 2280 Mar 26 22:53 /etc/passwd
[[email protected] ~]# ll /etc/shadow
---------- 1 root root 1366 Mar 26 21:37 /etc/shadow
通過上面的兩個檔案可以看到,普通使用者對這兩個檔案沒有權限,那麼為什麼普通使用者在修改自己密碼的時候,可以修改成功哪?
[[email protected] ~]# which passwd
/usr/bin/passwd
[[email protected] ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
可以看到passwd這個指令的所有者權限有一個S權限,就是SUID,增加了SUID權限後,那麼普通使用者在執行passwd這個指令時,會提升為passwd這個指令的所有者。
舉例說明:
less 指令在普通使用者下無法檢視/etc/passwd,我們可以給less指令增加SUID權限
[[email protected] ~]# chmod u+s /usr/bin/less
[[email protected] ~]# ll /usr/bin/less
-rwsr-xr-x. 1 root root 158240 Jul 31 2015 /usr/bin/less
[[email protected] ~]# su - zx
Last login: Wed Mar 27 19:12:15 CST 2019 on pts/0
[[email protected] ~]$ less /etc/shadow
root: 6 6 6Bm96MziqkkbPzsUq$4j3imJhgEFuOKvVWHW8PApYHhgGx.F4bxcWL/1sxGykoVYkOagIvmAT3wckMqvgw8ORSrMUTztToH5NtX01ng/::0:99999:7:::
vim指令在普通使用者下無法編輯一個000權限的檔案,我們可以給vim指令增加SUID權限
[[email protected] opt]# touch a.txt
[[email protected] opt]# chmod 000 a.txt
[[email protected] opt]# ll a.txt
---------- 1 root root 0 Mar 27 19:04 a.txt
[[email protected] opt]# chmod u+s /usr/bin/vim
[[email protected] opt]# su - zx
Last login: Wed Mar 27 19:19:22 CST 2019 on pts/0
[[email protected] ~]$ vim /opt/a.txt
[[email protected] opt]# cat a.txt .
ljsldjflsdf
2、SGID
使用場合:在公司内部,有一個财務部,管理者給财務部這個目錄設定權限,一般情況下,哪個使用者建立的檔案或者目錄的所屬組都是使用者本身。我們想要新建立的檔案或者目錄,可以繼承父目錄的所屬組,就可以給目錄設定SGID權限。
功能:讓子目錄或子檔案可以繼承父目錄或者檔案的所屬組
限定:既可以對二進制執行程式設定,也可以對目錄進行設定
建立一個财務部目錄,讓下級檔案或者目錄繼承财務部的所屬組
[[email protected] opt]# mkdir caiwubu
[[email protected] opt]# ll -d caiwubu/
drwxr-xr-x 2 root root 6 Mar 27 19:33 caiwubu/
[[email protected] opt]# chmod 775 caiwubu/
[[email protected] opt]# ll -d caiwubu/
drwxrwxr-x 2 root root 6 Mar 27 19:33 caiwubu/
[[email protected] opt]# su - zx
Last login: Wed Mar 27 19:34:29 CST 2019 on pts/0
[[email protected] ~]$ touch /opt/caiwubu/a.txt
[[email protected] ~]$ ll !$
ll /opt/caiwubu/a.txt
-rw-rw-r-- 1 zx zx 0 Mar 27 19:35 /opt/caiwubu/a.txt #沒有增加SGID之前,檔案的所屬組是zx
[[email protected] ~]$ logout
[[email protected] opt]# chmod g+s caiwubu/
[[email protected] opt]# ll -d caiwubu/
drwxrwsr-x 2 root root 19 Mar 27 19:35 caiwubu/ #可以看到所屬組的權限變更為rws
[[email protected] opt]# su - zx
Last login: Wed Mar 27 19:35:42 CST 2019 on pts/0
[[email protected] ~]$ touch /opt/caiwubu/b.txt
[[email protected] ~]$ ll !$
ll /opt/caiwubu/b.txt
-rw-rw-r-- 1 zx root 0 Mar 27 19:36 /opt/caiwubu/b.txt #增加SGID之後,新建立的檔案所屬組繼承父目錄的root
3、粘滞位 sticky
使用場合:公司内部需要建立一個共有的目錄,大家可以在裡面存放檔案,但是不能随便删除别人的檔案,就可以給這個目錄設定粘滞位sticky權限。
功能:給目錄設定了粘滞位sticky權限後,除了root、目錄的建立者、檔案的所有者可以删除外,其它使用者無法删除
限定:隻針對目錄設定,檔案無法設定
建立share檔案夾,權限修改為777,給share增加粘滞位權限
[[email protected] opt]# mkdir share
[[email protected] opt]# chmod 777 share/
[[email protected] opt]# ll -d share/
drwxrwxrwx 2 root root 6 Mar 27 19:44 share/
[[email protected] opt]# chmod o+t share/
[[email protected] opt]# ll -d share/
drwxrwxrwt 2 root root 6 Mar 27 19:44 share/ #增加了粘滞位權限後,other的權限變更為rwt
[[email protected] opt]# touch share/a.txt
[[email protected] opt]# su - zx
Last login: Wed Mar 27 19:36:28 CST 2019 on pts/0
[[email protected] ~]$ touch /opt/share/b.txt #zx使用者建立一個a.txt
[[email protected] ~]$ su - harry
Password:
Last login: Tue Mar 26 21:37:54 CST 2019 on pts/2
[[email protected] ~]$ touch /opt/share/c.txt #harry使用者建立一個b.txt
[[email protected] ~]$ ll /opt/share/*.txt
-rw-r–r-- 1 root root 0 Mar 27 19:45 /opt/share/a.txt
-rw-rw-r-- 1 zx zx 0 Mar 27 19:45 /opt/share/b.txt
-rw-rw-r-- 1 harry harry 0 Mar 27 19:46 /opt/share/c.txt
[[email protected] ~]$ rm -rf /opt/share/b.txt #harry使用者删除zx使用者建立的a.txt時無法删除
rm: cannot remove ‘/opt/share/b.txt’: Operation not permitted
[[email protected] ~]$ su - zx
Password:
Last login: Wed Mar 27 19:45:27 CST 2019 on pts/0
[[email protected] ~]$ id zx
uid=1000(zx) gid=1000(zx) groups=1000(zx),0(root) #zx使用者屬于root組内
[[email protected] ~]$ rm -rf /opt/share/c.txt #同樣也無法删除harry使用者建立的c.txt
rm: cannot remove ‘/opt/share/c.txt’: Operation not permitted
[[email protected] zx]$ mkdir /opt/share/harry
[[email protected] zx]$ su zx
Password:
[[email protected] ~]$ rm -rf /opt/share/harry/ #zx使用者無法删除harry使用者建立的目錄
rm: cannot remove ‘/opt/share/harry/’: Operation not permitted
總結:增加了粘滞位權限的目錄,隻有root使用者、目錄建立者、檔案所有者才可以删除檔案。
4、擴充權限ACL
使用場合:需要在不修改檔案或目錄所有者和所屬組的基礎上,增加相關權限
參數:
-m 增加修改權限
-x 減少某個權限
-b 去掉所有權限
用root使用者建立一個a.txt,增加zx使用者的rwx的擴充權限
[[email protected] opt]# touch a.txt
[[email protected] opt]# ll a.txt
-rw-r–r-- 1 root root 0 Mar 27 20:00 a.txt
[[email protected] opt]# su - zx
Last login: Wed Mar 27 19:54:11 CST 2019 on pts/0
[[email protected] ~]$ echo aa > /opt/a.txt #沒增加rwx權限之前,無法寫入
-bash: /opt/a.txt: Permission denied
[[email protected] ~]$ logout
[[email protected] opt]# getfacl a.txt
#file: a.txt
#owner: root
#group: root
user::rw-
group::r–
other::r–
[[email protected] opt]# setfacl -m u:zx:rwx a.txt
[[email protected] opt]# getfacl a.txt #增加rwx之後,可以看到多一個user:zx:rwx選項
#file: a.txt
#owner: root
#group: root
user::rw-
user:zx:rwx
group::r–
mask::rwx
other::r–
[[email protected] opt]# su - zx
Last login: Wed Mar 27 20:01:37 CST 2019 on pts/0
[[email protected] ~]$ echo aa > /opt/a.txt #可以給a.txt增加内容
[[email protected] ~]$ cat /opt/a.txt
aa