banner
约 1,200 字
4 分钟

Linux 文件权限教程:chmod 与 chown 一次搞懂

摘要

遇到 Permission denied 是每个 Linux 用户的必修课。本教程依据 GNU coreutils 官方手册,讲解 ls -l 权限字符串的含义、rwx 与数字权限的对应关系、chmod 数字法与符号法、chown 修改所有者、umask 默认权限,以及私钥 600、网站目录 755 等常见场景。

Linux 文件权限教程:chmod 与 chown 一次搞懂

在 Linux 上执行脚本时遇到 Permission denied,几乎是每个人都会撞上的第一课。这背后就是 Linux 的文件权限机制。本教程依据 GNU coreutils 官方手册整理,讲清楚 ls -l 输出的含义,以及 chmod、chown 的用法。

一、看懂权限字符串

执行 ls -l 会看到类似输出:

纯文本
-rwxr-xr-- 1 kunkun users 4096 Aug 30 10:00 script.sh

开头 10 个字符就是权限信息,拆开看:

  • 第 1 位:文件类型(- 普通文件,d 目录,l 软链接)

  • 第 2-4 位:**所有者(user)**权限:rwx

  • 第 5-7 位:**所属组(group)**权限:r-x

  • 第 8-10 位:**其他人(others)**权限:r--

三种基本权限:

字母

数字

对文件

对目录

r

4

读取内容

列出文件名

w

2

修改内容

新建/删除文件

x

1

执行程序

进入目录

二、chmod 修改权限

数字法:每组权限是 r+w+x 的和。rwxr-xr-- = 754。

bash
chmod 755 script.sh    # rwxr-xr-x:自己可执行,别人可读可进
chmod 644 file.txt     # rw-r--r--:普通文件最常见权限
chmod 600 id_rsa       # rw-------:私钥只允许自己读
chmod +x script.sh     # 给所有人加执行权限

符号法u 所有者、g 组、o 其他、a 全部,配合 + 添加、- 移除、= 设置:

bash
chmod u+x script.sh    # 只给所有者加执行权限
chmod go-w file.txt    # 移除组和其他人的写权限
chmod a-r secret.txt   # 所有人都不可读

递归修改目录及其下所有内容,加 -R

bash
chmod -R 755 /var/www/html

三、chown 修改所有者

bash
sudo chown kunkun file.txt             # 改所有者
sudo chown kunkun:users file.txt       # 同时改所有者和组
sudo chown -R www-data:www-data /var/www   # 递归修改(Web 目录常见)

修改所有者通常需要 root 权限,所以要加 sudo

四、常见场景速查

场景

命令

脚本无法执行

chmod +x 脚本名

SSH 私钥报权限太开放

chmod 600 ~/.ssh/id_rsa

Web 目录给 Nginx 读

chown -R www-data:www-data 目录

普通文件标准权限

chmod 644 文件

目录标准权限

chmod 755 目录

五、权限为什么会"传染"——umask

新建文件的默认权限由 umask 决定,常见值 022:文件默认 644、目录默认 755。查看与临时修改:

bash
umask          # 查看当前值
umask 077      # 之后新建的文件只有自己可读写

想永久生效,把 umask 077 写进 ~/.bashrc

六、总结

理解权限只需要记住三层人(所有者/组/其他人)× 三种权(r/w/x),chmod 的数字法就是三组八进制数。遇到 Permission denied,先 ls -l 看一眼,再用 chmod/chown 对症下药。

END