"Change mode" 的缩写,是一个用于修改文件或目录权限的命令行工具。
该命令通过调整文件的读(r)、写(w)、执行(x)权限,控制不同用户(所有者、所属组、其他用户)对文件的访问权限,是Linux系统中文件安全管理的核心命令。
chmod [选项] <权限模式> <文件/目录1> <文件/目录2> ...权限模式有两种表示方式:
符号模式:通过
u(所有者)、g(所属组)、o(其他用户)、a(所有用户)结合+(添加)、-(移除)、=(设置)和r(读)、w(写)、x(执行)表示,例如u+x。数字模式:用3位数字(0-7)分别表示所有者、所属组、其他用户的权限,其中
r=4、w=2、x=1,例如755表示rwxr-xr-x。
常用选项
-R或--recursive:"recursive",递归修改目录及其子目录中所有文件的权限,例如chmod -R 755 docs/递归设置docs/目录下所有内容的权限。-f或--silent:"force",强制操作,不显示错误信息(如忽略无法修改的文件),例如chmod -f 644 *.txt强制修改文本文件权限且不报错。-v或--verbose:"verbose",显示权限修改的详细过程,例如chmod -v u+x script.sh输出mode of 'script.sh' changed from 0644 (rw-r--r--) to 0744 (rwxr--r--)。--reference=<参考文件>:"reference",以参考文件的权限为标准修改目标文件权限,例如chmod --reference=template.conf new.conf使new.conf与template.conf权限一致。
权限模式说明
参考示例
示例1:为脚本添加执行权限 执行
chmod u+x install.sh,为所有者(u)添加(+)执行权限(x),使install.sh可直接运行(无需sh install.sh)。示例2:设置文件为只读(除所有者外) 执行
chmod 644 report.pdf,所有者可读可写(6=4+2),组和其他用户只读(4),适合共享但不允许修改的文档。示例3:递归设置目录及内容权限 执行
chmod -R 755 /var/www/html/,递归修改网站目录及其所有子文件、子目录的权限,确保Web服务器可读取执行,所有者可修改。示例4:移除组和其他用户的写权限 执行
chmod go-w data.csv,从组(g)和其他用户(o)中移除(-)写权限(w),防止他人修改重要数据文件。示例5:复制参考文件的权限 执行
chmod --reference=config.example config.ini,使config.ini拥有与config.example相同的权限,确保配置文件权限一致。示例6:为所有用户添加读权限 执行
chmod a+r shared.txt,为所有用户(a)添加读权限(r),使文件可被系统中所有用户查看。示例7:在脚本中批量设置权限 脚本中执行:
# 为所有.sh文件添加执行权限 chmod u+x *.sh # 为数据文件设置严格权限 chmod 600 *.dat # 为日志目录设置递归权限 chmod -R 750 logs/批量标准化文件权限,适合部署脚本中统一权限配置。
示例8:禁止所有用户执行某文件 执行
chmod a-x dangerous.sh,移除所有用户的执行权限,防止误运行危险脚本。
注意:
目录必须拥有执行权限(
x)才能被进入(cd),即使有读权限也无法进入无执行权限的目录。修改权限需满足:要么是文件所有者,要么拥有
root权限(使用sudo)。谨慎使用
chmod -R 777(所有用户有全部权限),可能导致严重安全风险(如被恶意修改文件)。