天天看點

Linux的特殊權限和ACL權限詳解

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

繼續閱讀