数字权限速查

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)。