Linux 6 权限管理全解析

Linux 权限管理全解析(2025–2026 实用版)

Linux 的权限系统是其安全模型的核心,基于 用户、组、其他 三类主体,以及 读、写、执行 三种权限,再加上一些特殊权限位(SUID、SGID、Sticky Bit)和扩展属性(ACL)。
理解清楚这套体系,能帮你彻底解决“为什么这个文件我打不开”“为什么别人能执行我的脚本”“chmod 777 为什么不安全”等常见困惑。

1. 权限的三类主体 + 三种基本权限

每个文件/目录都有 三组权限,分别对应:

主体英文代表符号说明
拥有者owneru创建文件的人(或 chown 后的用户)
所属组groupg文件所属的用户组(通常是创建时的主组)
其他用户otherso既不是拥有者也不是所属组的任何人

每组都有三种基本权限:

权限符号对文件的作用对目录的作用数字表示
r可以查看内容可以列出目录内容(ls)4
w可以修改内容可以创建/删除/重命名目录内的文件2
执行x可以运行程序/脚本可以进入目录(cd)、访问目录内文件1

一句话总结
文件看 rwx,目录看“能否进入 + 能否操作里面内容”

2. 权限查看:ls -l 输出详解

-rwxr-xr--  1 alice developers  4096  Feb  9 21:30  script.sh

从左到右逐位拆解:

  1. 第 1 位:文件类型
  • - 普通文件
  • d 目录
  • l 符号链接
  • b 块设备
  • c 字符设备
  • p 命名管道
  • s socket
  1. 第 2–10 位:权限(3+3+3)
  • rwx r-x r--
    • 拥有者(alice):读写执行
    • 组(developers):读 + 执行
    • 其他用户:只读
  1. 硬链接数(1)
  2. 拥有者(alice)
  3. 所属组(developers)
  4. 文件大小(字节)
  5. 修改时间
  6. 文件名

3. 权限修改:chmod(最常用两种方式)

方式1:数字法(最快,推荐记忆)

三位八进制数,从左到右分别代表 u、g、o

权限组合数字含义
rwx7读写执行
r-x5读执行
rw-6读写
r–4只读
–x1只执行
0无任何权限

经典组合

  • 755-rwxr-xr-x(脚本、程序常用)
  • 644-rw-r--r--(普通文件常用)
  • 700-rwx------(个人私密脚本)
  • 666-rw-rw-rw-(极少用,危险)
  • 777-rwxrwxrwx生产环境几乎不要用

示例:

chmod 755 script.sh
chmod 644 config.conf
chmod -R 755 /var/www/html   # 递归修改整个目录

方式2:符号法(更直观,适合增删权限)

chmod u+x script.sh          # 给拥有者加执行权限
chmod g-w config.conf        # 给组去掉写权限
chmod o-rwx private_dir      # 其他用户完全禁止
chmod a+x script.sh          # 所有人加执行(a = all)
chmod ug+rwx,o-rwx dir       # 拥有者和组完全权限,其他只读

4. 特殊权限(SUID、SGID、Sticky Bit)

这些是权限系统中非常重要的“隐藏技能”,常用于提权、安全机制。

特殊权限符号表示数字表示对文件的作用对目录的作用典型场景
SUIDs(代替 x)4xxx文件拥有者身份执行/usr/bin/passwd(普通用户改密码)
SGIDs(代替 x)2xxx文件所属组身份执行新文件继承目录的所属组组协作开发目录
Stickyt(代替 x)1xxx只有文件拥有者或 root 能删除文件/tmp(大家都能写,但不能删别人文件)

示例:

chmod u+s /bin/ping          # 4xxx → -rwsr-xr-x
chmod g+s /data/team         # 2xxx → drwxr-s---
chmod +t /tmp                # 1xxx → drwxrwxrwt
chmod 4755 program           # SUID + 755
chmod 2755 shared_script     # SGID + 755

5. 拥有者与组管理

chown alice script.sh               # 改拥有者
chown alice:developers script.sh    # 同时改拥有者和组
chown -R alice:developers /project  # 递归

chgrp developers file               # 只改组

6. ACL(访问控制列表)—— 更细粒度权限(现代 Linux 必备)

传统 u/g/o 权限只有三组人,ACL 可以给任意用户/组单独授权。

# 启用 ACL(大部分现代系统默认启用)
# 查看是否支持:mount | grep acl

# 给用户 bob 读写权限
setfacl -m u:bob:rw /data/project/file.txt

# 给组 devteam 执行权限
setfacl -m g:devteam:x /scripts/run.sh

# 给目录默认继承 ACL(新文件自动应用)
setfacl -m d:u:bob:rw /data/project

# 查看 ACL
getfacl /data/project/file.txt

# 删除某条 ACL
setfacl -x u:bob /data/project/file.txt

# 清空所有非必要 ACL
setfacl -b file.txt

7. 常见权限问题与解决口诀

现象常见原因快速解决
Permission denied缺少 x(目录/可执行文件)chmod +xchmod o+x
能 ls 但 cd 不了目录缺少 xchmod +x 目录
能进入目录但不能创建文件目录缺少 wchmod +w 目录
别人删不了我的文件目录有 Sticky bit(t)常见于 /tmp
普通用户能改系统密码passwd 有 SUID正常现象(-rwsr-xr-x)
新文件所属组不是预期父目录没设 SGIDchmod g+s 目录
想给某人单独权限但不想改 umask需要 ACLsetfacl -m u:someone:rwx 路径

8. 安全建议(生产环境)

  • 永远不要 chmod 777(除非调试)
  • 重要文件/目录:600 / 644 / 700 / 755
  • 可执行脚本:755(拥有者可写,其他只读执行)
  • 私钥、密码文件:600,拥有者 root 或当前用户
  • 使用 ACL 而不是把文件给 everyone
  • 定期审计find / -perm -4000 -o -perm -2000(找 SUID/SGID 文件)

总结:权限口诀

  • 文件:r=看,w=改,x=运行
  • 目录:r=ls,w=创建/删除/改名,x=cd + 访问里面
  • 数字:r=4 w=2 x=1 → 755 = u:rwx g:rx o:rx
  • 特殊位:4=SUID 2=SGID 1=Sticky
  • 细粒度 → 用 ACL

你现在遇到的是哪类权限问题?
(比如某个文件打不开、想设置组协作目录、SUID 不生效、ACL 不会用等)
告诉我具体场景,我可以给你最精确的命令和解释。

文章已创建 4547

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部