直接用 setfacl -m u:用户名:rw- 文件或目录 就能为单个用户配置专属读写权限,但需确保文件系统启用 acl 挂载选项、目标路径可写、用户存在,并注意 mask 限制和默认 acl(-d)才能使新建文件继承权限。

直接用 setfacl -m u:用户名:rw- 文件或目录 就能为单个用户配置专属读写权限,但要注意文件系统支持、mask限制和默认继承这三点,否则权限可能不生效或不持久。
确认基础前提是否满足
ACL不是开箱即用的功能,得先确保底层支持:
- 运行
tune2fs -l /dev/对应分区 | grep "Default mount options",输出里必须含 acl;没有就需在/etc/fstab对应挂载项加acl参数,并执行sudo mount -o remount /挂载点 - 目标路径要有写权限,否则
setfacl会静默失败 - 用户必须真实存在(
id 用户名能查到),否则设置无效
给单一用户设读写权限(当前项)
这是最常用的操作,语法简单但权限位要写准:
本文档主要讲述的是Android linux内核介绍;Android内核是基于Linux 2.6内核的(目前最新开发版本是2.6.31),它是一个增强内核版本,除了修改部分Bug外,它提供了用于支持Android平台的设备驱动,希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
- 对文件:
sudo setfacl -m u:alice:rw- /path/to/file(末尾的-明确禁用执行权,避免误开) - 对目录:
sudo setfacl -m u:alice:rwx /path/to/dir(目录需x才能进入) - 执行后,
ls -l显示权限末尾会多一个 + 号,表示 ACL 已启用
让新创建的文件也自动获得该权限
上面命令只作用于当前对象。若目标是目录,且希望后续新建的文件/子目录也继承读写权限,必须设「默认 ACL」:
- 先确保目标是目录(不是普通文件)
- 执行
sudo setfacl -d -m u:alice:rw- /shared(-d表示默认规则) - 已有内容不受影响,如需同步更新,再补一句
sudo setfacl -R -m u:alice:rw- /shared
验证和排错关键点
权限没生效?大概率卡在这几个环节:
- 用
getfacl /path查看输出,确认是否存在user:alice:rw-条目 - 检查
mask::行——它会压制所有非属主/属组的 ACL 权限。比如 mask 是r--,即使设了rwx,用户实际也只有读权限 - 修复 mask:加
--mask参数重设,例如sudo setfacl -m u:alice:rw- --mask /path - 测试时别用
su - alice切换后直接cat,而要用sudo -u alice cat /path,避免环境变量干扰










