chmod 命令的使用
chmod (Change Mode) 是 Linux 和 Unix 系统中用于修改文件或目录权限的命令。它是系统管理中最基础也最重要的命令之一。
以下是 chmod 命令的详细使用指南,分为数字法(最常用)和符号法(更直观)。
1. 基础概念:权限与用户
在 Linux 中,权限分为三类,用户分为三组。
三种权限 (Mode)
| 符号 | 含义 | 数字表示 | 对文件的作用 | 对目录的作用 |
|---|---|---|---|---|
| r | Read (读) | 4 | 可以查看文件内容 | 可以列出目录中的文件 (ls) |
| w | Write (写) | 2 | 可以修改文件内容 | 可以创建、删除目录中的文件 |
| x | Execute (执行) | 1 | 可以运行该文件(脚本/程序) | 可以进入该目录 (cd) |
| - | 无权限 | 0 | 禁止操作 | 禁止操作 |
三组用户 (Who)
- u (User/Owner):文件所有者。
- g (Group):文件所属组的用户。
- o (Others):其他所有人。
- a (All):所有人(u + g + o)。
2. 方法一:数字法 (Octal Mode) —— 最常用
这是最快设置权限的方法。你只需要做简单的加法。
公式: r=4, w=2, x=1
你需要为 User、Group、Others 分别计算这三个数字的和。
常用组合示例:
chmod 777 file(4+2+1, 4+2+1, 4+2+1)- 含义: 所有人都有读、写、执行权限。
- 注意:非常不安全,慎用!
chmod 755 file(4+2+1, 4+0+1, 4+0+1)- 含义: 所有者可读写执行;其他人只能读和执行(不能修改)。
- 场景:网站目录、脚本文件。
chmod 644 file(4+2+0, 4+0+0, 4+0+0)- 含义: 所有者可读写;其他人只读。
- 场景:普通的文本文件、配置文件。
chmod 600 file(4+2+0, 0+0+0, 0+0+0)- 含义: 只有所有者可读写;其他人无任何权限。
- 场景:SSH 私钥 (
id_rsa)、敏感数据。
语法:
bash
chmod 755 myscript.sh
3. 方法二:符号法 (Symbolic Mode) —— 更直观
当你只想修改某一项权限,而不想重新计算所有数字时,这种方法很好用。
操作符:
+:增加权限-:移除权限=:设置为特定权限(覆盖原有权限)
示例:
给所有人添加执行权限 (常用于脚本):
bashchmod +x script.sh # 等同于 chmod a+x script.sh给所有者增加写权限:
bashchmod u+w file.txt移除组和其他人的写权限:
bashchmod go-w file.txt同时设置不同权限 (用逗号分隔):
bash# 所有者读写执行,组只读,其他人无权限 chmod u=rwx,g=r,o= file.txt
4. 递归修改 (重要选项)
如果你想修改一个目录及其内部所有文件和子目录的权限,必须使用 -R (Recursive) 参数。
语法:
bash
chmod -R [权限] [目录]
示例:
将 www 目录下的所有文件权限设置为 755:
bash
chmod -R 755 /var/www/html
5. 如何查看权限?
使用 ls -l 命令查看。
bash
$ ls -l myscript.sh
-rwxr-xr-- 1 user group 0 Jan 1 12:00 myscript.sh
解读 -rwxr-xr--:
- 第一个字符
-表示这是一个文件 (如果是d则为目录)。 - 第一组
rwx(7):所有者有读、写、执行权限。 - 第二组
r-x(5):组用户有读、执行权限。 - 第三组
r--(4):其他人只有读权限。 - 所以这个文件的权限是 754。
总结速查表
| 场景 | 推荐命令 | 说明 |
|---|---|---|
| 让脚本可运行 | chmod +x file.sh |
最常用的操作 |
| 标准文件权限 | chmod 644 file.txt |
只有我可以改,别人只能看 |
| 标准文件夹权限 | chmod 755 dir/ |
只有我可以改,别人能进入和查看 |
| 最高机密文件 | chmod 600 secret.pem |
只有我可以读写,别人完全看不见 |
| 修改整个文件夹 | chmod -R 755 dir/ |
递归应用到内部所有文件 |
右滑查看面试常问