命令与包管理65 条

chmod 权限管理

权限模型的核心命令:u/g/o 与 r/w/x、数字法 644/755/600;目录需要 x 才能进入,脚本要 x 才能执行。

信创系统运维速查系统更新于 2026-10-13

权限模型与 chmod

Linux 用三段权限描述访问控制:属主、属组、其它各有一组读、写、执行位。关键在于同一组权限位在文件与目录上含义不同:文件上的执行位表示可以运行,目录上的执行位表示可以进入和遍历,目录上的写权限表示可以创建、删除、改名其中的条目。除基本权限外还有特殊位,用数字前缀表示,分别用于提权执行、目录继承属组和目录内文件保护。理解这层语义,才能解释很多「权限看起来对但就是不行」的现象。

基本信息

数字法三位数字对应属主、属组、其它,读 4 写 2 执行 1
常用取值644 普通文件、755 目录与可执行文件、600 私密文件
符号法按主体增减权限,如给属主加执行、去掉组的写权限
特殊位前缀第四位表示提权执行、属组继承与目录内的删除保护
递归选项对整个目录树批量修改,使用前必须确认范围
查看方式长格式列表可同时看到权限、属主与属组

典型使用场景

  • 私钥保护:把密钥文件权限收到仅属主可读写,否则认证会被拒绝
  • 脚本授权:给部署脚本加执行权限,避免每次都用解释器调用
  • 目录开放读:共享目录给出遍历与读取权限,但不开放写
  • 敏感文件收敛:把含口令的配置收到仅属主可读
  • 清理过宽权限:去掉组或其它用户的写权限,防止被随意篡改
  • 排查访问失败:确认到底是哪一段权限缺失导致无法访问

典型用法

典型用法
chmod 600 ~/.ssh/id_ed25519          # 私钥仅属主可读写
chmod 644 /etc/app/app.conf          # 配置普通权限
chmod 755 /opt/app/start.sh          # 脚本可执行
chmod u+x deploy.sh                  # 符号法:给属主加执行
chmod g-w,o-rwx /data/share          # 去掉组写权限与其它用户全部权限
chmod 1777 /data/upload              # 加保护位:目录内仅属主可删自己的文件
ls -l /opt/app/start.sh              # 核对结果

权限位读法

权限位文件上的含义目录上的含义
读可以查看内容可以列出目录条目
写可以修改内容可以创建、删除、改名条目
执行可以运行可以进入与遍历
提权位以属主身份运行目录内新建文件继承属组
保护位通常无实际效果目录内仅属主可删除自己的文件
目录的写权限与执行权限要分开理解:只有写没有执行时,能看到条目名字却无法访问内容;只有执行没有读时,能按已知路径进入但列不出目录内容。上传目录常靠保护位让多用户共存,避免互相删除文件。
为图省事对目录树整体放开全部权限,会同时带来安全与合规问题:任何账号都能修改甚至替换程序文件。批量修改前先确认目标树里没有指向系统目录的软链接,避免顺着链接改到系统层,造成难以恢复的后果。

易错点

  • 对目录树递归放权时顺着软链接改到系统目录,影响范围远超预期
  • 把密钥或含口令配置的权限放宽,认证被拒绝或凭据泄露,属于典型高危操作
  • 只改文件不看属主与属组,权限位对了但归属不对,服务仍以无权限身份运行而失败
  • 忽略目录上执行位的含义,按文件思路只给读权限,结果无法进入目录

数据来源与参考

  • GNU coreutils chmod 手册
  • 最小权限实践
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌