3.1 Linux用户与组管理
一、为什么需要多用户?
Linux 从设计之初就是一个多用户操作系统,允许多个用户同时登录并使用系统资源。
多用户机制能够实现:
在 Linux 中,root 用户拥有最高权限,而日常运维工作通常建议使用普通用户,通过授权机制执行管理操作,从而降低误操作风险。
二、用户与组配置文件
Linux 的用户和组信息主要保存在以下三个配置文件中:
| 文件 |
作用 |
/etc/passwd |
用户账户信息 |
/etc/shadow |
用户密码及密码策略 |
/etc/group |
用户组信息 |
2.1 /etc/passwd
查看命令:
示例:
1 2
| root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
|
每行表示一个用户,共包含 7 个字段:
| 字段序号 |
含义 |
示例 |
| 1 |
用户名 |
root |
| 2 |
密码占位符 |
x |
| 3 |
UID(用户ID) |
0 |
| 4 |
GID(主组ID) |
0 |
| 5 |
用户描述信息 |
root |
| 6 |
家目录 |
/root |
| 7 |
登录 Shell |
/bin/bash |
登录 Shell 说明
常见可登录 Shell:
1 2 3
| /bin/bash /bin/sh /bin/zsh
|
禁止登录的 Shell:
1 2
| /sbin/nologin /bin/false
|
通常用于系统服务账户。
2.2 /etc/shadow
查看命令:
示例:
1
| root:$6$randomhash:19000:0:99999:7:::
|
主要字段:
| 字段 |
说明 |
| 用户名 |
用户名称 |
| 加密密码 |
密码哈希值 |
| 上次修改密码时间 |
天数表示 |
| 最小修改间隔 |
最少间隔天数 |
| 最大有效期 |
密码最大使用天数 |
| 警告时间 |
到期前提醒天数 |
| 不活动时间 |
密码失效后宽限期 |
| 失效日期 |
账户失效日期 |
| 保留字段 |
预留 |
2.3 /etc/group
查看命令:
示例:
1 2
| root:x:0: wheel:x:10:root,student
|
字段说明:
| 字段 |
含义 |
| 组名 |
用户组名称 |
| 密码占位符 |
通常为 x |
| GID |
组ID |
| 成员列表 |
组内成员 |
多个成员使用逗号分隔:
1
| root,student,user1,user2
|
三、用户管理命令
3.1 useradd
用于创建用户。
创建用户
指定家目录与 Shell
1
| useradd -m -d /home/bob -s /bin/bash bob
|
指定附加组
查看默认配置
常用参数
| 参数 |
说明 |
| -m |
创建家目录 |
| -d |
指定家目录 |
| -s |
指定 Shell |
| -g |
指定主组 |
| -G |
指定附加组 |
| -u |
指定 UID |
| -c |
用户备注信息 |
| -r |
创建系统用户 |
3.2 passwd
用于设置或修改用户密码。
修改密码
CentOS 非交互方式
1
| echo "password123" | passwd --stdin alice
|
常用参数
| 参数 |
说明 |
| -l |
锁定用户 |
| -u |
解锁用户 |
| -d |
删除密码 |
| -e |
强制下次登录修改密码 |
| -n |
最小密码使用天数 |
| -x |
最大密码使用天数 |
3.3 usermod
用于修改用户属性。
修改家目录
1
| usermod -d /home/newhome alice
|
修改 Shell
1
| usermod -s /bin/zsh alice
|
添加附加组
说明:
表示追加组信息。
如果省略:
会覆盖原有附加组。
锁定与解锁
1 2
| usermod -L alice usermod -U alice
|
修改用户名
1
| usermod -l newname oldname
|
3.4 userdel
用于删除用户。
删除用户
仅删除账户。
删除用户及家目录
同时删除:
四、组管理命令
4.1 groupadd
创建用户组。
指定 GID:
4.2 groupmod
修改用户组。
修改组名
1
| groupmod -n newname oldname
|
修改 GID
1
| groupmod -g 3000 groupname
|
4.3 groupdel
删除用户组。
五、用户切换与权限提升
5.1 su
Switch User,用于切换用户身份。
切换到 root
切换并加载完整环境
推荐使用。
切换到指定用户
不加载目标用户环境
区别:
| 命令 |
是否加载用户环境 |
| su alice |
否 |
| su - alice |
是 |
加载内容包括:
5.2 sudo
用于以其他身份执行命令。
执行单条 Root 命令
以指定用户身份执行
获取 Root Shell
查看当前授权
sudoers 配置
编辑方式:
允许 wheel 组使用 sudo
允许指定用户免密码执行命令
1
| alice ALL=(ALL) NOPASSWD: /usr/bin/systemctl
|
六、用户与组信息查看
查看当前登录用户
查看详细登录信息
查看历史登录记录
查看用户信息
指定用户:
输出示例:
1 2 3
| uid=1001(alice) gid=1001(alice) groups=1001(alice),10(wheel)
|
查看所属组
指定用户:
查看当前登录用户名
七、常见用户组概念
UID
用户唯一标识。
常见范围:
| UID范围 |
说明 |
| 0 |
root |
| 1~999 |
系统账户 |
| 1000+ |
普通用户 |
GID
用户组唯一标识。
每个用户至少属于一个主组,可以同时属于多个附加组。
wheel 组
CentOS 与 RHEL 系统中的管理员组。
查看:
加入:
1
| usermod -aG wheel username
|
加入后即可获得 sudo 管理权限(需 sudoers 配置允许)。
八、常用命令汇总
| 命令 |
作用 |
| useradd |
创建用户 |
| usermod |
修改用户 |
| userdel |
删除用户 |
| passwd |
设置密码 |
| groupadd |
创建组 |
| groupmod |
修改组 |
| groupdel |
删除组 |
| su |
切换用户 |
| sudo |
提权执行命令 |
| id |
查看用户信息 |
| groups |
查看所属组 |
| who |
查看登录用户 |
| w |
查看在线用户详情 |
| last |
查看登录历史 |
| users |
查看当前登录用户 |
| visudo |
编辑 sudo 配置 |