- 工信部备案号 滇ICP备05000110号-1
- 滇公安备案 滇53010302000111
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
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
设置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
售前咨询
售后咨询
备案咨询
二维码
TOP