Linux facl文件訪問控制getfacl、setfacl

前言:
安全

    當一個用戶須要讀寫一個文件時,其文件的屬主和屬組都沒有相應的權限,若是給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爲臨時權限。

相關文章
相關標籤/搜索