前言:
安全
當一個用戶須要讀寫一個文件時,其文件的屬主和屬組都沒有相應的權限,若是給other讀寫權限的話,這樣全部的用戶都有了讀寫權限,此時風險比較大,不安全。這時就須要一個附加權限了。
bash
facl(文件訪問控制列表):附加原有權限模型之上另外一層權限控制機構,保存至文件擴展屬性信息中;
ide
一、getfacl命令spa
#顯示文件訪問控制列表
orm
[root@vms002 www]# whatis getfacl getfacl (1) - get file access control lists
命令語法:
遞歸
getfacl [-aceEsRLPtpndvh] file ...
例:
get
[root@vms002 www]# ls rhel.txt [root@vms002 www]# getfacl rhel.txt # file: rhel.txt # owner: root # group: root user::rw- group::r-- mask::r-- other::r--
說明:帶#號的是系統默認權限,下面的纔是ACL控制權限
權限控制
[root@vms002 www]# getfacl --omit rhel.txt user::rw- group::r-- mask::r-- other::r--
二、setfacl命令it
1)功能:設置文件訪問控制列表
table
[root@vms002 www]# whatis setfacl setfacl (1) - set file access control lists
2)命令語法
setfacl [-bkndRLPvh] [{-m|-x} acl_spec] [{-M|-X} acl_file] file ...
3)經常使用選項
選項 |
含義 |
-m |
修改文件的當前訪問控制權限 -m u:username:perms file \\設置用戶的facl權限(文件) -m g:groupname:perms file \\設置組的facl權限(文件) -m m::Perms file \\設定mask值 -m d:u:username:Perms dir \\d給目錄設置facl默認權限(目錄) -m d:g:groupname:Perms dir \\d給目錄設置facl默認權限(目錄) |
-x |
取消facl權限 -x u:username file \\取消用戶的facl權限(文件) -x g:groupname file \\取消組的facl權限(文件) -x d:u:username dir \\取消目錄的用戶的facl默認權限(目錄) -x d:g:groupname dir \\取消目錄的組的facl默認權限(目錄) |
-R |
遞歸 |
-b |
刪除所有的facl權限 |
-k |
刪除默認的facl權限 |
-d |
設置默認facl權限 |
三、實戰演示
1)給rhel.txt文件設置facl讀寫權限以及取消facl權限[root@vms002 www]# ls rhel.txt #查看rhel.txt的facl權限 [root@vms002 www]# getfacl rhel.txt # file: rhel.txt # owner: root # group: root user::rw- group::r-- mask::r-- other::r-- #設置用戶jerry對rhel.txt文件擁有facl的讀寫權限 [root@vms002 www]# setfacl -m u:jerry:rw- rhel.txt #查看rhel.txt的facl權限,是否設置成功 [root@vms002 www]# getfacl rhel.txt # file: rhel.txt # owner: root # group: root user::rw- user:jerry:rw- #jerry用戶已擁有讀寫權限 group::r-- mask::rw- other::r-- #取消用戶jerry對rhel.txt文件擁有facl的讀寫權限 [root@vms002 www]# setfacl -x u:jerry rhel.txt #查看rhel.txt的facl權限,是否取消成功 [root@vms002 www]# getfacl rhel.txt # file: rhel.txt # owner: root # group: root user::rw- group::r-- mask::r-- other::r--
2)給www目錄設置facl的默認rwx權限以及取消facl的默認權限
[root@vms002 www]# ls rhel.txt www #查看www目錄的facl默認權限 [root@vms002 www]# getfacl www/ # file: www/ # owner: root # group: root user::rwx group::r-x other::r-x #設置jerry用戶對www目錄擁有facl的默認rwx權限 [root@vms002 www]# setfacl -m d:u:jerry:rwx www/ #查看www目錄的facl默認權限,是否設置facl權限成功 [root@vms002 www]# getfacl www/ # file: www/ # owner: root # group: root user::rwx group::r-x other::r-x default:user::rwx default:user:jerry:rwx #jerry用戶已擁有facl的rwx默認權限 default:group::r-x default:mask::rwx default:other::r-x #取消jerry用戶對www目錄的facl默認權限 [root@vms002 www]# setfacl -x d:u:jerry www/ #查看www目錄的facl默認權限,是否取消facl默認權限成功 [root@vms002 www]# getfacl www/ # file: www/ # owner: root # group: root user::rwx group::r-x other::r-x default:user::rwx default:group::r-x default:mask::r-x default:other::r-x
提示:這個d的意思是說default,無論誰在www目錄裏建立的文件/目錄,對jerry用戶都有一個默認的facl權限rwx,這裏強調的是www目錄裏新建立的,不包含父目錄自己和舊文件。
3)設置rhel.txt文件的mask臨時權限
[root@vms002 www]# ls rhel.txt www #查看rhel.txt文件的mask的值 [root@vms002 www]# getfacl rhel.txt # file: rhel.txt # owner: root # group: root user::rw- group::r-- mask::r-- other::r-- #設置rhel.txt文件的mask臨時權限爲讀寫權限 [root@vms002 www]# setfacl -m m::rw- rhel.txt #查看rhel.txt文件的mask的值,是否設置成功 [root@vms002 www]# getfacl rhel.txt # file: rhel.txt # owner: root # group: root user::rw- group::r-- mask::rw- #mask值已設置(臨時權限) other::r--
提示:mask爲臨時權限,若是mask的權限設置爲---,則o生效;若是mask的權限非---,則mask權限生效。
四、總結
1)getfacl命令:查看文件/目錄的訪問控制列表權限;
2)setfacl命令:設置文件/目錄的訪問控制列表權限;
3)setfacl選項:-m設置facl權限,-x取消facl權限;
4)d爲默認的facl權限,生效於目錄中新建立的文件;
5)m爲臨時權限。