数字权限速查
r=4 w=2 x=1
rwx = 4+2+1 = 7
rw- = 4+2 = 6
r-x = 4+1 = 5
r-- = 4 = 4
-wx = 2+1 = 3
-w- = 2 = 2
--x = 1 = 1
--- = 0 = 0
三位数 = 所有者 / 组 / 其他 各一位:
| 数字 | 含义 | 常见用途 |
|---|---|---|
777 |
所有人全权限 | ⚠ 几乎从不该用 |
755 |
所有者全权限,其他人 r-x | 可执行文件、目录 |
750 |
所有者全,组 r-x,其他人无 | 私密目录开放给组 |
700 |
仅所有者全权限 | .ssh 目录 |
644 |
所有者读写,其他人只读 | 普通文件 |
640 |
所有者读写,组只读,其他人无 | 半私密文件 |
600 |
仅所有者读写 | 私钥、敏感配置 |
chmod 实战
chmod 755 script.sh # rwxr-xr-x
chmod 644 readme.txt # rw-r--r--
chmod 600 ~/.ssh/id_rsa # rw-------
chmod 700 ~/.ssh # rwx------
chmod -R 755 myapp/ # 递归
目录权限的特殊性
r 对目录 = 能 ls 看到里面
w 对目录 = 能创建 / 删除 / 改名里面的文件
x 对目录 = 能 cd 进去 / 能访问里面的文件
⚠ 注意没有 x 但有 r 的目录:能 ls 看名字,但点不开任何文件。
⚠ 注意有 w 没 x 的目录:知道里面文件名也访问不了。
chown:改所有者
sudo chown wadely file.txt # 改所有者
sudo chown wadely:dev file.txt # 同时改所有者和组
sudo chown :dev file.txt # 只改组
sudo chown -R wadely:dev myapp/ # 递归改
chgrp:只改组(chown 的子集)
sudo chgrp dev file.txt
sudo chgrp -R dev myapp/
通常直接用 chown :dev 替代。
umask:默认权限
新建文件 / 目录的默认权限由 umask 决定:
umask
# 0022
# 文件默认权限 = 666 - umask = 644
# 目录默认权限 = 777 - umask = 755
改 umask:
umask 027 # 文件 → 640,目录 → 750(更严格)
写进 ~/.bashrc 或 /etc/profile 持久化。
实战:项目目录权限
# 个人项目(只自己用)
chmod -R 700 ~/private-project
# 团队项目(团队读写)
sudo chown -R :team /srv/team-project
sudo chmod -R 2775 /srv/team-project # 2 = SGID(新文件归 team)
# Web 资源(nginx 用户能读)
sudo chown -R www-data:www-data /var/www/site
sudo chmod -R 755 /var/www/site
检查权限的陷阱
# stat 给详细信息
stat file.txt
# namei 显示路径上每层权限
namei -l /home/wadely/project/file.txt
# 排查 "我有权限为什么访问不了" 的神器
下一篇:特殊权限(SUID / SGID / Sticky Bit)。