您的位置:首页 > 其它

Setfacl 设置文件访问控制列表

2013-09-02 18:02 176 查看
Setfacl设置文件访问控制列表1)目录下文件的权限继承2)目录的权限传递3)单独文件的权限传递4)Acl权限的移除
Setfacl参数详解
linux中用setfacl设置文件或目录的acl (权限可以使用字符或者数字)在设置了分区支持ACL功能之后,就可以使用setfacl命令让文件或目录使用ACL功能配置更精细的权限 setfacl [-bkdR] [{-m|-x}]<acl规则> 文件|目录可用getfacl查看权限 -d显示默认权限-R显示目录及其子目录和文件的acl-m :更改文件或者目录的acl规则-x :删除文件或者目录指定的acl规则-b :删除文件或者目录所有的acl规则-k :删除文件或者目录默认的acl规则-d :指定文件或者目录默认的acl规则--test :测试模式,不会改变任何文件或者目录的acl规则。操作后的acl规格将被显示-R :递归处理,将指定目录下的所有文件及子目录一并处理特别提示若要使用cp命令复制文件且保留acl,则必须使用“-p”选项,mv则会默认保留acl配置用户组默认权限与用户默认权限相同,选项u:改为g:特别提示.英文全称:Set file access control list[root@localhost /]#mkdir ceshi[root@localhost /]# ll ceshi/total 16-rw-r--r-- 1 root root 3 Apr 16 03:44 c1-rw-r--r-- 1 root root 3 Apr 16 03:44 c2[root@localhost /]# setfacl -R -m u:mingming:6 nihao/[root@localhost /]# setfacl -m u:mingming:6 ceshi/ 因为这是一个目录,而我设置对他设置权限的时候,并没有采用递归的方式,所以里面的两个文件权限属性不受影响[root@localhost /]# ll ceshi/total 16-rw-r--r-- 1 root root 3 Apr 1603:44 c1-rw-r--r-- 1 root root 3 Apr 1603:44 c2

[root@localhost /]# setfacl -Rm u:mingming:6 ceshi/ 现在我又增加了-R选项,再次查看的时候,发现里面原有的两个文件权限属性信息已成功改变[root@localhost /]# ll ceshi/total 16-rw-rw-r--+ 1 root root 3 Apr 16 03:44 c1-rw-rw-r--+ 1 root root 3 Apr 16 03:44 c2[root@localhost /]# echo "c3" >ceshi/c3 现在,我在该目录下创建文件c3,然后查看权限,发现c3的权限还是644,并没有受该目录权限属性的影响,为何?

[root@localhost /]# ll ceshi/ total 24-rw-rw-r--+ 1 root root 3 Apr 16 03:44 c1-rw-rw-r--+ 1 root root 3 Apr 16 03:44 c2-rw-r--r-- 1 root root 3 Apr16 03:49 c3

目录下文件的权限继承[root@localhost/]# setfacl -dm u:mingming:6 ceshi/ -d:default,对目录有效,使用此参数设置权限后,再在该目录下创建的文件,会默认继承该目录的权限,而我在上一步[root@localhost/]# echo "c4" > ceshi/c4 创建的文件c3并不受影响,要想文件c3和目录权限保持一致,可以使用setfacl -Rmu:mingming:6 ceshi/[root@localhost/]# ll ceshi/ 命令。 (-d:默认权限继承)total 32-rw-rw-r--+ 1root root 3 Apr 16 03:44 c1-rw-rw-r--+ 1root root 3 Apr 16 03:44 c2-rw-r--r-- 1 root root 3 Apr 16 03:49 c3-rw-rw-r--+ 1root root 3 Apr 16 03:52 c4

目录的权限传递[root@localhost/]# mkdir he [root@localhost/]# echo "a1" > he/a1 [root@localhost/]# echo "a2" > he/a2 [root@localhost/]# getfacl --access ceshi/ | setfacl -d -M- he/ ===>我本想在此命令行使用-R选项,想让该目录在设置权限之前就有的文件也受影响,但发现不行[root@localhost/]# ll he/ 此时,我们发现,若在传递权限之前,该目录已有文件存在,则不受传递权限命令的影响,只会对权限设置成功之后新创建的文件有影响如例五所示total 16-rw-r--r-- 1 root root 3 Apr 16 03:53 a1-rw-r--r-- 1 root root 3 Apr 16 03:53 a2

例五:[root@localhost/]# echo "a3" > he/a3 [root@localhost/]# echo "a5" > he/a5 [root@localhost/]# ll he/total 28-rw-r--r-- 1 root root 3 Apr 16 03:53 a1-rw-r--r-- 1 root root 3 Apr 16 03:53 a2-rw-rw-r--+ 1root root 11 Apr 16 03:57 a3-rw-rw-r--+ 1root root 0 Apr 16 04:24 a5

单独文件的权限传递[root@localhostmingming]# getfacl ceshi/ming | setfacl --set-file=- sec/m1 [root@localhostmingming]# ll sec/m1 -rw-rw-r--+ 1root root 0 Apr 16 03:27 sec/m1[root@localhostmingming]# getfacl sec/m1 getfacl获取文件/目录的权限属性信息# file: sec/m1# owner: root# group: rootuser::rw-user:mingming:rw-group::r--mask::rw-other::r--

[root@localhostmingming]# getfacl ceshi/ming # file:ceshi/ming# owner: root# group: rootuser::rw-user:mingming:rw-group::r--mask::rw-other::r—

我们发现两个文件的权限已保持一致,至此单独文件的权限传递成功。

Acl权限的移除法1:(非递归移除)[root@localhost/]# setfacl -x he/ -x选项看来不行setfacl: Option-x: Invalid argument near character 1

[root@localhost/]# setfacl -b he/ -b选项可用来移除acl权限;不过需注意下面的问题。

[root@localhost/]# ll he/ 虽然刚刚我们移除了acl权限,但是我们发现该目录下原有文件的权限,并未发生变化,total 28-rw-r--r-- 1 root root 3 Apr 16 03:53 a1-rw-r--r-- 1 root root 3 Apr 16 03:53 a2-rw-rw-r--+ 1root root 11 Apr 16 03:57 a3-rw-rw-r--+ 1root root 0 Apr 16 04:24 a5

[root@localhost/]# touch he/a7 经过上面的操作,现在我再创建新的文件a7,看看该文件的权限属性信息有何变化[root@localhost/]# ll he/ total 32-rw-r--r-- 1 root root 3 Apr 16 03:53 a1-rw-r--r-- 1 root root 3 Apr 16 03:53 a2-rw-rw-r--+ 1root root 11 Apr 16 03:57 a3-rw-rw-r--+ 1root root 0 Apr 16 04:24 a5-rw-r--r-- 1 root root 0 Apr 16 04:40 a7 现在我们发现,刚刚新创建的文件已没有被设置acl权限,而是默认的644权限,

法2:(递归移除acl权限) [root@localhostmingming]# setfacl -bR ceshi/ 递归移除acl权限,在此之前,该目录下原有文件的acl权限也会被移除[root@localhost mingming]# ll ceshi/total 16-rw-r--r-- 1 root root 16 Apr 16 03:00 ming-rw-r--r-- 1 root root 3 Apr 16 03:00 u1

我们发现该目录原有的两个文件已恢复默认,递归移除acl权限成功。

[root@localhost mingming]# getfacl ceshi/u1 # file: ceshi/u1# owner: root# group: rootuser::rw-user:mingming:---group::r--mask::r--other::r—[root@localhost mingming]# getfacl ceshi/ming# file: ceshi/ming# owner: root# group: rootuser::rw-user:mingming:rw-group::r--mask::rw-other::r--切换成用户mingmingsu – mingming 验证刚刚对目录下的两个文件设置的权限是否生效测试发现,对ming有写入权限,对u1无写入权限

本文出自 “勇敢的心” 博客,谢绝转载!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: