shell脚本执行权限需遵循最小权限原则,优先选700或750,结合所有者与组归属设置,并确保父目录及引用文件权限合规。

给 Shell 脚本设执行权限,核心不是“加 x 就完事”,而是要匹配使用场景和最小权限原则。700 和 750 是两种常见且安全的选择,关键看谁需要运行、谁需要读取、谁完全不该碰。
先确认脚本归属和使用范围
执行权限必须结合所有者(user)和所属组(group)一起看才有效。比如:
- 700(rwx------):仅所有者可读、写、执行,适合私有工具、含敏感信息的运维脚本(如数据库备份脚本、密钥操作脚本);
- 750(rwxr-x---):所有者全权,同组用户可读可执行但不可修改,适合团队协作场景(如部署脚本由 devops 组统一维护并执行)。
别直接用 chmod 750 script.sh 就完事——如果脚本当前属于 root,而你希望 devops 用户能执行它,得先用 chown devops:devops script.sh 或 chown :devops script.sh 把组设对。
用符号法精准控制,避免误开权限
数字法快捷,但符号法更可控、不易出错。推荐日常使用:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 只给所有者执行权:
chmod u+x script.sh(后续再配合chmod go-rw script.sh清掉无关权限); - 设为 750:
chmod u=rwx,g=rx,o= script.sh—— 明确指定每类用户的全部权限,不依赖默认状态; - 批量处理时加
-v查看变更:chmod -v 750 *.sh,防止误改其他文件。
注意目录权限和执行链路
脚本能运行,不只是脚本本身要有 x 权限,它所在的父目录也必须有执行(x)权限,否则连路径都进不去。例如:
-
/opt/deploy/目录若权限是 755(drwxr-xr-x),没问题; - 但如果设成 750(drwxr-x---),而执行用户不在该目录所属组里,就会报
Permission denied—— 这时要么调目录组,要么放宽目录权限(如 755),但绝不建议设 777。
另外,脚本中若调用其他脚本或配置文件,那些被引用的文件也需对应权限(如配置文件通常只需 600 或 640,不能有 x)。
上线前做最小权限验证
配完权限后,切到目标用户(非 root)实际测试:
- 用
su -s /bin/bash -c "./script.sh" target_user模拟执行; - 用
ls -l script.sh确认输出确实是-rwxr-x---或-rwx------; - 检查是否意外开放了 group 或 other 的写权限(比如误输成 760 就多了 group 写权,风险陡增)。
安全不是加功能,而是去掉一切不必要的访问路径。










