Linux 文件权限:chmod、chown、umask
Linux 权限看起来像一串密码:
-rwxr-xr--
其实它非常有规律。你只要理解“谁可以做什么”,就能读懂大部分权限问题。
三类对象
Linux 文件权限面向三类对象:
- 所有者 user:文件属于哪个用户。
- 所属组 group:文件属于哪个用户组。
- 其他人 others:不是所有者,也不在所属组中的其他用户。
运行:
ls -l
输出类似:
-rw-r--r-- 1 rudy developers 120 Jul 24 10:00 notes.txt
这里 rudy 是所有者,developers 是所属组。
rwx 分别代表什么
权限由三个字母表示:
| 权限 | 文件上的含义 | 目录上的含义 |
|---|---|---|
r | 读取文件内容 | 查看目录中的文件名 |
w | 修改文件内容 | 在目录中创建、删除、重命名文件 |
x | 执行文件 | 进入目录 |
目录的 x 很容易被忽略。如果一个目录没有执行权限,你即使能看到名字,也可能无法进入或访问其中的文件。
看懂权限字符串
-rwxr-xr--
可以拆成四部分:
- rwx r-x r--
- 第一位:文件类型,
-表示普通文件,d表示目录,l表示符号链接。 - 第一组三位:所有者权限。
- 第二组三位:所属组权限。
- 第三组三位:其他人权限。
上面的例子表示:
- 所有者可以读、写、执行。
- 所属组可以读、执行。
- 其他人只能读。
chmod:修改权限
chmod 可以修改权限。
符号写法比较直观:
chmod u+x script.sh
chmod g-w notes.txt
chmod o-r secret.txt
含义分别是:
- 给所有者增加执行权限。
- 去掉所属组的写权限。
- 去掉其他人的读权限。
也可以一次设置:
chmod u=rw,g=r,o= notes.txt