chmod 用于修改文件和目录的权限。
Linux 使用权限位控制对文件和目录的访问。每个文件有三组权限:所有者(user)、所属组(group)、其他人(other),每组包含读(read=4)、写(write=2)、执行(execute=1)三种权限。chmod 使用符号模式(如 u+x)或数字模式(如 755)修改权限。
示例 1:赋予执行权限
chmod +x script.sh
ls -l script.sh
-rwxr-xr-x 1 alice staff 100 Aug 19 10:00 script.sh
示例 2:设置精确权限
chmod 755 myprogram
(所有者:读写执行,组:读执行,其他:读执行)
示例 3:移除所有执行权限
chmod -x myprogram
示例 4:仅所有者可读写
chmod 600 sensitive.key
示例 5:递归设置目录权限
chmod -R 755 webroot/
示例 6:使用符号模式添加权限
chmod u+w file.txt # 所有者增加写权限
chmod g+r file.txt # 组增加读权限
chmod o+x file.txt # 其他人增加执行权限
示例 7:设置 setuid 位
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 — 只有所有者能删除文件 |
| 参数 | 长参数 | 说明 |
|---|---|---|
-R |
--recursive |
递归修改 |
-v |
--verbose |
显示每个操作 |
-f |
--silent --quiet |
不显示错误信息 |
-c |
--changes |
只显示发生变化的操作 |
--reference=FILE |
使用参考文件的权限 | |
u+w |
所有者增加写权限 | |
g-r |
组移除读权限 | |
o=x |
其他人设置为只有执行权限 | |
a+rx |
所有人增加读和执行权限 | |
755 |
数字模式设置权限 |