linux用户和用户组是什么
linux用户和用户组是什么详细介绍
在 Linux 系统中,** 用户(User)和用户组(Group)** 是实现权限管理和资源访问控制的核心概念,用于区分不同使用者的身份和权限,确保系统安全和资源合理分配。以下是具体解释:
一、Linux 用户(User)
1.
用户的定义
用户是 Linux 系统中访问资源和执行操作的基本实体,每个用户对应一个唯一的 用户 ID(UID,User ID)。系统通过 UID 识别用户身份,而非用户名。
2.
用户分类
- 超级用户(Root User)
- UID 固定为
0,拥有系统最高权限(完全控制所有文件、进程、配置等)。 - 用户名默认为
root,用于执行系统管理任务(如安装软件、修改系统文件等)。 - 注意:直接使用 root 账户存在安全风险,普通操作建议使用普通用户,通过
sudo临时获取权限。
- UID 固定为
- 普通用户(Normal User)
- UID 通常从
1000开始(不同发行版可能有差异),用于日常操作,权限受限于系统设置。 - 拥有独立的 home 目录(如
/home/username),只能访问自己有权限的文件和目录。
- UID 通常从
- 系统用户(System User)
- UID 范围通常为
1-999(或1-499,视系统而定),用于运行系统服务(如www-data、mysql、sshd等)。 - 一般不允许登录系统,仅用于支持特定服务的运行,减少安全隐患。
- UID 范围通常为
3.
用户相关文件
/etc/passwd:存储用户基本信息(用户名、UID、GID、home 目录、默认 Shell 等)。
格式:用户名:密码(x表示加密存储):UID:GID:用户说明:home目录:默认Shell/etc/shadow:存储用户密码的加密值及密码策略(如过期时间),仅 root 可读写。/etc/sudoers:配置哪些普通用户可以使用sudo获取 root 权限(通过visudo命令编辑)。
二、Linux 用户组(Group)
1.
用户组的定义
用户组是一组用户的集合,用于批量管理用户权限。每个用户组对应一个唯一的 组 ID(GID,Group ID),通过将用户加入组,可统一赋予该组内所有用户相同的权限。
2.
用户组分类
- 主组(Primary Group)
- 每个用户必须属于一个主组,创建用户时默认生成(通常与用户名同名,GID 与 UID 相同)。
- 例如:用户
user1的主组通常是user1,GID 为1000。
- 附加组(Secondary Group/ Supplementary Group)
- 用户可以同时属于多个附加组,用于获取额外权限(如加入
sudo组可使用sudo,加入docker组可管理 Docker 服务)。 - 通过
usermod -aG 组名 用户名命令将用户添加到附加组。
- 用户可以同时属于多个附加组,用于获取额外权限(如加入
3.
用户组相关文件
/etc/group:存储用户组基本信息(组名、密码(极少使用)、GID、组成员)。
格式:组名:密码(x或空):GID:组成员(逗号分隔,空表示无附加成员)/etc/gshadow:存储用户组密码(很少使用,通常通过文件权限管理)。
三、用户与用户组的核心作用
1.
权限管理
Linux 文件 / 目录的权限分为 读(r)、写(w)、执行(x),分别对应 所有者(User)、所属组(Group)、其他用户(Others) 三类权限。
- 所有者权限:文件 / 目录的创建者(或通过
chown修改的用户)拥有的权限。 - 所属组权限:文件 / 目录所属组内用户共享的权限(通过
chgrp修改所属组)。 - 其他用户权限:不属于所有者和所属组的用户的权限。
通过将用户加入不同的组,可快速批量调整一组用户对文件 / 目录的访问权限,避免逐个设置。
2.
资源共享
同一用户组内的用户可以共享组内文件的读写权限(如设置目录权限为rwxrwx---,则组内用户可共同编辑目录内文件)。
3.
系统安全
- 限制普通用户权限,避免误操作或恶意程序破坏系统。
- 系统用户仅运行特定服务,减少攻击面(如
nobody用户用于匿名访问)。
四、常用操作命令
| 功能 | 命令示例 |
|---|---|
| 创建用户 | useradd 用户名 或 adduser 用户名(交互模式) |
| 删除用户 | userdel 用户名(保留 home 目录)或 userdel -r 用户名(删除所有文件) |
| 修改用户密码 | passwd 用户名(root 可修改任意用户密码,普通用户只能改自己的) |
| 添加用户到附加组 | usermod -aG 组名 用户名 |
| 创建用户组 | groupadd 组名 |
| 修改文件所有者 | chown 用户名 文件名 |
| 修改文件所属组 | chgrp 组名 文件名 |
| 查看当前用户信息 | id(显示 UID、GID、附加组等) |
总结
- 用户:Linux 系统中资源访问的主体,通过 UID 唯一标识,分为超级用户、普通用户、系统用户。
- 用户组:用户的集合,通过 GID 标识,用于批量管理权限,分为主组和附加组。
- 核心目标:通过用户和用户组的权限分配,实现系统资源的安全、高效管理。
理解用户和用户组是掌握 Linux 权限体系的基础,后续可进一步学习文件权限(chmod)、sudo 配置等进阶内容。