一、基础选项说明
1. 核心操作选项
选项 功能说明 使用示例
-c / --changes 仅显示权限发生变化的文件信息(与 -v 类似但更精简) chmod -c 755 file.txt
-f / --silent 静默模式,忽略错误信息(适用于脚本批量操作) chmod -f o+w *.log
-R / --recursive 递归修改目录及其子目录、文件的权限 chmod -R 755 /var/www
-v / --verbose 显示所有操作的详细过程 chmod -v u+x script.sh
–reference=<文件> 将目标文件/目录的权限设置为与参考文件相同 chmod --reference=source.txt target.txt
2. 辅助选项
选项 功能说明
–help 查看命令帮助文档
–version 显示 chmod 版本信息
二、权限模式详解
1. 符号模式(Symbolic Mode)
语法:[用户类型][操作符][权限]
用户类型:u(所有者)、g(组)、o(其他用户)、a(所有用户)
操作符:+(添加)、-(移除)、=(精确设置并覆盖原有权限)
权限:r(读)、w(写)、x(执行)
示例:
bash
#为所有者添加执行权限,移除组的写权限
chmod u+x,g-w file.txt
#设置其他人仅可读
chmod o=r data/
2. 数字模式(Numeric Mode)
规则:三位或四位八进制数(如 755 或 4755),分别对应 用户-组-其他 的权限组合
r=4, w=2, x=1,累加后得到权限值:
7(rwx)、6(rw-)、5(r-x)
示例:
bash
用户:rwx,组:r-x,其他:r-x
chmod 755 /var/www
包含 SUID(4)、SGID(2)、粘滞位(1)的特殊权限
chmod 4755 /usr/bin/special_tool
三、特殊权限选项
1. SUID(Set User ID)
作用:允许普通用户以文件所有者的权限执行程序(如 /usr/bin/passwd)
设置方式:
bash
chmod u+s file # 符号模式
chmod 4xxx file # 数字模式(如 4755)
2. SGID(Set Group ID)
作用:目录下新建文件继承父目录的组权限;文件执行时以所属组权限运行
设置方式:
bash
chmod g+s directory/
chmod 2xxx directory # 如 2750
3. 粘滞位(Sticky Bit)
作用:仅允许文件所有者或目录所有者删除文件(常见于 /tmp 目录)
设置方式:
bash
chmod o+t /tmp
chmod 1xxx directory # 如 1777
四、常见场景与最佳实践
目录与文件权限差异:
目录需 x 权限才能进入(cd),文件需 x 权限才能执行。
示例:chmod 755 dir/(目录) vs chmod 644 file(文件)。
递归修改权限:
bash
#递归设置目录及子文件为所有者可读写,其他用户只读
chmod -R u=rw,go=r /backup
权限冲突处理:
若权限未生效,检查 ACL(访问控制列表):
bash
getfacl file.txt # 查看详细权限
setfacl -b file.txt # 清除 ACL
安全建议:
避免滥用 777 权限(所有人可读写执行),优先遵循最小权限原则。
五、综合示例
bash
递归设置目录权限(用户:rwx,组:rx,其他:无权限)
chmod -R 750 /opt/app
复制参考文件的权限到目标
chmod --reference=template.conf new.conf
设置 SUID + 标准权限
chmod u+s,755 /usr/local/bin/custom_script