ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux facl文件访问控制getfacl、setfacl

2019-06-05 19:00:07  阅读:252  来源: 互联网

标签:www txt setfacl facl getfacl rhel 权限 root


前言:

    当一个用户需要读写一个文件时,其文件的属主和属组都没有相应的权限,如果给other读写权限的话,这样所有的用户都有了读写权限,此时风险比较大,不安全。这时就需要一个附加权限了。

    facl(文件访问控制列表):附加原有权限模型之上另一层权限控制机构,保存至文件扩展属性信息中;

1、getfacl命令

    #显示文件访问控制列表

[root@vms002 www]# whatis getfacl
getfacl (1)          - get file access control lists

    命令语法:

getfacl [-aceEsRLPtpndvh] file ...

    例:

[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--

2、setfacl命令

    1)功能:设置文件访问控制列表

[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权限

3、实战演示

    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权限生效。

4、总结

    1)getfacl命令:查看文件/目录的访问控制列表权限;

    2)setfacl命令:设置文件/目录的访问控制列表权限;

    3)setfacl选项:-m设置facl权限,-x取消facl权限;

    4)d为默认的facl权限,生效于目录中新创建的文件;

    5)m为临时权限。


标签:www,txt,setfacl,facl,getfacl,rhel,权限,root
来源: https://blog.51cto.com/13716812/2405571

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有