特殊權限
SUID:運行某程序時,相應進程的屬主是程序文件自身的屬主,而不是啓動用戶。
SGID:運行某程序時,相應進程的屬組是程序文件自身的屬組,而不是啓動用戶所屬的基本組。
Sticky:在一個公共目錄,每個用戶都可以創建文件,能刪除自己的文件,但不能刪除別人的文件
修改文件的特殊權限
chmod u+s FILE:給文件添加SUID權限
chmod u-s FILE:給文件刪除SUID權限
chmod g+s FILE:給文件添加SGID權限
chmod g-s FILE:給文件刪除SGID權限
chmod o+t DIR:給目錄增加Sticky權限
chmod o-t DIR:給目錄刪除Sticky權限
例子:
chmod 1755 /back/test:帶Sticky權限的755文件
chmod 2755 /back/test:帶SGID權限的755文件
chmod 3755 /back/test:帶Sticky和SGID權限的755文件
chmod 4755 /back/test:帶SGID和SUID權限的755文件
chmod 5755 /back/test:帶Sticky和SUID權限的755文件
chmod 6755 /back/test:帶Sticky和SUID以及SGID權限的755文件
因此umask的0022中第一位0就代表的是特殊權限。
練習:創建一個目錄,讓user01,user02,user03都有寫的權限,並且都可以編輯另外的用戶創建的文件,但是不可刪除別人創建的文件。
[root@liang-study ~]# mkdir /home/project #創建公用目錄 [root@liang-study ~]# useradd user01 #創建用戶 [root@liang-study ~]# useradd user02 [root@liang-study ~]# useradd user03 [root@liang-study ~]# groupadd mygroup #創建附加組 [root@liang-study ~]# usermod -a -G mygroup user01 #將用戶添加至附加組 [root@liang-study ~]# usermod -a -G mygroup user02 [root@liang-study ~]# usermod -a -G mygroup user03 [root@liang-study ~]# id user01 #驗證添加是否成功 uid=5001(user01) gid=5001(user01) groups=5001(user01),5004(mygroup) [root@liang-study ~]# chown :mygroup /home/project/ #修改目錄所屬組爲附加組 [root@liang-study home]# chmod g+s /home/project/ #給公用目錄添加SGID權限 [user02@liang-study project]$ ll #使用user01-03創建的文件的屬組就是目錄的所屬組mygroup total 4 -rw-rw-r-- 1 user01 mygroup 22 Dec 22 11:26 user01.txt -rw-rw-r-- 1 user02 mygroup 0 Dec 22 11:26 user02.txt #此時,user01登錄此目錄就可以修改其他文件,也可以刪除。 [root@liang-study project]# chmod o+t /home/project/ -R #添加sticky權限 [root@liang-study home]# ls -ld /home/project/ drwxrwsr-t 2 root mygroup 4096 Dec 22 11:26 /home/project/ #至此,完成實驗
FACL:File System Access Control List
利用文件擴展屬性保存額外的訪問控制權限,ACL爲現有權限機制的延伸,在現有機制的三個基本設定(owner、group、other)的基礎上加入了對某指定使用者或羣組的存取權限設定。
FACL可以對某個文件設置該文件具體的某些用戶的權限,意思就是通過FACL可以對一個文件權限做擴展,可以不同的用戶對某個文件有不同的權限。如讓tom用戶對jerry創建的文件有讀寫權限。
setfacl
-m:設置額外訪問控制列表
u:uid:perm FILE 設定指定用戶對FILE有指定權限
d:uid:perm DIR 設定指定用戶對目錄的指定權限,默認在此目錄創建的文件都會繼承FACL
g:gid:perm FILE 設定指定組對FILE有指定權限
例:setfacl -m u:hoodop:rw /tmp/test.txt 添加hoodop用戶對test.txt擁有讀寫權限。
-x:取消額外訪問控制列表
--mask:設置默認mask權限
getfacl FILE:獲取facl權限
添加facl權限後的權限應用順序
owner-->facl中的user-->Group-->facl中的group-->Other