必须先禁用kysec内核拦截(sudo setstatus -f kidoff),再用find命令分别对目录设755、文件设644、脚本单独设755,或用chmod -r设750/775,图形界面需勾选“应用到子文件夹和文件”,acl则执行sudo setfacl -r -m o::---。

您需要在银河麒麟系统中让一个文件夹及其全部子目录、文件都严格遵循同一套访问控制规则,防止同事误入项目资料、访客浏览共享目录,或确保敏感数据不被越级读取——此时必须启用递归式权限锁定,而非仅修改父目录。
先禁用KYSEC内核拦截(关键前置)
麒麟V10 2403及后续版本默认启用KYSEC内核级执行保护,它会直接拦截chmod、chown等系统调用,哪怕你是root用户也会报“权限不足”。【未执行此步,后续所有递归操作均无效】
打开终端,执行:sudo setstatus -f kidoff。
立即验证是否生效:运行getstatus | grep -i "kid protect",输出必须显示kid protect: off。若提示command not found,改用软模式:sudo setstatus softmode -p。
用find命令分别设置目录与文件权限(推荐生产环境)
这是最安全的递归锁定方式,避免把执行权限(x)错误赋予普通文件,导致安全隐患或服务异常。
第一步:为所有子目录设755权限(确保可进入、可列出):sudo find /path/to/folder -type d -exec chmod 755 {} \;
第二步:为所有普通文件设644权限(仅读写,无执行):sudo find /path/to/folder -type f -exec chmod 644 {} \;
第三步:若该文件夹含Shell脚本,单独赋予执行权:sudo find /path/to/folder -name "*.sh" -exec chmod 755 {} \;。这一步不能省略,否则脚本无法运行。
用chmod -R统一递归设置(适合开发调试)
操作快捷,但风险明确:所有内容(包括.txt、.log等)都会被赋予相同权限位,可能意外开放执行权限。
方法一:严格限制其他用户:sudo chmod -R 750 /path/to/folder,此时所有者全权、所属组可读可进、其他用户彻底拒绝。
方法二:开放组内协作:sudo chmod -R 775 /path/to/folder,所属组获得写权限,但其他用户仍不可写不可读。
【严禁使用chmod -R 777,任何用户都能删除修改内容,生产环境绝对禁止】
通过图形界面一键应用到全部子项
不熟悉终端的用户可直接在文件管理器中完成,适合教学演示或临时调整。
在文件管理器中右键目标文件夹→选择“属性”→切换到“权限”选项卡。
分别设置“所有者”“所属组”“其他用户”的读、写、执行状态——勾选即开启,取消即关闭。
务必勾选下方“应用到子文件夹和文件”复选框,否则权限只作用于当前文件夹,子项不受影响。
点击“确定”,系统弹出密码窗口时输入当前用户开机密码即可生效。
用ACL递归封锁“其他用户”访问(精准拦截)
当标准三元权限不够用,比如要彻底屏蔽非授权人员查看、进入、列出该文件夹及其全部内容时,ACL比chmod更精细。
第一步:确认文件系统支持ACL。执行:mount | grep "$(df . | tail -1 | awk '{print $1}')" | grep acl,有输出说明已就绪;若无,先运行:sudo tune2fs -o acl /dev/sdXN(替换XN为实际分区,如sda1)。
第二步:执行递归ACL封锁:sudo setfacl -R -m o::--- /path/to/folder。注意-R参数不可遗漏,否则仅作用于父目录。
第三步:验证效果:getfacl /path/to/folder | grep "other::",输出必须为other::---,否则权限未真正生效。











