【学了就忘Linux权限管理】— 2.ACL权限(二)

3、ACL基本命令

(1)设定ACL权限 :

setfacl 选项 文件名
-m:设定ACL权限
-b:删除ACL权限
-x:删除单个用户的ACL权限

  • 设置ACL权限给用户
    setfacl -m u:用户名:权限(数字和字母都行) 文件名
    [root@localhost ~ ] # setfacl -m u:st:5 /www/

查看一下/www/文件夹


权限最后哪个+号,说明 /www/文件夹有ACL权限。

(2)查询文件的ACL权限

getfacl 文件名

【学了就忘Linux权限管理】— 2.ACL权限(二)_第1张图片

第一行有一个报错,错误是说不识别左侧的/(根目录标识),他推荐进入到根目录,用相对路径的方式进行查看。这个报错并不影响我们查看结果,可以忽略。

# file:www:文件名
#owner: sc:所有者
# group:tg:所属组
user::rwx:所有者权限
user:st:r-x:这里就是文件的ACL权限
group::rwx:所属组权限
mask::rwx:最大有效权限
other::--:其他人权限

(3)设置文件ACL权限给用户组

setfacl -m g:组名:权限 文件名
[root@localhost ~ ] # setfacl -g u:st:5 /www/

(4)给文件夹和里边的文件同时赋予ACL权限

[root@localhost ~ ] # setfacl -m u:st:5 -R /www/
选项:
-R:递归

注意:赋予递归ACL权限,只能赋予目录。(也就是说# setfacl -m u:st:5 -R /www/最后的/www/位置,一定要是文件夹,不能是文件。)

  • 提示:如果文件被赋予了ACL权限,那么我们用ll命令查看到文件的权限,可能是不准确的,如果想要看准确的,需要通过getfacl 文件名命令查看。如下图。
【学了就忘Linux权限管理】— 2.ACL权限(二)_第2张图片
(5)ACL默认权限

上边的目录中如果再创建新的文件,新创建的文件是否有ACL权限?

答案是没有的。可以在命令中加入d选项,设置ACL默认权限,就可以解决。

setfacl -m d:u:aa:rwx -R /test

注意:默认权限只能赋予目录。

下图为设置ACL默认权限的文件夹,通过getfacl 文件名命令查看权限。

【学了就忘Linux权限管理】— 2.ACL权限(二)_第3张图片
(6)总结:

如果给目录赋予acl权限,两条命令都要输入
递归与默认的区别:
setfacl -m u:cc:rx -R soft/——》只对已经存在的文件生效。
setfacl -m d:u:aa:rwx -R /test——》只对以后新建的文件生效。

ACL权限,一旦递归之后,不可避免的出现权限溢出

什么是权限溢出。
ACL权限递归之后,目录和目录中的文件都会有相同的执行权限。目录的执行权限是进入目录,而文件的执行权限就非常危险了,相当于赋予了文件最大权限。这个问题是没法解决的。
以后通过shell脚本,能解决ACL权限递归造成的权限溢出问题,判断文件夹里边的文件类型,文件赋予4,文件夹赋予5,这样就能解决。但这就不是一个单一命令了。

正常情况下还是使用所有者,所属组,其他人权限来处理。

4、最大有效权限mask

用来控制文件的最大有效权限的。如下图:

【学了就忘Linux权限管理】— 2.ACL权限(二)_第4张图片

mask值分别和所有者、所属组、其他人、ACL权限,相与的结果,来最终决定一个身份的权限是什么。

  • 设定mask权限为r-x。使用m:权限格式:

[root@localhost www ] # setfacl -m m:6 /www/

结果如下图:

【学了就忘Linux权限管理】— 2.ACL权限(二)_第5张图片

5、删除ACL权限

#删除指定用户和用户组的ACL权限
[root@localhost ~ ] # setfacl -x u:st /project/

#会删除文件的所有的ACL权限
[root@localhost ~ ] # setfacl -b project/

你可能感兴趣的:(【学了就忘Linux权限管理】— 2.ACL权限(二))