CentOS7当中,无论是操作系统安装时还是之后手工创建的文件系统(xfs、ext4)均会开启ACL功能。
CentOS6及之前的版本,仅操作系统安装时创建的文件系统才会默认开启ACL,手工创建的文件系统,需要手工开启ACL
功能。
Acl如何设置
创建分区
mount -o acl /dev/sda7 取消的方式,重新挂载时不指定即可
tune2fs -o acl /dev/sda7 取消的方式 tune2fs -o ^acl /dev/sda7
这里的feiyan1 ,liluo2,qingchen3都是人名,加上1,2,3只是为了方便看
Liluo2在group组里,f1属于feiyan1这个人,属于liluo2这个组
Group权限是rw-,而liluo2只能对文件f1进行读操作,rw-相当于是r
下面把group的权限改为了rwx,liluo2属于group组成员,理论上也应当具有rwx权限
而实际上liluo2只具有rw-也就是只有r权限,和原来一样权限并没有改变,这样为什么呢?
因为在设置了Acl以后,group的位置就被umask占了,所以你看到的原来组的位置实际上是umask的权限,一旦设置了acl,原来组的权限就无法改变了,原来group权限是什么就是什么,虽然设置acl后无法改变但依然生效,即使你使用了g+rwx 组的权限依然不变,变的是umask
实例如下:
权限的优先顺序
文件的owner权限优先于acl权限
ACL权限判断的顺序
先判断是否是文件的OWNER,如果是,则执行OWNER的权限后结束,如果不是OWNER,则判断是否是ACL的USER,如果是则执行USER权限后结束,如果不是ACL的USER, 则判断是否属于GROUP或ACL GROUP,如果是,则取最大权限(两个权限的并集)。如果不属于任何GROUP,则执行OTHER。 原生的group和acl group没有优先的关系,权限组合一起使用
我们之前设置的都是基于当前已存在的文件生效的,那么要想对于为来创建的文件也有acl权限(未来新创建的文件创建既有acl权限)该怎么做呢?
作用如图
那么在liluo2用户下创建的新文件有没有acl属性呢,我们来看实验
发现依然有acl属性
setfacl -m d:u:liluo2:rwx f2 设置这句之后发现只要是在f2下新创建的都会创建自带acl属性 —-这就是我们说的默认属性,但是对当前目录不生效
练习:
在/app目录下创建一个名为d1的目录,要求其owner,group均为root,权限设置为755。要求guanyu用户对该目录及所有用户在其下创建的新文件新目录均有rwx权限
设置ACL默认权限,仅影响新创建的文件及目录,不影响当前。
实验中guanyu换成了feiyan1
setfacl -x d:sunquan d11 删除一条默认权限
setfacl -k d1 删除全部默认权限
setfacl -b d1 删除ACL属性
getfacl -R /app/d1 > acl.txt 将目录下的所有文件的ACL属性备份到文件
setfacl -R –set-file=acl.txt /app/d1 通过文件还原ACL属性的方法1
setfacl –restore acl.txt 通过文件还原ACL属性的方法2
setfacl -R -b /app/d1 清除目录下所有文件的ACL属性
小知识点补充:
拿笔划重点,注意^.的用法
如何恢复家目录:只要一句命令就好了
恢复家目录的操作
ls -a
rm -rf .*
cp -a /etc/skel/.[^.]* .
ls -al
Exit 重新登陆就好了,家目录就回来了,不再演示!
原创文章,作者:sqjl,如若转载,请注明出处:http://www.178linux.com/83080