插件窝 干货文章 如何使用CentOS系统中的访问控制列表(ACL)来限制文件和目录的访问权限

如何使用CentOS系统中的访问控制列表(ACL)来限制文件和目录的访问权限

ACL 权限 setfacl bash 799    来源:    2025-04-15

在CentOS中使用ACL控制文件和目录访问权限

访问控制列表(ACL)提供了比传统Unix权限更精细的访问控制方式。以下是在CentOS系统中使用ACL的完整指南:

1. 检查并启用ACL支持

首先确认你的文件系统支持ACL:

# 检查文件系统是否支持ACL
mount | grep acl

如果未启用,可以在挂载时添加acl选项:

# 临时启用(重启后失效)
mount -o remount,acl /

# 永久启用(编辑/etc/fstab)
# 在对应分区的挂载选项中添加acl,例如:
# /dev/sda1  /  ext4  defaults,acl  1 1

2. 安装ACL工具

yum install acl

3. 基本ACL命令

查看ACL权限

getfacl 文件名/目录名

设置ACL权限

setfacl -m u:用户名:权限 文件名/目录名
setfacl -m g:组名:权限 文件名/目录名

4. 常用ACL操作示例

为用户添加权限

# 允许用户john读取/写入文件
setfacl -m u:john:rw file.txt

# 允许用户john读取目录及其内容
setfacl -Rm u:john:rX directory/

为组添加权限

# 允许developers组读写目录
setfacl -Rm g:developers:rwX project/

设置默认ACL(新创建文件继承)

# 设置目录的默认ACL,新文件将继承
setfacl -dm u:john:rwX shared_dir/

删除特定ACL条目

# 删除用户john的ACL条目
setfacl -x u:john file.txt

# 删除组developers的ACL条目
setfacl -x g:developers directory/

删除所有ACL权限

setfacl -b file.txt

5. 权限掩码

ACL权限会受到umask影响,可使用-n选项避免:

setfacl -n -m u:john:rw file.txt

6. 递归设置ACL

# 递归设置目录及其内容
setfacl -R -m u:john:rX directory/

7. 备份和恢复ACL

# 备份ACL
getfacl -R /path/to/dir > acl_backup.txt

# 恢复ACL
setfacl --restore=acl_backup.txt

8. 验证ACL权限

# 查看文件ACL
getfacl file.txt

# 查看目录ACL(包括默认ACL)
getfacl -d directory/

注意事项

  1. ACL权限会显示在ls -l的输出中(权限位后会有+标志)
  2. 复制文件时,ACL权限可能会丢失,使用cp -pcp --preserve=all保留
  3. 某些旧版应用程序可能不完全支持ACL
  4. 过度使用ACL可能导致权限管理复杂化

通过合理使用ACL,你可以实现比传统Unix权限更精细的访问控制,满足复杂环境下的权限管理需求。