在交接文档时,除了核对备份,还有一项工作涉及部署账号 deploy 的私有资料。
我们先以当前 crow 用户的身份查看 deploy 的主目录:
crow@opsbox:~/work$ whoami
crow
crow@opsbox:~/work$ ls -l /home/deploy
total 4
drwxr-x--- 2 deploy deploy 4096 Sep 8 06:29 secret
crow@opsbox:~/work$ ls /home/deploy/secret
ls: cannot open directory '/home/deploy/secret': Permission denied
系统提示 Permission denied(权限不足)。接着使用 ls -ld 查看目录本身的权限配置:
crow@opsbox:~/work$ ls -ld /home/deploy/secret
drwxr-x--- 2 deploy deploy 4096 Sep 8 06:29 /home/deploy/secret
crow@opsbox:~/work$ id
uid=1001(crow) gid=1001(crow) groups=1001(crow),4(adm)
读懂 9 位权限字符
drwxr-x--- 并不是一串无意义的字符。它表示该目录对三类身份的权限:
- 第 1 位是文件类型:
d代表目录,-代表普通文件,l代表软链接; - 后面的 9 位字符分为三组,分别对应三类身份:
- 所有者权限(User / Owner,第 2-4 位):
rwx表示用户deploy拥有读、写、执行全部权限; - 所属组权限(Group,第 5-7 位):
r-x表示用户组deploy拥有读与执行权限; - 其他用户权限(Others,第 8-10 位):
---表示系统中的其余所有用户没有任何权限。
- 所有者权限(User / Owner,第 2-4 位):
从 id 输出可以看到,当前用户 crow 既不是 deploy,也不属于 deploy 组。因此,系统适用的是最后三位 ---,直接拒绝了访问请求。
文件与目录的 rwx 权限差异
| 权限符号 | 普通文件(File)的含义 | 目录(Directory)的含义 |
|---|---|---|
r(Read) | 允许读取文件内容(如 cat、less) | 允许列出目录包含的文件清单(如 ls) |
w(Write) | 允许修改文件内容 | 允许在目录内新建、删除或重命名文件 |
x(eXecute) | 允许作为程序或脚本执行 | 允许穿过/进入该目录(Traverse),访问其子文件 |
特别注意:想要读取某个目录下的文件,必须先拥有沿途所有父级目录的 x(进入通行)权限。
八进制数字权限与 chmod
Linux 常用三位八进制数字来表示权限(r=4, w=2, x=1):
rwx= 4 + 2 + 1 = 7(读、写、执行)rw-= 4 + 2 + 0 = 6(读写)r-x= 4 + 0 + 1 = 5(读、进入)r--= 4 + 0 + 0 = 4(只读)---= 0 + 0 + 0 = 0(无权限)
例如:
chmod 755 dir:所有者拥有全部权限(7),组与其他用户拥有读与进入权限(5);chmod 600 file:仅所有者拥有读写权限(6),其余所有人无任何权限(0)。

