直接去掉其他用户(Others)对二进制程序的执行权限是限制非授权调用、防止横向扩散的关键一步,通过chmod 750或o-x实现,需配合SELinux/AppArmor策略与运行时监控形成纵深防御。

直接去掉其他用户(Others)对二进制程序的执行权限,是限制非授权调用、防止横向扩散的关键一步。它不改变程序功能,但能显著缩小攻击面——尤其在多用户环境或容器共享宿主机文件系统时效果明显。
Linux 文件权限层面的禁用操作
使用 chmod 命令移除 Others 的 x 权限是最直接的方式。核心原则是:保留 Owner 和 Group 的必要权限,仅剥离 World(即 Others)的执行权。
- 常见安全模式:将权限设为 750(Owner: rwx,Group: r-x,Others: ---)或 755 → 750(若原为 755)
- 执行命令:
chmod 750 /path/to/binary或更精准地chmod o-x /path/to/binary - 验证结果:
ls -l /path/to/binary应显示末三位为 ---,例如-rwxr-x--- - 注意:若该二进制需被系统服务(如 systemd)以非 root 用户启动,应确保该用户属于对应 Group,并已授相应读+执行权限
构建与分发阶段的自动化控制
靠人工 chmod 易遗漏或回退。应在交付流程中固化权限策略:
- Dockerfile 中明确设置:
RUN chmod 750 /usr/bin/myapp && chgrp appgroup /usr/bin/myapp - CI/CD 流水线增加检查步骤,例如用
find . -name "*.bin" -perm /o+x -print扫描并阻断含 Others 执行权的产物 - 若使用 RPM/DEB 包管理,通过 spec 或 control 文件声明
%attr(0750,root,appgroup),确保安装时自动生效
配合 SELinux/AppArmor 强化执行边界
仅改文件权限不够——恶意进程仍可能通过内存映射或 ptrace 绕过。需叠加强制访问控制:
- SELinux 下为二进制打上自定义 type,例如
chcon -t myapp_exec_t /usr/bin/myapp,再编写策略限制仅特定域可执行该 type - AppArmor profile 中显式声明
/usr/bin/myapp px,(仅允许执行),并禁止ptrace、mmap写入等危险操作 - 关键点:即使 Others 有 x 权限,策略也能阻止其实际执行;而禁用 Others x 权限 + 策略双控,形成纵深防御
运行时校验与告警机制
生产环境中权限可能被误改或篡改,需主动监控:
- 部署定时任务,用
find /opt/bin -type f -perm -o+x -print检测异常权限,触发企业微信/邮件告警 - 在启动脚本中加入校验逻辑:
if [ $(stat -c "%a" /usr/bin/myapp | cut -c3) = "1" ]; then echo "ERROR: Others execute bit set"; exit 1; fi - 结合 AIDE 或 inotifywait 对关键二进制目录做完整性监控,权限变更即上报

















