ACL权限控制

2023-05-29 11:41:37 3387

ACL(access control list)权限控制

一个文件有所属者,所属组,其他人三种关系,且这三种关系不可以更改,但是如果又来一个用户要求要对该文件有r-x权限且不能更改其他用户的权限关系,那么这三种权限关系就不够使用了,所以这个时候需要用到ACL权限,为这个用户单独分配r-x权限,这样既不会破坏其他用户对这个文件的权限关系,又不会使这个用户没有这个操作文件权限的关系。

CentOS7 默认创建的xfs和ext4文件系统具有ACL功能 CentOS7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加

#查看是否有ACL功能

#dumpe2fs命令是查询指定分区详细文件系统信息的命令

#-h仅显示超级块中信息,而不显示磁块组的详细信息

dumpe2fs -h /dev/sdb1

#添加ACL功能

tune2fs –o acl /dev/sdb1

mount –o acl /dev/sdb1 /mnt/test

#或者

vi /etc/fstab

#在default后面加入acl

ACL相关命令

查看ACL命令

getfacl filename

21.png

设置ACL权限

setfacl命令

格式:setfacl  选项  acl参数 目标文件或目录

-m  设置后续的acl参数,不可与-x一起使用

-x   删除后续的acl参数,不可与-m一起使用

-b   删除所有的acl参数

-k   删除默认的acl参数

-R   递归设置acl参数

-d   设置默认acl参数,只对目录有效

 

ACL参数

u:用户名:权限    给某个用户设定权限,若不添加用户名,默认修改属主权限

g:组名:权限      给某个组设定权限,若不添加组名,默认修改属组权限

m:权限          更改权限掩码

范例:

# 创建目录并设置权限

mkdir -p /tmp/test

chmod 640 /tmp/test

# 创建用户AAA、BBB 创建组testg并加入

useradd AAA

useradd BBB

groupadd testg

gpasswd -a AAA testg

gpasswd -a BBB testg

# 设置acl权限

setfacl -m u:AAA:rx test

# 现在AAA可访问

# 设置acl权限

setfacl -m g:testg:rx test

# 现在BBB也可访问

最大有效权限mask

mask是用来指定最大有效权限的。mask只影响除所有者和other的之外的人和组的最大权限。如果我给用户赋予了ACL权限,如果我再设置mask权限这是需要和mask的权限相与才能得到用户的真正的权限,把-当做0,通过调整mask权限来调整文件的权限,下面来调整一下最大用户权限

setfacl -m u:AAA:rwx 1.txt

 

备份和还原ACL

主要的文件操作命令cp和mv都支持ACL,只是cp命令需要加上-p 参数。但是tar等常见的备份工具是不 会保留目录和文件的ACL信息

#备份ACL

getfacl -R /tmp/dir > acl.txt

#消除ACL权限

setfacl -R -b /tmp/dir

#还原ACL权限

setfacl -R --set-file=acl.txt /tmp/dir

#还原ACL权限

setfacl --restore acl.txt

#查看ACL权限

getfacl -R /tmp/dir

 

 


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: