文件&文件夹权限操作
总结
- 权限分三组:属主(u)、属组(g)、其他用户(o),每组三位:r=4、w=2、x=1
- chmod 两种写法:符号模式(
u+x)和数字模式(755) - 目录的 x 权限代表"可进入",没有 x 就无法 cd 进去,和文件的 x 含义不同
- chown 改属主/属组,chgrp 只改属组,批量操作加
-R递归
1. 权限结构

ls -l 输出的第一列共 10 位:
- rwx r-x r--
│ │ │ │
│ │ │ └── 其他用户(o)权限
│ │ └─────── 属组(g)权限
│ └──────────── 属主(u)权限
└──────────────── 文件类型
文件类型:
| 符号 | 类型 |
|---|---|
- |
普通文件 |
d |
目录 |
l |
软链接 |
c |
字符设备 |
b |
块设备 |
权限位含义:
| 符号 | 数字 | 对文件 | 对目录 |
|---|---|---|---|
r |
4 | 可读取文件内容 | 可列出目录内容(ls) |
w |
2 | 可修改文件内容 | 可在目录内创建/删除文件 |
x |
1 | 可执行 | 可进入目录(cd) |
- |
0 | 无权限 | 无权限 |
2. chmod 修改权限
2.1 符号模式
# 格式:chmod [ugoa][+-=][rwx] 文件或目录
# u=属主 g=属组 o=其他用户 a=所有(等同 ugo)
# + 添加 - 移除 = 设置为指定权限
# 给属主添加执行权限
chmod u+x script.sh
# 移除属组的写权限
chmod g-w file.txt
# 给所有人添加读权限
chmod a+r file.txt
# 设置属主 rwx,属组和其他用户只读
chmod u=rwx,go=r file.txt
2.2 数字模式
每组权限用三位数字之和表示:r=4, w=2, x=1
# 755:属主 rwx(7),属组 r-x(5),其他 r-x(5)
chmod 755 script.sh
# 644:属主 rw-(6),属组 r--(4),其他 r--(4)
chmod 644 config.txt
# 600:只有属主可读写,其他人无任何权限(私钥文件常用)
chmod 600 ~/.ssh/id_rsa
# 777:所有人可读写执行(不推荐,权限过大)
chmod 777 file
常用权限速查:
| 数字 | 权限 | 适用场景 |
|---|---|---|
755 |
rwxr-xr-x |
可执行脚本、目录 |
644 |
rw-r--r-- |
普通文件、配置文件 |
600 |
rw------- |
私钥、密码文件 |
700 |
rwx------ |
私有脚本 |
777 |
rwxrwxrwx |
尽量避免 |
2.3 递归修改
# 递归修改目录及其下所有文件的权限
chmod -R 755 /opt/myapp
# 只修改目录权限,不改文件(用 find 配合)
find /opt/myapp -type d -exec chmod 755 {} \;
# 只修改文件权限,不改目录
find /opt/myapp -type f -exec chmod 644 {} \;
3. chown 修改属主和属组
# 修改属主
chown user file.txt
# 修改属主和属组
chown user:group file.txt
# 只修改属组(等同 chgrp)
chown :group file.txt
# 递归修改目录下所有文件
chown -R user:group /opt/myapp
# 查看文件的属主属组
ls -l file.txt
stat file.txt
4. 特殊权限
4.1 SUID(Set User ID)
文件执行时以属主身份运行,而不是执行者身份。passwd 命令就用了 SUID,普通用户执行时以 root 身份修改 /etc/shadow。
chmod u+s /usr/bin/program
# 数字模式:在三位数字前加 4
chmod 4755 /usr/bin/program
显示为 rws(属主执行位变成 s)。
4.2 SGID(Set Group ID)
目录设置 SGID 后,在该目录下创建的文件自动继承目录的属组,适合团队共享目录。
chmod g+s /data/shared
chmod 2775 /data/shared
4.3 Sticky Bit
目录设置 Sticky Bit 后,只有文件的属主才能删除自己的文件,其他用户无法删除。/tmp 目录就是这样设置的。
chmod +t /data/shared
chmod 1777 /tmp
显示为 rwt(其他用户执行位变成 t)。
5. 查看权限
# 查看文件权限
ls -l file.txt
# 查看目录权限(不列出目录内容)
ls -ld /opt/myapp
# 查看详细信息(包含数字权限)
stat file.txt