在 Linux 系统中,权限管理是保障系统安全与多用户协作的核心机制。无论是日常开发、服务器运维,还是容器化部署,掌握 Linux 权限体系都至关重要。本文将系统性地讲解 Linux 权限的组成、作用方式、常用命令及高级特性,助你全面掌握这一基础而关键的知识点。
一、权限的本质:谁可以对什么做什么?
Linux 是一个多用户、多任务操作系统,权限机制的核心目标是:控制用户(或进程)对系统资源(如文件、目录、设备)的访问行为。
权限主要围绕三个基本操作定义:
- r(read):读取内容
- w(write):修改内容
- x(execute):执行(对文件)或进入(对目录)
这些权限分别作用于三类主体:
- Owner(u):文件所有者
- Group(g):文件所属组的成员
- Others(o):其他所有用户
二、文件权限的表示方式
1. 符号表示法(Symbolic Notation)
例如:
-rwxr-xr-- 1 alice dev 1024 Jan 10 file.txt
分解如下:
- 第一个字符
-表示文件类型(-=普通文件,d=目录,l=链接等) - 接下来的 9 位分为三组:
rwx→ 所有者(alice)拥有读、写、执行权限r-x→ 所属组(dev)可读、不可写、可执行r--→ 其他用户仅可读
2. 数字表示法(Octal Notation)
每组权限用三位二进制表示,转换为八进制数字:
- r = 4, w = 2, x = 1
- 例如
rwx= 4+2+1 = 7,r-x= 4+0+1 = 5,r--= 4
因此,上述权限可写作:754
常用权限组合:
- 644:普通文件(所有者可读写,组和其他只读)
- 755:可执行脚本或目录(所有者全权,他人可读可执行/进入)
- 600:私密文件(仅所有者可读写)
三、核心命令:查看与修改权限
| 命令 | 用途 |
|---|---|
ls -l |
查看文件详细权限信息 |
chmod |
修改文件权限(支持符号或数字方式) |
chown |
修改文件所有者 |
chgrp 或 chown :group |
修改文件所属组 |
示例:
# 给所有者添加执行权限
chmod u+x script.sh
# 设置权限为 755
chmod 755 app/
# 更改所有者和组
chown alice:dev config.conf
⚠️ 注意:只有 root 或文件所有者才能修改文件权限或所有权。
四、目录权限的特殊含义
对目录而言,权限含义略有不同:
- r :允许列出目录内容(
ls) - w:允许在目录中创建、删除、重命名文件(需配合 x)
- x :允许进入目录(
cd)或访问其下文件的元数据
🔑 关键点:没有 x 权限,即使有 r,也无法访问目录内任何文件!
例如,若目录权限为 r--,执行 ls 可能显示文件名,但 cat file 会失败,因为无法"进入"目录获取 inode 信息。
五、特殊权限位(Special Permission Bits)
除了基本 rwx,Linux 还支持三种特殊权限:
1. SUID(Set User ID)
-
作用于可执行文件
-
使进程以文件所有者身份运行,而非执行者
-
权限位显示为
s(如-rwsr-xr-x) -
常见例子:
passwd命令(普通用户可修改/etc/shadow)chmod u+s /usr/bin/mytool
2. SGID(Set Group ID)
-
作用于文件:进程以文件所属组身份运行
-
作用于目录:新创建的文件自动继承目录的组
-
权限位显示为
s(如drwxr-sr-x)chmod g+s shared_dir/
3. Sticky Bit(粘滞位)
-
仅用于目录
-
限制:只有文件所有者或 root 才能删除该目录下的文件
-
典型应用:
/tmp目录(权限drwxrwxrwt) -
权限位显示为
tchmod +t /tmp/shared/
六、进阶:ACL(访问控制列表)
传统权限模型仅支持"所有者-组-其他"三类主体,不够灵活。ACL(Access Control List) 允许为特定用户或组设置独立权限。
启用与使用 ACL:
# 查看 ACL
getfacl file.txt
# 为用户 bob 添加读写权限
setfacl -m u:bob:rw file.txt
# 删除某条 ACL
setfacl -x u:bob file.txt
# 设置默认 ACL(仅对目录有效,影响新文件)
setfacl -d -m g:dev:rx project/
💡 文件系统需挂载时启用
acl选项(现代 Linux 发行版通常默认开启)。
七、权限与安全实践建议
- 最小权限原则 :只授予必要权限,避免
777 - 敏感文件设为 600(如 SSH 私钥、配置文件)
- 谨慎使用 SUID/SGID:可能被利用提权
- 定期审计权限 :使用
find / -perm -4000 2>/dev/null查找 SUID 文件 - 使用 ACL 替代宽松组权限,实现精细控制
八、结语
Linux 权限机制看似简单,实则蕴含严谨的设计哲学:通过清晰的访问控制模型,在开放性与安全性之间取得平衡。从基础的 rwx 到 ACL,再到特殊权限位,每一层都为不同场景提供了解决方案。
掌握这些知识,不仅能让你更安全地管理系统,还能在排查"Permission denied"错误时游刃有余。记住:权限不是障碍,而是秩序的守护者。