访问控制列表(Access Control List)已经加入核心有很长一段时间了,包括红旗DC 4.1已经有该驱动可以加载。但最近才发现,原来自己对它还不熟悉,特重新温习一遍。
一、为什么
为什么要使用ACL?原因在于使用标准的基于用户、用户组的文件和目录权限设置,无法为两个或多个以上用户指定不同的权限。例如,设定某文件的用户、用户组权限,但同组不同用户的权限就单独设置了。
而启动ACL后,可以在定义文件或目录的许可控制方面大大地增强灵活性,也有助于在Samba或其他应用及文件系统中使用。
二、启动
默认的加载选项是没有启动ACL支持的,原来是:
/dev/sdb on /data type ext3 (rw)
我们可以这样操作:
mount -o acl /dev/sdb /data
mount|grep /dev/sdb
/dev/sdb on /data type ext3 (rw,acl)
也可以修改/etc/fstab文件为:
三、使用
1、准备
touch file1 file2
原状态:
total 0
-rw-r–r– 1 root root 0 Sep 27 16:47 file1
-rw-r–r– 1 root root 0 Sep 27 16:47 file2
2、设置
1)对用户设置
允许user1用户读和执行权限:
查看,会看到在权限后面多出一个+号,而且其设置高于标准权限:
total 4
-rw-r-xr–+ 1 root root 0 Sep 27 16:47 file1
-rw-r–r– 1 root root 0 Sep 27 16:47 file2
# getfacl file1
# file: file1
# owner: root
# group: root
user::rw-
user:user1:r-x
group::r–
mask::r-x
other::r–
2)对用户组设置
允许group1用户组对文件读写权限:
查看:
total 4
-rw-rwxr–+ 1 root root 0 Sep 27 16:47 file1
-rw-r–r– 1 root root 0 Sep 27 16:47 file2
[root@ora02 test]# getfacl file1
# file: file1
# owner: root
# group: root
user::rw-
user:user1:r-x
group::r–
group:group1:rw-
mask::rwx
other::r–
3)修改
修改user1对file的权限为只读:
[root@ora02 test]# getfacl file1
# file: file1
# owner: root
# group: root
user::rw-
user:user1:r–
group::r–
group:group1:rw-
mask::rw-
other::r–
※-s 和-m的差别在于,-m会覆盖原来的ACL设置,而-s不会。
4)删除
删除指定用户或用户组的权限:
[root@ora02 test]# getfacl file1
# file: file1
# owner: root
# group: root
user::rw-
group::r–
group:group1:rw-
mask::rw-
other::r–
删除所有的ACL权限:
[root@ora02 test]# ll
total 0
-rw-r–r– 1 root root 0 Sep 27 16:47 file1
-rw-r–r– 1 root root 0 Sep 27 16:47 file2
[root@ora02 test]# getfacl file1
# file: file1
# owner: root
# group: root
user::rw-
group::r–
other::r–
4、设置默认权限
默认权限只能对目录有效,对文件是无法设置的。
1)准备
[root@ora02 test]# chown -R user1:group1 hoho
[root@ora02 test]# ll
total 4
-rw-r–r– 1 root root 0 Sep 27 16:47 file1
-rw-r–r– 1 root root 0 Sep 27 16:47 file2
drwxr-xr-x 2 user1 group1 4096 Sep 27 16:59 hoho
2)设置
[root@ora02 test]# ll
total 8
-rw-r–r– 1 root root 0 Sep 27 16:47 file1
-rw-r–r– 1 root root 0 Sep 27 16:47 file2
drwxr-xr-x+ 2 user1 group1 4096 Sep 27 16:59 hoho
[root@ora02 test]# getfacl hoho
# file: hoho
# owner: user1
# group: group1
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:group:group1:rw-
default:mask::rwx
default:other::r-x
3)优先级
我把use2用户也加入到group1组,但独立设置权限为只读:
[root@ora02 test]# setfacl -m u:user2:r hoho
尝试:
-bash-3.00$ cd /data/test/
-bash-3.00$ touch hoho/good
touch: cannot touch `hoho/good’: Permission denied
※可以看到,最具体的ACL是优先于默认的ACL
四、相关操作
1、拷贝
原状态:
# file: file1
# owner: root
# group: root
user::rw-
user:user1:rw-
group::r–
mask::rw-
other::r–
第一次拷贝:
[root@ora02 test]# ll
total 4
-rw-rw-r–+ 1 root root 0 Sep 27 16:47 file1
-rw-r–r– 1 root root 0 Sep 27 16:47 file2
-rw-r–r– 1 root root 0 Sep 27 17:06 file3
第二次拷贝(使用-p参数):ACL权限保留,-a选项也可以
[root@ora02 test]# getfacl file4
# file: file4
# owner: root
# group: root
user::rw-
user:user1:rw-
group::r–
mask::rw-
other::r–
[root@ora02 test]# ll
total 8
-rw-rw-r–+ 1 root root 0 Sep 27 16:47 file1
-rw-r–r– 1 root root 0 Sep 27 16:47 file2
-rw-r–r– 1 root root 0 Sep 27 17:06 file3
-rw-rw-r–+ 1 root root 0 Sep 27 16:47 file4
※注意:
如果从一个支持ACL的文件系统向一个不支持ACL的文件系统移动或带ACL属性的拷贝,则会得到类似下面这样的错误提示:
2、移动
也能保持ACL权限。
[root@ora02 test]# ll
total 8
-rw-r–r– 1 root root 0 Sep 27 16:47 file2
-rw-r–r– 1 root root 0 Sep 27 17:06 file3
-rw-rw-r–+ 1 root root 0 Sep 27 16:47 file4
-rw-rw-r–+ 1 root root 0 Sep 27 16:47 file5
3、拷贝ACL权限
当对多个文件或目录执行同样的操作的话,我们可以从原文件获得权限设置:
[root@ora02 test]# ll
total 12
-rw-rw-r–+ 1 root root 0 Sep 27 16:47 file2
-rw-r–r– 1 root root 0 Sep 27 17:06 file3
-rw-rw-r–+ 1 root root 0 Sep 27 16:47 file4
-rw-rw-r–+ 1 root root 0 Sep 27 16:47 file5
4、拷贝默认ACL权限
原来:
[
[root@ora02 test]# ll
total 24
drwxr-xr-x+ 2 root root 4096 Sep 27 17:15 dir1
drwxr-xr-x 2 root root 4096 Sep 27 17:15 dir2
-rw-rw-r–+ 1 root root 0 Sep 27 16:47 file2
-rw-r–r– 1 root root 0 Sep 27 17:06 file3
-rw-rw-r–+ 1 root root 0 Sep 27 16:47 file4
-rw-rw-r–+ 1 root root 0 Sep 27 16:47 file5
拷贝:
[root@ora02 test]# getfacl dir2
# file: dir2
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:user1:rwx
default:group::r-x
default:mask::rwx
default:other::r-x
5、备份与恢复
[root@ora02 test]# setfacl –restore acl.bak.txt
6、打包
原来:
[root@ora02 test]# ll
total 4
-rw-r-xr–+ 1 root root 0 Sep 27 17:29 file1
tar命令是不能保留ACL权限的,但可以使用star命令,而且必须指定Hex格式:
a file1 0 bytes, 0 tape blocks
a hoho directory
star: 1 blocks + 0 bytes (total of 10240 bytes = 10.00k).
查看:(注意结果)
-rw-r-xr– root/root 0 2006-09-27 17:29:22 file1
[root@ora02 test]# star tzvf file.star.gz
0 -rw-r-xr–+ root/root Sep 27 17:29 2006 file1
star: 1 blocks + 0 bytes (total of 10240 bytes = 10.00k).
解压:
[root@ora02 test]# mv file.star.gz hoho/
[root@ora02 test]# cd hoho/
[root@ora02 hoho]# star -acl -zvx f=file.star.gz
x file1 0 bytes, 0 tape blocks
x hoho/ directory
star: 1 blocks + 0 bytes (total of 10240 bytes = 10.00k).
[root@ora02 hoho]# ll
total 12
-rw-r–r– 1 root root 361 Sep 27 17:34 file.star.gz
-rw-r-xr–+ 1 root root 0 Sep 27 17:29 file1
五、附录
1、命令man翻译
Usage: setfacl [-bkndRLP] { -m|-M|-x|-X … } file …
-m, –modify=acl 修改文件的ACL设置
-M, –modify-file=file 从指定的文件读取ACL情况并用于加入设置后面跟的文件
-x, –remove=acl 删除文件的指定ACL设置
-X, –remove-file=file 从指定的文件读取ACL情况并用于移除后面跟的文件
-b, –remove-all 删除全部ACL设置
-k, –remove-default 删除默认ACL
–set=acl 设置ACL来替换当前的ACL
–set-file=file 从指定的文件读取ACL情况并用于设置后面跟的文件
–mask 重新计算有效的正确的掩码
-n, –no-mask 不重新计算有效的正确的掩码
-d, –default 设置默认ACL
-R, –recursive 递归模式,对全部目录及文件设置
-L, –logical 跟随链接去设置实际文件
-P, –physical 设置链接文件
–restore=file 从指定的文件恢复ACL设置(由`getfacl -R’生成的)
–test 只是测试
Usage: getfacl [-dRLP] file …
–access 只显示ACL
-d, –default 只显示默认的ACL
–omit-header 不显示注释部分
–all-effective 显示全部有效的权限
–no-effective 显示无效的权限
–skip-base 跳过只有基础权限的文件,不显示
-R, –recursive 递归模式
-L, –logical 跟随链接去设置实际文件
-P –physical 设置链接文件
–tabular 使用tabular输出模式
–numeric 不显示用户名、用户组,而用UID、GID代替print numeric user/group identifiers
–absolute-names 在路径中不剥除’/’字符
2、参考文档
ACL访问控制系统
Linux文件系统ACL介绍
在Windows下使用红旗HA Cluster 配置工具
红旗Asianux 3.0 安装 Oracle 9i
从Oracle E-Delivery下载Oracle Enterprise Linux
安装及配置红旗高可用服务器 HA 5.0 [5] – 使用WebManager
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/113250.html