访问控制列表(ACL)提供了比传统Unix权限更精细的访问控制方式。以下是在CentOS系统中使用ACL的完整指南:
首先确认你的文件系统支持ACL:
# 检查文件系统是否支持ACL
mount | grep acl
如果未启用,可以在挂载时添加acl选项:
# 临时启用(重启后失效)
mount -o remount,acl /
# 永久启用(编辑/etc/fstab)
# 在对应分区的挂载选项中添加acl,例如:
# /dev/sda1 / ext4 defaults,acl 1 1
yum install acl
getfacl 文件名/目录名
setfacl -m u:用户名:权限 文件名/目录名
setfacl -m g:组名:权限 文件名/目录名
# 允许用户john读取/写入文件
setfacl -m u:john:rw file.txt
# 允许用户john读取目录及其内容
setfacl -Rm u:john:rX directory/
# 允许developers组读写目录
setfacl -Rm g:developers:rwX project/
# 设置目录的默认ACL,新文件将继承
setfacl -dm u:john:rwX shared_dir/
# 删除用户john的ACL条目
setfacl -x u:john file.txt
# 删除组developers的ACL条目
setfacl -x g:developers directory/
setfacl -b file.txt
ACL权限会受到umask影响,可使用-n
选项避免:
setfacl -n -m u:john:rw file.txt
# 递归设置目录及其内容
setfacl -R -m u:john:rX directory/
# 备份ACL
getfacl -R /path/to/dir > acl_backup.txt
# 恢复ACL
setfacl --restore=acl_backup.txt
# 查看文件ACL
getfacl file.txt
# 查看目录ACL(包括默认ACL)
getfacl -d directory/
ls -l
的输出中(权限位后会有+
标志)cp -p
或cp --preserve=all
保留通过合理使用ACL,你可以实现比传统Unix权限更精细的访问控制,满足复杂环境下的权限管理需求。