Linux 的权限机制是保障系统安全、防止未授权访问的核心基础,它主要包含两个维度:文件/目录权限(针对普通文件和目录)和 用户/组身份管理(针对谁可以执行什么操作)。
以下是 Linux 权限机制的详细解析:
用户与组身份(Who)
在 Linux 中,每个进程和资源都关联着一个用户(User)和一个组(Group)。
-
用户类型
- root (UID 0):超级用户,拥有系统的最高权限,可以执行任何操作。
- 普通用户 (UID > 0):权限受限,只能访问自己的文件和部分系统资源。
- 系统用户 (UID 1-999):通常用于运行系统服务(如
nginx,mysql),一般不用于登录。
-
组类型
- 主组 (Primary Group):用户创建时默认所属的组。
- 附加组 (Secondary Group):用户额外加入的其他组,用于共享资源访问权限。
命令提示:
id username:查看用户的 UID、GID 和所属组。groups username:查看用户所属的所有组。
文件权限类型(What)
Linux 文件权限分为三类,分别对应三类用户身份:
| 权限类型 | 符号 | 含义 | 说明 |
|---|---|---|---|
| 读 (Read) | r |
读取文件内容或列出目录内容 | 对文件:可查看内容;对目录:可列出文件名 |
| 写 (Write) | w |
修改文件内容或删除/创建目录中的文件 | 对文件:可修改内容;对目录:可增删改目录内的条目 |
| 执行 (Execute) | x | 执行文件或进入目录 | 对文件:可运行程序;对目录:可 cd 进入该目录 |
权限分配对象(To Whom)
每个文件有三个权限集合,分别对应:
- User (u):文件所有者(Owner)
- Group (g):文件所属组(Group)
- Others (o):其他所有用户(World/Everyone)
权限表示方式
符号表示法(Symbolic Notation)
使用 ls -l 命令查看文件权限时,第一列显示如:-rwxr-xr--
- 第1位:文件类型
- 普通文件
d:目录 (directory)l:链接 (link)c:字符设备b:块设备
- 第2-10位:权限位,每3位一组:
rwx:所有者权限r-x:所属组权限r--:其他用户权限
数字表示法(Octal Notation)
将 rwx 转换为数字:
r= 4w= 2x= 1- = 0
rwxr-xr--
- 所有者:
rwx= 4+2+1 = 7 - 所属组:
r-x= 4+0+1 = 5 - 其他:
r--= 4+0+0 = 4 - 结果:754
特殊权限位(Special Permissions)
除了基本的 rwx,还有三种特殊权限:
| 权限 |
符号 | 数字 | 含义 |
|---|---|---|---|
| SUID | s 或 S | 4 | 设置用户ID,执行文件时,以文件所有者的身份运行(而非启动者),常用于需要 root 权限的程序(如 passwd)。 |
| SGID | s 或 S | 2 | 设置组ID,执行文件时,以文件所属组的身份运行;对目录而言,新创建的文件自动继承目录的组。 |
| Sticky Bit | t 或 T | 1 | 粘滞位,仅对目录有效,防止非所有者删除自己创建的文件(如 /tmp 目录)。 |
注意:
- 小写
s/t表示对应权限位已启用。- 大写
S/T表示对应权限位未启用(即没有 x 权限)。
常用权限管理命令
chmod(Change Mode)
修改文件权限。
# 符号方式 chmod u+x file.sh # 给所有者添加执行权限 chmod g-w file.txt # 移除所属组的写权限 chmod o=r file # 设置其他用户只有读权限 chmod 755 file # 数字方式:所有者rwx,组r-x,其他r-x # 递归修改目录及子文件 chmod -R 755 /path/to/dir
chown(Change Owner)
修改文件所有者。
chown user:group file # 同时修改所有者和组 chown user file # 只修改所有者 chown :group file # 只修改组 chown -R user:group dir # 递归修改
chgrp(Change Group)
仅修改文件所属组。
chgrp groupname file
访问控制列表(ACL)
当标准权限(u/g/o)无法满足复杂需求时,Linux 支持 ACL(Access Control Lists)。
- 功能:可以为特定用户或组设置独立的权限,而不必修改文件的所有者或组。
- 查看 ACL:
getfacl filename - 设置 ACL:
setfacl -m u:username:rwx filename - 移除 ACL:
setfacl -x u:username filename
前提:文件系统需支持 ACL(现代 Linux 发行版默认启用)。
最佳实践与安全建议
- 最小权限原则:只授予完成任务所需的最小权限,Web 服务器目录通常设置为
755,上传目录可能设为777(但需配合其他安全措施)。 - 避免使用
chmod 777:这会赋予所有人读写执行权限,极易导致安全风险。 - 定期审计权限:使用
find / -perm -4000查找所有 SUID 文件,检查是否有异常。 - 使用
sudo而非直接登录 root:通过sudo提权可以记录操作日志,便于审计。 - 注意目录权限:
- 目录需要
x权限才能进入。 - 目录需要
w权限才能创建/删除文件。 - 目录需要
r权限才能列出文件列表。
- 目录需要
Linux 权限机制是一个分层、精细的系统:
- 身份:用户、组、其他
- 权限:读、写、执行
- 特殊位:SUID、SGID、Sticky Bit
- 扩展:ACL
理解并正确配置这些权限,是保障 Linux 系统安全运行的关键。
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/483614.html



