麒麟系统需启用ACL实现精细化权限控制:先确认文件系统挂载时含acl参数,再用setfacl为用户/组授权,支持递归应用、禁止其他用户访问及设置默认ACL以自动继承权限。

您需要在麒麟操作系统中为特定用户或组单独授予对某个文件夹的读、写、执行权限,而不改变原有所有者/所属组权限结构,比如让张三能编辑、李四只能查看、王五彻底禁止访问——这就必须启用ACL(访问控制列表)机制。
确认文件系统已启用ACL支持
ACL功能依赖底层ext4/xfs文件系统挂载时启用acl参数,未启用会导致setfacl命令直接报错“Operation not supported”。
执行df .获取当前所在分区设备路径,例如/dev/sda1。
运行mount | grep "$(df . | tail -1 | awk '{print $1}')" | grep acl,若输出中含acl字样,则已就绪;若无输出,需执行sudo mount -o remount,acl /(将/替换为实际挂载点,如/home)。
【注意:remount操作会短暂影响该挂载点下所有I/O,建议避开业务高峰期执行】
为单个用户设置ACL权限
该方法适用于服务账户、临时协作人员等需独立授权的场景,不干扰原属主与属组权限。
第一步:执行sudo setfacl -m u:zhangsan:rwx /path/to/folder,授予张三对该文件夹的完整控制权。
第二步:若仅需读写权限且明确禁用执行位(避免误执行脚本),改用sudo setfacl -m u:lisix:rw- /path/to/folder。
第三步:验证是否生效:运行getfacl /path/to/folder,检查输出中是否存在user:zhangsan:rwx和user:lisix:rw-条目,且mask字段显示有效权限边界。
为用户组设置ACL并递归应用
当多个用户需共享同一套访问策略时,通过组级ACL可大幅降低维护成本。
执行sudo setfacl -m g:devteam:r-x /path/to/folder,授予devteam组读取与进入目录权限。
若该组内部分成员需额外写入能力,可再叠加用户级ACL,无需调整组权限。
对现有全部子项同步应用此规则:sudo setfacl -R -m g:devteam:r-x /path/to/folder。这一步会遍历所有子目录和文件,耗时取决于数据量大小。
【重要:-R参数不可逆,执行前请确认路径准确无误】
禁止其他用户访问该文件夹
方法一:直接清空other权限位
执行sudo setfacl -m o::--- /path/to/folder,使非所有者、非命名用户、非所属组成员完全无法列出、进入或读取该目录内容。
方法二:结合chmod基础权限加固
先运行sudo chmod 700 /path/to/folder,确保other位本身为0;再用ACL补充特定用户权限,形成双重保障。
验证效果:切换至普通用户账号,执行ls /path/to/folder,应提示Permission denied。
设置默认ACL确保新建文件自动继承
仅设置当前目录ACL,新创建的文件仍按umask生成权限,无法自动获得指定用户或组的访问权。
为目录添加默认ACL:sudo setfacl -m d:u:zhangsan:rwx /path/to/folder,其中d:前缀表示“default”。
同样为组设置默认权限:sudo setfacl -m d:g:devteam:r-x /path/to/folder。
此后在该目录下新建的任何文件或子目录,都会自动继承这些默认ACL规则,无需手动重复配置。

















