chmod(change mode的缩写)命令用于修改文件或目录的权限。Linux系统中的每个文件或目录都有三组权限:
文件或目录的创建者
文件或目录所属的用户组
系统中的其他所有用户
| 权限 | 符号表示 | 数字表示 | 说明 |
|---|---|---|---|
| 读取 | r | 4 | 允许查看文件内容或目录列表 |
| 写入 | w | 2 | 允许修改文件内容或在目录中创建/删除文件 |
| 执行 | x | 1 | 允许执行文件或进入目录 |
chmod [选项] 模式 文件...
chmod命令支持两种模式表示方法:
[ugoa][[+-=][rwxXst]]
| 符号 | 说明 |
|---|---|
| u | 所有者 (user) |
| g | 组用户 (group) |
| o | 其他用户 (others) |
| a | 所有用户 (all),等同于 ugo |
| + | 添加权限 |
| - | 移除权限 |
| = | 设置精确权限 |
使用三位八进制数表示权限:
chmod 755 filename
其中:
| 选项 | 说明 |
|---|---|
| -R, --recursive | 递归处理,修改目录及其子目录下所有文件的权限 |
| -v, --verbose | 显示详细操作信息 |
| -c, --changes | 类似 -v,但只在有变更时显示 |
| -f, --silent, --quiet | 不显示错误信息 |
| --reference=RFILE | 使用参考文件的权限模式 |
使用 ls -l 命令查看文件权限:
ls -l filename.txt
-rw-r--r-- 1 user group 1024 Jan 1 10:00 filename.txt
权限说明:-rw-r--r--
-:文件类型(- 表示普通文件,d 表示目录)rw-:所有者权限(读写)r--:组用户权限(只读)r--:其他用户权限(只读)为所有者添加执行权限:
chmod u+x script.sh
为所有用户设置读写权限:
chmod a=rw file.txt
设置权限为 755(所有者读写执行,组用户和其他用户读执行):
chmod 755 script.sh
计算方式:
修改目录及其所有子目录和文件的权限:
chmod -R 755 my_directory/
从组用户和其他用户移除写权限:
chmod go-w file.txt
设置SUID(Set User ID)权限:
chmod u+s program
或使用数字模式:
chmod 4755 program
将目标文件的权限设置为与参考文件相同:
chmod --reference=source.txt target.txt
| 权限 | 数字表示 | 说明 |
|---|---|---|
| -rw------- | 600 | 所有者可读写,其他用户无权限 |
| -rw-r--r-- | 644 | 所有者可读写,其他用户只读 |
| -rwx------ | 700 | 所有者可读写执行,其他用户无权限 |
| -rwxr-xr-x | 755 | 所有者可读写执行,其他用户可读执行 |
| -rwx--x--x | 711 | 所有者可读写执行,其他用户可执行 |
| drwx------ | 700 | 目录:所有者可读写执行,其他用户无权限 |
| drwxr-xr-x | 755 | 目录:所有者可读写执行,其他用户可读执行 |
chmod -R 777,这会给予所有用户完全权限,存在安全风险