LinuxLinux操作系统用户权限解析
【Linux】Linux操作系统用户权限解析
引言
Linux作为一款多用户、多任务的操作系统,其权限管理机制是系统安全的核心基石。无论是个人开发者还是企业运维人员,理解Linux用户权限的设计原理和操作方法都至关重要。本文将从用户与组的概念入手,逐步解析文件权限、管理命令及实际应用场景,帮助读者构建清洗的权限管理知识体系。
1、用户与组:权限的归属基础
Linux中所有操作都是基于用户身份执行,权限的分配也围绕用户和组展开。
- 用户(User)
- 每个用户拥有唯一的 用户名 和 UID(User ID) ,系统通过UID识别用户。
- 用户信息存储在
/etc/passwd
文件中,格式为:username:x:UID:GID:description:homedir:shell
- 超级管理员**
root
**的UID为0
,拥有最高权限。
- 组(Group)
- 组用于批量管理用户权限,每个用户至少属于一个 主组 ,可以加入多个 附加组 。
- 组信息存储在
/etc/group
文件中,格式为:groupname:x:GID:members
# 查看当前用户信息
id
# 创建新用户并指定UID
useradd -u 1001 alice
# 将用户加入附加组
usermod -aG developers alice
2、文件权限详解:rwx与数字表示
Linux中每个文件和目录的权限由三部分组成: 所有者(Owner) 、 所属组(Group) 和 其他人(Others) 。
每个文件或目录都具有一串字母,它们就是权限符号。
权限符号表示
r
(读) :查看文件内容或列出目录内容。w
(写) :修改文件或目录结构(如创建/删除文件)。x
(执行) :运行程序文件或进入目录。-
:证明该用户没有此项权限。
数组表示法
- 将权限转换为二进制,
1
表示具有权限,0
表示没有权限,则rwx
可表示为111
。 - 以此类推,
r=4
,w=2
,x=1
。
- 将权限转换为二进制,
3、权限管理命令
- 修改文件权限:
chmod
# 符号模式
chmod u+x main.c # 给所有者添加执行权限
chmod g-w main.c # 给所属组去掉写权限
chmod o+rw main.c # 给其他人添加读写权限
# 数字模式
chmod 755 main.c # main.c权限设置为 rwxr-xr-x
# 递归修改目录权限
chmod -R 664 /code/test
- 修改所有者与所属组:
chown
和chgrp
chown username:usergroup main.c # 同时修改所有者和所属组
chgrp usergroup /test # 仅修改组
默认控制权限:
umask
在
Linux
操作系统中,目录的最大权限是777
,普通文件的最大权限是666
。但当我们创建目录或文件时发现:
- 目录权限是**
775
**。
- 文件权限是**
664
**。
- 目录权限是**
umask
值决定新建文件或目录的默认权限(默认权限=最大权限&(~umask))。如
umask=002
,则文件权限:同理,可算出目录的默认权限是
775
。
4、权限验证流程
当用户尝试访问问价时,Linux按一下顺序检查权限:
是否为所有者?
→ \rightarrow
→ 应用所有者权限。
是否属于所属组的成员?
→ \rightarrow
→ 应用组权限。
除此之外
→ \rightarrow
→ 应用其他人权限。
[!CAUTION]
权限一旦匹配即终止,不会叠加多个角色的权限。
5、粘滞位
在团队协作中,一定需要多人在同一目录中写入文件数据,这就需要一个较为安全的目录,而普通目录会出现所有者写的文件被其他人删除的现象。
- 为了解决这个问题,需要给目录设置粘滞位。
chmod +t /code_test # 设置粘滞位
当一个目录被设置了粘滞位,则该目录的文件只能由:
- **超级管理员
root
**删除。 - 该目录所有者 删除。
- 该文件所有者 删除。
总结
Linux权限管理通过用户、组和文件权限的三层机制,实现了灵活且安全的资源访问控制。掌握
chmod
、
chown
等命令的使用,理解权限验证流程,并结合实际场景合理配置权限,是保障系统安全的关键技能。无论是开发环境还是生产服务器,良好的权限习惯都能有效降低风险,避免“一失权成千古恨”的悲剧。