ACL访问控制 getfacl 、setfacl 命令

ACL访问控制列表允许在Linux中实现更精细的文件权限管理,超越传统的属主属组other权限。通过getfacl和setfacl命令,可以查看和设置特定用户或组对文件的权限。例如,当新员工小王需要有限制的文件访问权限时,管理员可以通过ACL策略赋予其只读权限,而无需给予全部权限。此外,ACL还能实现递归权限设置,方便管理整个目录结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ACL是Access Control List 访问控制列表的缩写,在Linux中ACL可以对单一用户或组的设定访问文件的权限,其优势为让权限控制更加精细化,如:marking.txt文件为市场部文件,管理员拥有该文件的rwx权限,市场部组也拥有该文件的rwx权限,其他人无权限,新招的市场部新员工小王正处于试用期,管理员不想给小王对marking.txt文件的全部权限,只想给他查看该文件的权限,那么这种情况下,使用我们传统的属主属组other权限就无法做到这一点,这时我们可以考虑使用ACL访问控制的解决办法。

ACL策略的作用:在无法试用常规的权限设置时,我们可以使用ACL访问控制列表对某个用户或组进行设定访问文件的权限。

getfacl 命令用于查看文件的ACL策略及权限,其语法格式如下:

getfacl [选项] file

常用选项:
无,一般不接选项即可;

演示示例:

[root@nginx ~]# getfacl  file1 
# file: file1
# owner: root
# group: nginx
user::rwx
group::r--
other::r--

setfacl命令用于给文件针对某个用户或某个组设置ACL策略,其语法格式如下:

setfacl [选项] mode file

常用选项:

-m			:修改acl策略
-x			:删除某个用户或组的权限
-b			:删除所有的acl策略
-R			:递归,级联

mode表示权限设置:

u:用户名:权限		例如  u:oracle:rw
g:组名:权限 			例如 u:macking:r

演示示例:

[root@nginx /]# ll file1 										#先查看文件的权限
-rwxrwx--- 1 root root 7 Oct  5 22:32 file1
[root@nginx /]# su oracle										#切换到Oracle用户,Oracle用户属于other类型
[oracle@nginx /]$ cat file1 									#显示没有权限查看
cat: file1: Permission denied
[root@nginx /]# getfacl  file1 									#查看原来的权限位
# file: file1
# owner: root
# group: root
user::rwx
group::rwx
other::---

[root@nginx /]# setfacl -m u:oracle:wrx file1 					#给Oracle用户设置acl策略,使之能读写执行file1文件
[root@nginx /]# getfacl  file1 
# file: file1
# owner: root
# group: root
user::rwx
user:oracle:rwx													#这里就加多了一行,增加了Oracle的权限
group::rwx
mask::rwx
other::---

[root@nginx /]# su oracle
[oracle@nginx /]$ cat file1 									#oracle用户能正常查看file1文件了
dsdsds
[oracle@nginx /]$ ll file1 
-rwxrwx---+ 1 root root 7 Oct  5 22:32 file1					#发现权限为多了一个+号
[oracle@nginx /]$ 
[root@nginx /]# setfacl -b file1								#删除所有ACL策略
[root@nginx /]# getfacl file1 									#查看删除acl策略后的文件发现没有了acl策略了
# file: file1
# owner: root
# group: root
user::rwx
group::rwx
other::---
[root@nginx /]# setfacl -m g:macking:r file1 					#对macking组设置acl策略
[root@nginx /]# getfacl file1 
# file: file1
# owner: root
# group: root
user::rwx
group::rwx														#这个是原来的属组的权限的,不要看错哦
group:macking:r--												#这是我们刚才对macking组添加的acl策略
mask::rwx
other::---

[root@nginx /]# setfacl -R  -m g:macking:r /usr/local/nginx/	#-R表示递归,级联

[root@nginx /]# setfacl -x u:oracle file1						#删除某个用户的acl策略
[root@nginx /]# setfacl -x g:dba file1							#删除某个组的acl策略

总结

当无法使用传统的文件权限控制时我们可以使用ACL访问控制策略实现权限的精细化控制,如,marking.txt文件为市场部文件,管理员拥有该文件的rwx权限,市场部组也拥有该文件的rwx权限,其他人无权限,新招的市场部新员工小王正处于试用期,管理员不想给小王对marking.txt文件的全部权限,只想给他查看该文件的权限。
1、getfacl [选项] file1									#查看文件的acl策略
2、setfacl -m u:oracle:rw file1							#给予Oracle用户对file1文件的rw权限
3、setfacl -m g:macking:r file1							#给予macking组对file1文件的r权限
4、setfacl -R -m g:macking:rwx /usr/local/nginx/		#递归级联给予macking组对nginx目录的rwx权限
5、setfacl -x u:oracle file1							#删除Oracle用户对file1文件的rw权限
6、setfacl -x g:macking file1							#删除macking组对file1文件的权限
7、setfacl -b  file1									#全部删除file1文件的acl策略
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值