chmod — 修改文件权限

chmod 用于修改文件和目录的权限。

命令说明

Linux 使用权限位控制对文件和目录的访问。每个文件有三组权限:所有者(user)、所属组(group)、其他人(other),每组包含读(read=4)、写(write=2)、执行(execute=1)三种权限。chmod 使用符号模式(如 u+x)或数字模式(如 755)修改权限。

应用场景

  • 让脚本变得可执行
  • 保护敏感配置文件
  • 开放共享目录
  • 设置安全的默认权限
  • 递归修改目录权限

常用示例

示例 1:赋予执行权限

bash
复制代码
chmod +x script.sh
ls -l script.sh
plaintext
复制代码
-rwxr-xr-x 1 alice staff 100 Aug 19 10:00 script.sh

示例 2:设置精确权限

bash
复制代码
chmod 755 myprogram

(所有者:读写执行,组:读执行,其他:读执行)

示例 3:移除所有执行权限

bash
复制代码
chmod -x myprogram

示例 4:仅所有者可读写

bash
复制代码
chmod 600 sensitive.key

示例 5:递归设置目录权限

bash
复制代码
chmod -R 755 webroot/

示例 6:使用符号模式添加权限

bash
复制代码
chmod u+w file.txt      # 所有者增加写权限
chmod g+r file.txt      # 组增加读权限
chmod o+x file.txt      # 其他人增加执行权限

示例 7:设置 setuid 位

bash
复制代码
chmod 4755 program

权限数字表示

数字 权限 说明
0 --- 无权限
1 --x 执行
2 -w-
3 -wx 写+执行
4 r--
5 r-x 读+执行
6 rw- 读+写
7 rwx 读+写+执行

特殊权限位

数字 符号 说明
4 s (user) setuid — 以文件所有者身份执行
2 s (group) setgid — 以文件所属组身份执行
1 t sticky bit — 只有所有者能删除文件

help 参数详解

参数 长参数 说明
-R --recursive 递归修改
-v --verbose 显示每个操作
-f --silent --quiet 不显示错误信息
-c --changes 只显示发生变化的操作
--reference=FILE 使用参考文件的权限
u+w 所有者增加写权限
g-r 组移除读权限
o=x 其他人设置为只有执行权限
a+rx 所有人增加读和执行权限
755 数字模式设置权限