当前位置:首页>Linux>Linux 文件权限完全指南

Linux 文件权限完全指南

  • 2026-10-11 08:12:58
Linux 文件权限完全指南

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!

- 完 -

感谢阅读!对您有帮助的话,点亮👍🏻❤️,关注公众号,转发给需要的朋友~ 原创转载请联系授权。

最新文章

随机文章