一、用户与用户组核心配置文件
Linux 系统通过多个核心文件管理用户和组的信息,这些文件存储着关键属性和权限数据,是用户管理的基础。
1.1 用户信息文件:/etc/passwd
-
作用:记录用户基本属性,每行代表一个用户,字段以冒号分隔。
字段说明(以xz:x:1000:1000:xz:/home/xz:/bin/bash
为例):xz
:用户名x
:密码占位符(实际密码存于/etc/shadow
)1000
:用户 UID(用户标识符,唯一标识用户)1000
:主组 GID(用户所属主组的 ID)xz
:用户说明(GECOS 字段,可留空)/home/xz
:家目录路径/bin/bash
:登录 Shell(用户登录后执行的命令解释器)
-
实验验证:
[root@rocky12 tmp]# grep xz /etc/passwd xz:x:1000:1000:xz:/home/xz:/bin/bash
1.2 用户密码文件:/etc/shadow
-
作用:存储用户密码及相关属性(加密存储,仅 root 可读写)。
字段说明(以text:!$6$WbknfOXDjLEeMsnt$...
为例):text
:用户名!
:密码状态(!
表示密码被锁定,无法登录)$6$...
:加密后的密码(SHA512 算法)20200
:密码最后修改时间(从 1970 年 1 月 1 日算起的天数)
-
实验验证:
getent shadow text # 查看用户 text 的密码状态(需 root 权限) [root@rocky12 tmp]# getent shadow text text:!$6$WbknfOXDjLEeMsnt$Rr3ss7xnjQwJbebkfrLRypggzI4aRCJPZVysjh57BYAwoz9zKtDaO3AhpkWhG8OoRBV4lhnVc./CzKqMhq2zV1:20200:0:99999:7:::
1.3 组信息文件:/etc/group
-
作用:记录组基本属性,每行代表一个组。
字段说明(以xz:x:1000:xz
为例):xz
:组名x
:组密码占位符(实际存于/etc/gshadow
,一般为空)1000
:组 GID(唯一标识组)xz
:组成员列表(逗号分隔,为空表示无附加成员)
-
实验验证:
id xz # 查看用户 xz 所属组 [root@rocky12 tmp]# id xz 用户id=1000(xz) 组id=1000(xz) 组=1000(xz),10(wheel)
1.4 组密码文件:/etc/gshadow
- 作用:存储组密码及管理员信息(仅 root 可读写)。
字段说明(以root:::xz
为例):root
:组名""
:组密码(为空表示无密码,普通用户无法通过newgrp
命令加入该组)xz
:组管理员(可管理组成员)
二、用户管理核心命令
2.1 创建用户:useradd
-
作用:创建新用户,支持指定 UID、主组、家目录等属性。
-
常用选项:
-u UID
:指定用户 UID(如-u 1024
)。-g GID
或-g 组名
:指定主组(组需提前存在)。-m
:自动创建家目录(默认路径为/home/用户名
)。-s SHELL
:指定登录 Shell(如-s /bin/bash
)。-r
:创建系统用户(CentOS 7+ 系统用户 UID < 1000,无家目录)。
-
实验案例:创建用户
xzz
,指定 UID 为 1025,主组为 1025:[root@rocky12 tmp]# groupadd -g 1025 xzz [root@rocky12 tmp]# useradd -u 1025 -g 1025 -m xzz [root@rocky12 tmp]# id xzz 用户id=1025(xzz) 组id=1025(xzz) 组=1025(xzz)
2.2 修改用户属性:usermod
-
作用:修改现有用户的属性(如 UID、组、家目录、密码状态等)。
-
常用选项:
-u UID
:修改 UID。-g GID
:修改主组(需组存在)。-G 组1,组2
:添加附加组(不覆盖原有附加组)。-L
:锁定用户密码(在/etc/shadow
中密码前加!
)。-U
:解锁用户密码。
-
实验案例:锁定用户
text
的密码,禁止登录:[root@rocky12 ~]# usermod -L text [root@rocky12 ~]# getent shadow text text:!$6$WbknfOXDjLEeMsnt$Rr3ss7xnjQwJbebkfrLRypggzI4aRCJPZVysjh57BYAwoz9zKtDaO3AhpkWhG8OoRBV4lhnVc./CzKqMhq2zV1:20200:0:99999:7::: [root@rocky12 ~]# su - xz [xz@rocky12 ~]$ su - text 密码: su: 鉴定故障
2.3 删除用户:userdel
-
作用:删除用户账户,支持同时删除家目录和邮件目录。
-
常用选项:
-r
:删除家目录(路径为/home/用户名
)和邮件目录(/var/spool/mail/用户名
)。-f
:强制删除(即使用户正在登录)。
-
实验案例:删除用户
test
并移除家目录:userdel -r test
2.4 批量管理用户:newusers
- 作用:通过文件批量创建用户,适用于系统初始化或大规模用户部署。
- 文件格式:每行定义一个用户,字段以冒号分隔(用户名:密码:UID:GID: 描述:家目录:Shell)。
- 实验案例:批量创建
ss1
和ss2
:[root@rocky12 tmp]# vim user.txt [root@rocky12 tmp]# cat user.txt ss1:123456:1026:1026::/home/ss1:/bin/bash ss2:123456:1027:1027::/home/ss2:/bin/bash [root@rocky12 tmp]# newusers user.txt [root@rocky12 tmp]# id ss1 用户id=1026(ss1) 组id=1026(ss1) 组=1026(ss1) [root@rocky12 tmp]# id ss2 用户id=1027(ss2) 组id=1027(ss2) 组=1027(ss2)
2.5 修改用户密码:passwd
与 chpasswd
passwd
命令:- 交互修改:
passwd 用户名
(root 可修改任意用户密码,普通用户只能修改自己的密码)。 - 非交互修改:
echo "新密码" | passwd --stdin 用户名
(适用于脚本自动化)。
- 交互修改:
chpasswd
命令:批量修改密码,从文件读取用户名:密码对。# 示例:批量设置用户 text 和 text1 的密码为 123 echo "ss1:123" | chpasswd echo "ss2:123" > passwd.txt && chpasswd < passwd.txt
三、用户组管理核心命令
3.1 创建组:groupadd
-
作用:创建新用户组,支持指定 GID 或创建系统组。
-
常用选项:
-g GID
:指定组 GID(如-g 1024
)。-r
:创建系统组(CentOS 7+ 系统组 GID < 1000)。-f
:强制创建(若组已存在则忽略错误)。
-
实验案例:创建组
dev
,指定 GID 为 1024:groupadd -g 1024 dev
3.2 修改组属性:groupmod
-
作用:修改组名、GID 或密码。
-
常用选项:
-n 新组名
:修改组名(如-n developers
)。-g GID
:修改组 GID。-p 密码
:设置组密码(需加密后的密文,普通用户可用newgrp
命令加入有密码的组)。
-
实验案例:将组
dev
重命名为developers
,GID 修改为 1025:groupmod -n developers -g 1025 dev
3.3 删除组:groupdel
-
作用:删除用户组(若组是用户的主组,则需先修改用户主组或强制删除)。
-
常用选项:
-f
:强制删除(即使组是用户的主组,可能导致用户无法登录)。
-
实验案例:删除组
developers
(假设该组非任何用户的主组):groupdel developers
3.4 管理组成员:gpasswd
与 groupmems
gpasswd
命令:- 添加成员:
gpasswd -a 用户 组
(如gpasswd -a xz dev
)。 - 删除成员:
gpasswd -d 用户 组
。 - 设置组管理员:
gpasswd -A 管理员1,管理员2 组
(管理员可管理组成员)。
- 添加成员:
groupmems
命令(适用于 Rocky/CentOS):groupmems -g dev -a xz # 将用户 xz 加入组 dev groupmems -g dev -l # 列出组 dev 的成员
四、用户登录与系统配置
4.1 登录日志文件
- Rocky/CentOS:登录相关日志存于
/var/log/secure
(记录认证成功 / 失败信息)。 - Ubuntu:日志存于
/var/log/auth.log
。 - 实验操作:查看最近的登录失败记录:
grep "Failed" /var/log/secure
4.2 用户创建默认配置
- 全局配置文件:
/etc/login.defs
:定义用户 UID/GID 范围、密码策略等(如UID_MIN 1000
表示普通用户 UID 从 1000 开始)。/etc/default/useradd
:定义useradd
命令的默认参数(如默认 Shell 为/bin/bash
,家目录路径为/home
)。
- 实验修改:将 Ubuntu 的默认 Shell 从
/bin/sh
改为/bin/bash
:vim /etc/default/useradd # 修改 SHELL=/bin/bash useradd test1 # 新用户 test1 的默认 Shell 为 /bin/bash
4.3 家目录模板:/etc/skel/
- 作用:新用户创建家目录时,会自动复制该目录下的文件到用户家目录。
- 实验场景:为所有新用户添加通用提示文件
welcome.txt
:bash
echo "欢迎使用系统!" > /etc/skel/welcome.txt useradd test2 # test2 的家目录 `/home/test2` 中会包含 welcome.txt
五、总结
Linux 用户和用户组管理是系统管理的核心环节,掌握以下关键点可高效完成日常运维:
- 核心文件:
/etc/passwd
、/etc/shadow
、/etc/group
的结构与用途。 - 常用命令:
useradd
/usermod
/userdel
管理用户,groupadd
/gpasswd
管理组。 - 批量操作:利用
newusers
和chpasswd
实现自动化部署。 - 安全策略:合理使用密码锁定、系统用户隔离和日志审计。
通过文档中的实验案例(如批量创建用户、锁定账户、修改默认 Shell),可快速上手实际操作。建议结合 man
命令(如 man useradd
)深入学习各命令参数,并在测试环境中反复练习。