一、基础权限修改选项
**-R / --recursive**
功能:递归修改目录及其子目录下所有文件/目录的权限
示例:
bash
chmod -R 755 project/ # 递归设置目录权限
**-v / --verbose**
功能:显示权限修改的详细过程(无论是否成功)
示例:
bash
chmod -v u+x script.sh # 显示修改信息
**-c / --changes**
功能:仅显示权限实际发生改变的文件
示例:
bash
chmod -c g-w data.txt # 仅输出修改的文件
**-f / --quiet**
功能:禁止显示错误信息(如权限不足)
示例:
bash
chmod -f 777 /root/ # 静默模式,即使失败也不报错
二、权限模式设定
1. 符号模式(推荐)
语法:[u/g/o/a] [+/-/=] [r/w/x]
示例:
bash
chmod u+x script.sh # 为所有者添加执行权限1,2,3,5,8
chmod g-w,o=r data/ # 移除组写权限,其他用户仅读1,3,7
chmod a=rwx file.txt # 所有用户均为读写执行1,5,8
2. 数字模式
规则:三位八进制数(如 755)或四位(含特殊权限)
示例:
bash
chmod 644 file.txt # 所有者读写,其他用户仅读2,3,5,8
chmod 4755 /usr/bin/su # 设置suid权限(等价于 chmod u+s
)1,6,8
三、特殊权限控制
**-s / --setuid**
功能:设置文件执行时以所有者权限运行(如 /usr/bin/passwd)
示例:
bash
chmod u+s script.sh # 仅限符号模式
**-t / --sticky**
功能:设置目录的粘滞位(仅所有者或root可删除文件)
示例:
bash
chmod +t /tmp/ # 保护临时文件
**–reference=FILE**
功能:将目标文件权限设置为参考文件的权限
示例:
bash
chmod --reference=template.txt newfile.txt # 复制权限
四、高级功能
**-h / --no-dereference**
功能:仅修改符号链接本身权限,而非目标文件
示例:
bash
chmod -h 755 link.txt # 修改链接权限而非实际文件
**–preserve-root**
功能:禁止对根目录 / 递归操作(默认启用)
示例:
bash
chmod -R 777 / # 正常执行会报错,需加 --preserve-root
五、权限模型解析
字段 含义 符号模式示例 数字模式示例
所有者(u) 文件创建者的权限 u=rwx 7
所属组(g) 文件所属组的权限 g=r-x 5
其他(o) 其他用户的权限 o=r-- 4
特殊权限 suid(s)、sgid(g)、粘滞位(t) u+s 4755
六、安全注意事项
避免危险权限:
禁用 777(所有权限开放)
系统文件默认权限应保持(如 /etc/passwd 为 644)
递归操作谨慎:
使用 -R 前备份重要目录
示例:chmod -R 755 /var/log/ 可能影响日志服务
特殊权限风险:
suid 可能被恶意利用(如 chmod u+s /bin/bash)
粘滞位 仅适用于临时目录(如 /tmp)
引用说明
基础选项与示例:
特殊权限与安全建议:
完整手册可通过 man chmod 查看。