一、前言

Linux 是标准多用户操作系统,用户、用户组是系统权限体系的底层核心。服务器登录、文件读写、命令执行、进程权限全部依靠 UID/GID 身份控制。本文结合课堂实操命令、配置文件、完整实验步骤,从零讲解用户 / 组创建、修改、密码时效、账户禁用、底层配置文件原理,所有命令均为课堂真实执行记录,可直接复制复现。

二、前置基础命令

先掌握查看登录用户、终端、身份信息工具,所有实操前先验证当前环境:

# 查看当前终端
tty
# 查看全部登录用户、负载、执行进程
w
# 仅查看登录用户与登录时间
who
# 简洁输出登录用户名
users
# 查看指定用户UID、GID、所有归属组
id lizihan
# 查看passwd配置手册(5代表配置文件类型)
man 5 passwd
# 查看修改属主命令手册
man chown

实操输出示例:

[lizihan@centos7 ~ 16:11:18]$ tty
/dev/pts/1
[lizihan@centos7 ~ 16:13:29]$ w
 16:13:29 up 16:37,  3 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
lizihan  :0       :0               Wed20   ?xdm?   4:53   0.36s /usr/libexec/gnome-session-b
lizihan  pts/0    10.1.8.1         08:44   19:29   0.01s  0.01s -bash
lizihan  pts/1    10.1.8.1         13:53    1.00s  0.06s  0.01s w
[lizihan@centos7 ~ 16:13:34]$ id lizihan
uid=1000(lizihan) gid=1000(lizihan) groups=1000(lizihan),10(wheel)

三、三大核心账号配置文件

1. /etc/passwd 用户基础信息(所有用户可读)

格式:用户名:x:UID:GID:注释信息:家目录:登录Shell
课堂查询示例:

[lizihan@centos7 ~ 16:03:04]$ grep lizihan /etc/passwd
lizihan:x:1000:1000:lizihan:/home/lizihan:/bin/bash

字段说明:

  1. lizihan:登录用户名

  2. x:密码占位符,真实加密密码存放 /etc/shadow

  3. 1000:UID 用户编号

  4. 1000:GID 用户初始主组编号

  5. lizihan:用户备注描述

  6. /home/lizihan:用户家目录

  7. /bin/bash:登录解释器;/sbin/nologin 禁止交互式登录

2. /etc/shadow 加密密码与时效(仅 root 可读)

存储加密密码、密码最小 / 最大有效期、强制改密标记、账户过期时间,9 段冒号分割。
关键标记:第三段为0,用户登录强制修改密码;密码字段开头!代表锁定账户。

3. /etc/group 用户组信息

格式:组名:x:GID:附加组成员
示例查询 wheel 管理员组:

[root@centos7 ~ 17:03:28]# grep wheel /etc/group
wheel:x:10:lizihan,operator1

四、用户创建 useradd 完整实操(课堂原题)

语法参数

  • -u 指定 UID

  • -d 自定义家目录

  • -c 用户注释描述

  • -g 指定初始主组

  • -s 指定登录 shell

  • -G 附加补充组(多个逗号分隔)

实操 1:最简创建用户 user01

[root@centos7 ~ 16:16:11]# useradd user01
# 查看生成的passwd条目
[root@centos7 ~ 16:16:27]# grep user01 /etc/passwd
user01:x:1002:1002::/home/user01:/bin/bash

实操 2:自定义参数创建 user02(无登录权限)

需求:UID=8888,家目录/opt/user02,注释user for software manage,主组 wheel,禁止登录

[root@centos7 ~ 16:16:52]# useradd -u 8888 -d /opt/user02 -c "user for software manage" -g wheel -s /sbin/nologin user02
# 验证
[root@centos7 ~ 16:33:38]# grep user02 /etc/passwd
user02:x:8888:10:user for software manage:/opt/user02:/sbin/nologin
# 查看自动创建的家目录
[root@centos7 ~ 16:33:58]# ls -d /opt/user02/
/opt/user02/

完整实验:operator1 用户全流程

需求:创建 operator1、设置密码、修改 UID、修改描述、加入 wheel 附加组、删除用户

# 1. 创建operator1
[root@centos7 ~ 16:35:14]# useradd operator1
# 输错用户名查询(报错演示)
[root@centos7 ~ 16:50:29]# id opertor1
id: opertor1: no such user
# 正确查询用户条目
[root@centos7 ~ 16:51:25]# grep operator1 /etc/passwd
operator1:x:8890:8890::/home/operator1:/bin/bash

# 2. 设置用户密码
[root@centos7 ~ 16:53:08]# passwd operator1
Changing password for user operator1.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.

# 3. 修改UID为1088
[root@centos7 ~ 16:55:51]# usermod -u 1088 operator1

# 4. 修改用户描述信息
[root@centos7 ~ 16:58:05]# usermod -c "Operator One" operator1

# 5. 追加wheel附加组(-aG 追加,不覆盖原有组)
[root@centos7 ~ 17:02:07]# usermod -aG wheel operator1
# 验证wheel组成员
[root@centos7 ~ 17:03:28]# grep wheel /etc/group
wheel:x:10:lizihan,operator1

# 6. 删除用户(仅删账号,保留家目录)
[root@centos7 ~ 17:04:28]# userdel operator1
# 验证用户已删除
[root@centos7 ~ 17:04:38]# ls operator1
ls: cannot access operator1: No such file or directory

五、usermod 修改用户全功能详解

1. 修改 UID

usermod -u 1088 operator1

2. 修改备注描述

usermod -c "Operator One" operator1

3. 追加附加组(必须加 - a,否则覆盖原有组)

usermod -aG wheel operator1

4. 修改登录 shell,禁止登录

usermod -s /sbin/nologin laowang

5. 锁定 / 解锁密码

usermod -L laowang  # 锁定密码,普通用户无法su/ssh登录
usermod -U laowang  # 解锁密码

6. 不使用 passwd 设置密码(复制其他用户加密哈希)

# 提取laoma加密密码串
grep laoma /etc/shadow
# 给laowang赋予相同密码
usermod -p '$6$复制完整shadow加密字符串' laowang

六、用户删除 userdel

userdel operator1        # 仅删除账号,家目录、邮件保留
userdel -r operator1     # 删除账号+家目录+邮件文件(彻底清理)

七、密码时效管理 chage(课后作业核心)

对应课后作业需求:laowang 用户配置

  1. 首次登录强制改密码:chage -d 0 laowang

  2. 3 天内禁止修改密码:chage -m 3 laowang

  3. 100 天后密码过期:chage -M 100 laowang
    完整命令:

chage -m 3 -M 100 -d 0 laowang
# 查看密码时效配置
chage -l laowang

八、两种禁止用户登录系统的方法

方法 1:修改登录 Shell 为 /sbin/nologin

usermod -s /sbin/nologin laowang

效果:任何 su、ssh 登录直接提示This account is currently not available,root 也无法交互式切换。

方法 2:锁定用户密码

usermod -L laowang

效果:普通用户 su/ssh 输入正确密码认证失败;root 仍可su - laowang切换。

九、用户组管理命令(groupadd/groupmod/groupdel/groupmems)

1. 创建组

groupadd developer
groupadd -g 2000 developer

2. 修改组名、GID

groupmod -g 3000 -n developers developer

3. 删除组

groupdel developers

4. 管理组成员 groupmems

# 添加用户到组
groupmems -g admins -a laoma
# 查看组内成员
groupmems -g admins -l
# 删除组成员
groupmems -g admins -d laoma
# 清空组所有成员
groupmems -g admins -p

十、课后综合实战完整流程(原题)

需求:

  1. 添加用户 laowang,设置密码与 laoma 一致,禁止 passwd 命令

  2. 密码策略:首次登录改密、3 天不可修改、100 天过期

  3. 两种方式禁止 laowang 登录

完整执行命令

# 1. 创建laowang
useradd laowang
# 提取laoma密码哈希
grep laoma /etc/shadow
# 赋予相同密码(替换引号内字符串)
usermod -p '$6$xxxx加密串' laowang

# 2. 配置密码生命周期
chage -m 3 -M 100 -d 0 laowang

# 3. 禁止登录两种方案
# 方案1:禁用登录shell
usermod -s /sbin/nologin laowang
# 方案2:锁定密码
usermod -L laowang

十一、补充知识点:su 切换用户与 sudo 提权

su 命令

  • su -l 用户名:完整登录 shell,加载用户全部环境变量(推荐)

  • su 用户名:不加载环境,仅切换身份

  • root 使用 su 切换任意用户不需要密码;普通用户 su 必须输入目标用户密码

课堂实操示例:

# 普通用户切换root报错演示
[lizihan@centos7 ~ 15:47:25]$ su-l root
bash: su-l: command not found...
# 正确写法(-l前后空格)
[lizihan@centos7 ~ 15:54:21]$ su -l root
Password:

sudo 提权

普通用户临时获取 root 权限,需要在/etc/sudoers配置授权,使用visudo编辑:

# 赋予laowang全部管理员权限
laowang    ALL=(ALL)       ALL
# 免密sudo
laowang    ALL=(ALL)       NOPASSWD:ALL

未配置 sudo 权限报错:laowang is not in the sudoers file

十二、总结

  1. 用户身份由 UID 唯一识别,配置文件 /etc/passwd/etc/shadow/etc/group 管控账号;

  2. useradd/usermod/userdel 完成用户全生命周期管理,usermod -p 可绕过 passwd 设置密码;

  3. chage 管控密码过期、强制改密等安全策略;

  4. 禁止登录两种核心手段:修改 nologin shell、锁定密码;

  5. 普通用户切换身份优先使用 su -l,临时管理员权限使用 sudo,需提前配置 sudoers。

所有命令均来自课堂真实敲取记录,复制到 CentOS7 环境可直接完成全部用户与组实验。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐