Linux 的权限管理是其安全体系的核心,它决定了谁可以对文件或目录执行何种操作。这种机制确保了系统的稳定性和数据的安全性,防止未经授权的访问或误操作。
下面将从基本权限模型、权限表示方式、特殊权限、访问控制列表(ACL)以及实际应用等方面详细解释。

一、基本权限模型:三类主体 + 三类权限

Linux 中每个文件和目录都有三类权限,分别对应三类主体:

权限类型含义
r (read)读权限:查看文件内容 / 列出目录内容(ls)
w (write)写权限:修改文件内容 / 在目录中创建、删除、重命名文件
x (execute)执行权限:运行文件为程序 / 进入目录

这三种权限作用于三类主体:

用户类别说明
所有者(User)文件的创建者或被指定的用户
所属组(Group)文件所属组的成员用户
其他人(Others)既不是所有者,也不在所属组中的其他用户

二、权限的表示方式

1. 符号表示法(常用)

使用 ls -l 查看文件权限:

$ -rw-r--r-- 1 alice developers 1024 Apr 5 10:00 file.txt

分解说明:
– r w –  r – –  r – –
  ↑↑↑  ↑↑↑  ↑↑↑
  用户  组   其他人
第一个字符 – 表示这是一个普通文件:d = 目录,l = 符号链接,c = 字符设备,b = 块设备
rw-:所有者(alice)有读写权限,无执行权限
r–:组(developers)只有读权限
r–:其他人也只有读权限

2. 数字表示法(八进制)

每个权限用一个数字表示:

权限数值
R4
W2
X1
0

组合起来:

所以 rw-r–r– = 644

常见权限数字:

三、设置权限的命令

chmod:修改文件权限

#使用数字

$ chmod 644 file.txt
$ chmod 755 script.sh

# 使用符号

$ chmod u+x script.sh     # 给所有者添加执行权限
$ chmod g+w file.txt      # 给组添加写权限
$ chmod o-r file.txt      # 取消其他人读权限
$ chmod a+r file.txt      # 所有人(all)添加读权限使用数字

chown:修改文件所有者和所属组

$ chown alice file.txt # 改所有者
$ chown alice:developers file.txt # 改所有者和组
$ chown :developers file.txt # 只改组
$ chown -R alice:developers /home/alice/project # 递归修改目录

chgrp:修改所属组(较少用,chown 更通用)

$ chgrp developers file.txt

四、目录权限的特殊含义

目录来说,权限含义略有不同:

权限对目录的意义
r可以列出目录内容(ls)
w可以在目录中创建、删除、重命名文件(⚠️ 删除文件取决于目录的写权限,而非文件本身!)
x可以进入目录(cd),访问其下的子文件或子目录

示例:即使你对某个文件有写权限,但如果其父目录没有写权限,你也无法删除它。


五、特殊权限位(SUID, SGID, Sticky Bit),可以不了解

这些是额外的权限位,用于特殊场景。

1. SUID(Set User ID)—— 4xxx

$ chmod u+s /usr/bin/passwd

# 或

$ chmod 4755 passwd

2. SGID(Set Group ID)—— 2xxx

$ chmod g+s /shared/project
$ chmod 2775 /shared/project

这在团队协作中非常有用,确保所有人在共享目录中创建的文件都属于同一个组。

3. Sticky Bit(粘滞位)—— 1xxx

$ chmod +t /tmp
$ chmod 1777 /tmp

六、权限管理的最佳实践


总结:Linux 权限管理的核心

层级机制用途
1基本权限(rwx)控制用户、组、其他人的访问
2所有者与组(chown/chgrp)定义文件归属
3特殊权限(SUID/SGID/Sticky)实现特权执行和安全删除
4ACL精细化控制,突破“三类用户”限制

一句话总结:Linux 权限管理通过“谁(用户/组) + 对什么(文件/目录) + 能做什么(rwx)”的模型,实现灵活而安全的资源访问控制。

发表回复

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