用户账户(User Account)
用户账户是登录系统的身份标识,Linux 下分两类:超级用户 root(UID 为 0,权限最大)和普通用户(UID 默认从 1000 开始编号,系统用户 UID 为 1~999)。
组(Group)
组是具有相同特性的用户的逻辑集合。一个用户可以属于多个组,其中一个是主组(私有组),其余为附属组(标准组)。创建用户时会自动生成同名的主组,GID 默认也从 1000 开始。
用户名:标识用户,字母+数字,区分大小写
UID:数字标识符,root=0,系统用户1~999,普通用户1000+
密码:加密存储在 /etc/shadow,仅 root 可读
主目录:用户登录后默认所在目录,如 /home/user1
登录 Shell:默认为 /bin/bash,也可设为 /sbin/nologin 禁止登录
GID:组的数字标识符,普通组从 1000 开始
1. /etc/passwd —— 用户账户信息
格式:用户名:x:UID:GID:描述:主目录:Shell
root:x:0:0:root:/root:/bin/bash
user1:x:1002:1002::/home/user1:/bin/bash
bobby:x:1001:1001::/home/bobby:/bin/bash
所有用户均可读。x 表示密码影射到 shadow 文件。
2. /etc/shadow —— 加密密码
仅 root 可读。格式:用户名:加密密码:上次修改:最小:最大:警告:不活动:过期:保留
root:$6$xxx...:18495:0:99999:7:::
bobby:!!:18495:0:99999:7:::
!! 表示密码为空,$6$ 前缀表示 SHA-512 加密。
3. /etc/login.defs —— 创建账户的默认配置
PASS_MAX_DAYS 99999 // 密码最长有效天数
PASS_MIN_LEN 5 // 密码最小长度
PASS_WARN_AGE 7 // 过期前7天警告
UID_MIN 1000 // 普通用户最小UID
UID_MAX 60000 // 普通用户最大UID
CREATE_HOME yes // 创建用户时自动建主目录
4. /etc/group —— 组信息
格式:组名:x:GID:成员列表
bobby:x:1001:user1,user2
user1:x:1002:
5. /etc/gshadow —— 组管理信息
格式:组名:加密口令:组管理员:成员列表(! 表示无口令)
任务 1:新建用户 —— useradd
命令格式:useradd [选项] <用户名>
常用选项:
-u 指定 UID -g 指定主组
-d 指定主目录 -s 指定 Shell
-p 指定密码 -f 密码过期天数(-1 永不过期)
-G 指定附属组 -c 添加备注描述
实战:新建 user3,UID=1010,主组 group1,主目录 /home/user3
groupadd -g 1010 group1
useradd -u 1010 -g 1010 -d /home/user3 -s /bin/bash -p 12345678 -f -1 user3
tail -1 /etc/passwd # 验证:user3:x:1010:1010::/home/user3:/bin/bash
注意:-p 直接设的密码是明文存储到 /etc/shadow 的,生产环境建议用 passwd 命令单独设置密码。
任务 2:设置用户口令 —— passwd / chage
passwd # root 改自己密码
passwd user1 # root 改 user1 密码
# 最短6天改一次,最长60天过期,提前5天提醒
chage -m 6 -M 60 -W 5 user1
chage -l user1 # 查看密码策略
chage 常用选项:-m 最短存活天数 | -M 最长存活天数 | -W 过期前警告天数 | -E 账户过期日期 | -l 查看策略
任务 3:维护用户账户 —— usermod / 禁用 / 删除
方法一:passwd -l user1 (锁定)/ passwd -u user1 (解锁)
方法二:usermod -L user1 (锁定)/ usermod -U user1 (解锁)
方法三:手动在 /etc/shadow 密码域前加 *,恢复时删掉 *
userdel user3 # 仅删账户
userdel -r user3 # 连同主目录一起删除
任务 4:管理组 —— groupadd / gpasswd
groupadd testgroup # 创建组
groupdel testgroup # 删除组
groupmod -g 2000 testgroup # 修改组的 GID
gpasswd -a user1 testgroup # 把 user1 加入 testgroup
gpasswd -d user1 testgroup # 把 user1 移出 testgroup
gpasswd -A user1 testgroup # 指定 user1 为组管理员
su - test # 切换到 test 用户(带 - 加载完整环境)
exit # 退出当前用户,返回上一层
su 不带 "-" 只切换身份不加载环境变量,带 "-" 会完整切换到目标用户环境。
vipw 安全编辑 /etc/passwd(比 vi 多了文件锁)
vigr 安全编辑 /etc/group
pwck 检查 /etc/passwd 和 /etc/shadow 完整性
grpck 检查 /etc/group 和 /etc/gshadow 完整性
id 查看用户的 UID、GID、所属组列表
whoami 显示当前用户名(等同于 id -un)
newgrp 切换当前用户的主组到指定组
id user1
# uid=1002(user1) gid=1002(user1) 组=1002(user1),1011(testgroup)
假设公司有 3 个员工,需求如下表。用学到的命令一键完成。
# 第一步:创建组,然后建用户
groupadd mygroup1
useradd -G mygroup1 -c "1st user" myuser1
useradd -G mygroup1 -c "2nd user" myuser2
useradd -c "3rd user" -s /sbin/nologin myuser3
# 第二步:批量设密码
echo "password" | passwd --stdin myuser1
echo "password" | passwd --stdin myuser2
echo "password" | passwd --stdin myuser3
关键点:-c 写全名备注,-s /sbin/nologin 禁止登录(如 myuser3 只用于后台服务),--stdin 配合 echo 实现非交互式批量设密码。
记住这个核心流程:
① 先建组(groupadd) → ② 再建用户并归组(useradd -G) → ③ 设密码(passwd) → ④ 配策略(chage) → ⑤ 必要时锁定/解锁(passwd -l/-u 或 usermod -L/-U)
账号管理是 Linux 运维的基本功。多敲几遍命令,把 5 个配置文件的内容格式记熟,就能应对绝大多数场景了。如果觉得有用,欢迎收藏备用。