
Linux 的一切皆文件,权限则是安全的基石。你有没有遇到过"Permission denied"的报错?或者误操作导致别人无法访问你的文件?一起来搞懂它。

# Terminal — 查看文件权限ls -la ~/Documents/# 输出示例total 96drwxr-xr-x 5 ubuntu staff 4096 May 8 10:00 .drwx------ 5 ubuntu staff 4096 May 8 09:30 ..-rw-r--r-- 1 ubuntu staff 8192 May 8 09:45 notes.txt-rwxr-xr-x 1 ubuntu staff 16384 May 8 10:00 script.shdrwxr-x--- 3 ubuntu staff 4096 May 8 08:00 private/
以 notes.txt 为例:-rw-r--r-- 拆解如下:
权限字符串解读
- 文件类型(-=普通文件,d=目录,l=链接)
rw- 所有者权限:可读可写,不可执行
r-- 用户组权限:仅可读
r-- 其他人权限:仅可读
⚙️ 权限修改实操
1 用数字方式修改(八进制)
最常用!每个权限对应一个数字:读=4,写=2,执行=1。
Terminal — chmod 数字模式
# 修改文件/目录权限chmod 755 script.sh # rwxr-xr-x 所有者全权限,组和其他可读可执行chmod 644 notes.txt # rw-r--r-- 所有者可读写,其他只读chmod 600 notes.txt # rw------- 只有所有者能读写chmod 700 private/ # rwx------ 只有所有者能访问此目录chmod -R 755 /var/www/html/ # -R 递归修改整个目录树
2 用符号方式修改(更直观)
适合精细调整,不用记数字。
chmod u+x script.sh # u+x = 给所有者加上执行权限chmod g-w notes.txt # g-w = 移除用户组的写权限chmod a+rw notes.txt # a+rw = 所有人加上读写权限chmod o= notes.txt # o= = 移除其他人的所有权限# u=所有者 g=用户组 o=其他人 a=所有人# +添加 -移除 =设置
Terminal — chmod 符号模式
常用权限速查表
600 — 私密文件,仅本人读写(最安全的个人文件)
644 — 普通文本文件,所有者可读写,他人只读(代码、配置)
755 — 脚本和可执行程序,所有人都能运行(安全的默认值)
700 — 私密目录,仅本人访问(家目录、重要文件夹)
775 — 团队共享目录,组内可写(协作场景)
777 — 勿用!危险,等于裸奔 🚨
👤 属主与属组修改
文件属于谁?用 chown 改所有者,chgrp 改用户组:
Ter
sudo chown www-data /var/www/index.html # 修改文件所有者为 www-datasudo chgrp developers /home/ubuntu/project/ # 修改目录的所属组sudo chown www-data:developers /var/www/ # 一次性改所有者和组sudo chown -R ubuntu:ubuntu ~/Documents/ # 递归修改整个目录
minal — chown / chgrp
sudo 是关键
修改文件所有权需要 sudo 权限。普通用户无法把文件"送给"别人,只有 root(即 sudo 权限)才行。
🛡️ 特殊权限:SetUID / SetGID / Sticky Bit
除了普通 rwx,还有三种特殊权限,解决特殊场景:
三种特殊权限详解
SetUID (4000 / s):执行时以文件所有者身份运行。典型例子:passwd 命令,让普通用户能修改自己的密码(写入 /etc/shadow)。设置:chmod 4755 program
SetGID (2000 / s):目录内新建文件继承目录组;可执行文件以文件所属组身份运行。设置:chmod 2755 directory
Sticky Bit (1000 / t):目录内只有文件所有者和 root 能删除/重命名自己的文件。经典场景:/tmp 目录。设置:chmod 1777 /tmp
Termina
# 查看特殊权限(Sticky Bit / SetUID)ls -ld /tmp /usr/bin/passwd# 输出说明drwxrwxrwt root root 4096 May 8 00:00 /tmp/ ← 最后的 t = Sticky Bit-rwsr-xr-x root root 55688 Jan 15 09:00 /usr/bin/passwd ← s 代替 x = SetUID
l — 查看特殊权限
📋 今日要点回顾
Linux 权限三位一体:所有者 / 用户组 / 其他人
chmod 755/644/600 最常用,数字比符号更高效
chown 改所有者,chgrp 改组,sudo chown 一起改
特殊权限解决系统级安全场景(passwd、/tmp、共享目录)
永远不要给目录或脚本设 777!