Linux用户和组管理

一、前言:为什么要学用户和组管理?🥳

  1. Linux 多用户操作系统核心特性
  2. 权限隔离、安全管控、业务账号分离实际场景
  3. 本文学习收获:命令实操、配置文件解析、故障修复、综合实验

二、用户和组介绍

2.1 用户介绍

用户帐户是系统安全的基础。 系统上的每个进程(运行程序)都以特定用户身份运行。 每个文件都有一个特定用户作为其所有者。 文件所有权有助于系统对文件用户实施访问控制。正在运行的进程关联的用户确定该进程可访问的文件和目录。用户使用username标识并使其更易于使用。在内部,系统通过分配给它们的唯一标识号,用户ID或UID来区分用户帐户。 如果用户使用用户帐户,则通常会为其分配一个密码,用户在登录时将使用该密码来证明他们是实际的授权用户。

用户帐户主要有三种类型:

  • superuser:用于管理系统,用户名称为root,UID为0,对系统具有完全访问权限。
  • system users:系统具有系统用户帐户,由提供支持服务的进程使用。 这些进程或守护进程通常不需要以超级用户身份运行。 它们是非特权帐户,用户保护自己文件和其他资源。系统用户帐户不用于交互方式登录系统。
  • regular users:大多数用户拥有常规用户帐户,用于日常工作。

2.2 passwd 文件

/etc/passwd 文件保存操作系统登录用户信息。每行包含一个登录用户信息,以冒号分隔七个域。

格式

name:password:UID:GID:GECOS:directory:shell

示例

liulele:x:1000:1000:liulele:/home/liulele:/bin/bash

解释如下:

  • name:用户登录名
  • password:用户密码,以x表示
  • UID:用户ID
  • GID:用户主组ID
  • GECOS:用户描述信息,通常为用户的真实姓名
  • directory:用户主目录,启动shell时的工作目录,默认位于/home/username
  • shell:用户打开终端时运行的程序,默认是shell。

对于system user,它的shell是/sbin/nologin。

2.3 group 文件

**组是用户的集合,组中用户继承组权限。**与用户一样,组具有组名称以使其更易于使用。系统通过分配给它们的唯一标识号,组ID或GID来区分组。

/etc/group 文件保存操作系统组信息。每行包含一个组信息,以冒号分隔4个域。

格式

group_name:password:GID:user_list

示例

liulele@centos7 ~ 15:36:32]$ grep wheel /etc/group
wheel:x:10:liulele

解释如下:

  • group_name:组名称
  • password:组密码,用x表示
  • GID:组ID,唯一表示组
  • user_list:作为补充的成员

2.4 组的类型

  • 主要组:每个用户只有一个主要组,/etc/passwd 文件中的GID编号定义。 默认情况下,**用户创建的新文件组所有者为用户的主要组。**通常,在创建新的常规用户时,会创建一个与该用户同名的新组。该组用作新用户的主要组,该用户是此用户专用组的唯一成员,有助于简化文件权限管理。

  • 补充组:用户还可以拥有补充组。 补充组的成员资格由/etc/group文件确定。 根据用户的任何组是否具有访问权限,授予用户访问权限的权限。例如,如果用户user01具有主要组user01和补充组wheel和webadmin,则该用户可以读取这三个组中任何一个组可读的文件。

    # 查看用户信息
    [liulele@centos7 ~ 16:52:44]$ id
    uid=1000(liulele) gid=1000(liulele)=1000(liulele),10(wheel) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    #查看用户uid
    [liulele@centos7 ~ 16:56:47]$ id -u liulele
    1000
    

三 、本地用户管理:从创建到删除全流程👨‍💻

3.1 whoami命令

查看当前终端中登录的用户。

[root@centos7 ~ 17:03:36]# whoami
root

3.2 who 和 w 命令

查看当前系统中所有终端上登录的用户,以及用户登录的时间。

[liulele@centos7 ~ 17:04:31]$ who
liulele  pts/0        2026-07-18 14:10 (10.1.8.1)
zhangmeili :0           2026-07-18 09:52 (:0)
root     pts/1        2026-07-18 15:22 (10.1.8.1)
[liulele@centos7 ~ 17:04:35]$ w
 17:04:41 up  7:19,  3 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
liulele  pts/0    10.1.8.1         14:10    1:23m  0.21s  0.25s sshd: liulele
zhangmei :0       :0               09:52   ?xdm?   2:57   0.27s /usr/libexec/
root     pts/1    10.1.8.1         15:22    1.00s  0.10s  0.02s w

3.3 users 命令

查看当前系统中所有终端上登录的用户名。

[liulele@centos7 ~ 17:04:41]$ users
liulele root zhangmeili

3.4 useradd 命令

作用:创建用户

# -u uid
# -p 设置密码
# -d 用户的家目录
# -c 描述信息
# -g 用户的主组
# -s 用户shell程序
#用户01创建
[root@centos7 ~ 17:09:49]# useradd user01
[root@centos7 mail 17:10:32]# grep user01 /etc/passwd
user01:x:1004:1004::/home/user01:/bin/bash

#用户02创建
[root@centos7 ~ 17:14:34]# useradd -u 8888 -d /opt/user02 -c "user software manage" -g wheel -s /sbin/nologin user02
#查看是否创建成功
[root@centos7 ~ 17:15:00]# grep user02 /etc/passwd
user02:x:8888:10:user software manage:/opt/user02:/sbin/nologin

# 创建一个没有密码的账户,该用户在图形化界面中可以直接登录
[root@centos7 ~ 17:15:10]# useradd -p ' ' tom
#查看是否创建成功
[root@centos7 ~ 17:16:12]# grep tom /etc/passwd
tom:x:8889:8889::/home/tom:/bin/bash
#查看tom用户的密码,为空
[root@centos7 ~ 17:16:24]# grep tom /etc/shadow
tom: :20652:0:99999:7:::

3.5 /etc/skel/目录

新用户家目录中的文件来源于 /etc/skel/ 目录

/etc/skel 是系统的「用户模板目录」,新建普通用户时,系统会自动把 /etc/skel/ 下所有文件 / 目录,复制到新用户的家目录(/home/用户名),用来统一初始化用户环境

#ls -a:显示隐藏文件,~tom:是tom用户的家目录下
[root@centos7 ~ 17:17:07]# ls -a ~tom
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla
#/etc/skel是
[root@centos7 ~ 17:20:04]# ls -a /etc/skel/
.  ..  .bash_logout  .bash_profile  .bashrc  .mozilla

3.6 /etc/login.defs目录

创建用户的时候,用户属性默认参数配置在 /etc/login.defs 文件。

[root@centos7 ~ 17:20:13]# vim /etc/login.defs 
MAIL_DIR        /var/spool/mail
UMASK           022
HOME_MODE       0700

PASS_MAX_DAYS   99999
PASS_MIN_DAYS   0
PASS_MIN_LEN    5
PASS_WARN_AGE   7

# Min/max values for automatic uid selection in useradd
UID_MIN                  1000
UID_MAX                 60000
# System accounts
SYS_UID_MIN               201
SYS_UID_MAX               999

# Min/max values for automatic gid selection in groupadd
GID_MIN                  1000
GID_MAX                 60000
# System accounts
SYS_GID_MIN               201
SYS_GID_MAX               999

CREATE_HOME     yes
USERGROUPS_ENAB yes
...

3.7 usermod 命令

作用:修改用户属性。

#-u uid
#-m :move home :将家目录内容移至新位置(仅于-d一起使用)
#-d:用户新的主目录
#-s:shell程序
[root@centos7 ~ 14:35:22]# usermod user02 -u 1008 -md /home/user02 -s /bin/bash
[root@centos7 ~ 14:37:15]# grep user02 /etc/passwd
user02:x:1008:10:user software manage:/home/user02:/bin/bash
[root@centos7 ~ 14:37:57]# su - user02
[user02@centos7 ~ 14:38:14]$ 登出


#id 查看用户分组情况
#-a:代表补充组设置user01
#-G:设置分组
[root@centos7 ~ 14:38:27]# id user02
uid=1008(user02) gid=10(wheel)=10(wheel)
[root@centos7 ~ 14:39:16]# usermod -aG user01 user02
[root@centos7 ~ 14:39:36]# id user02
uid=1008(user02) gid=10(wheel)=10(wheel),1004(user01)

3.8 userdel 命令

#正常删除
[root@centos7 ~ 14:46:52]# useradd user03
[root@centos7 ~ 14:47:08]# userdel user03

#强制删除
[root@centos7 ~ 14:47:22]# userdel user02
userdel: user user02 is currently used by process 2254
[root@centos7 ~ 14:49:51]# id user02
uid=1008(user02) gid=10(wheel)=10(wheel),1004(user01)

#尽量不要强制删除,要找到原因
[root@centos7 ~ 14:50:03]# userdel -f user02
userdel: user user02 is currently used by process 2254
[root@centos7 ~ 14:53:45]# id user02
id: user02: no such user

#注意无论是强制删除还是正常删除,家目录和邮件还会存留用户的信息
#/home
#/var/mail
[root@centos7 ~ 14:55:07]# ls /home
liulele  tom  user01  user02  user03  zhangmeili
[root@centos7 ~ 14:55:21]# ls /var/mail/
liulele  root  rpc  tom  user02  user03
[root@centos7 home 15:00:32]# rm -rf user03 user02
[root@centos7 mail 15:01:02]#rm -rf user03 user02

3.9 练习(动手吧)📝

  1. 创建 operator1 用户

    [root@centos7 ~ 17:11:28]# useradd operator1
    
  2. 使用 id 验证 operator1 用户信息

    [root@centos7 ~ 17:11:49]# id operator1
    uid=8890(operator1) gid=8890(operator1)=8890(operator1)
    
  3. 查看 /etc/passwd 中对应条目

    [root@centos7 ~ 17:11:58]# grep operator1 /etc/passwd
    operator1:x:8890:8890::/home/operator1:/bin/bash
    
  4. 密码设置为123

    #交互式修改
    [root@centos7 ~ 17:15:07]# usermod -p '123' operator1
    #非交互式修改
    [root@centos7 ~ 17:14:04]# echo '123' |passwd operator1 --stdin
    更改用户 operator1 的密码 。
    passwd:所有的身份验证令牌已经成功更新。
    
  5. 修改 operator1 用户uid为1088

  6. 修改 operator1 用户描述信息为"Operator One"

    #usrmod修改用户信息
    #-u :uid
    # -c 描述信息,注意内容加""
    [root@centos7 ~ 17:17:34]# usermod  operator1 -u 1088 -c "Operator One"  
    [root@centos7 ~ 17:18:04]# grep operator1 /etc/passwd
    operator1:x:1088:8890:Operator One:/home/operator1:/bin/bash
    
  7. 将 wheel 组作为补充组添加给 operator1 用户

    #id查看用户的分组情况
    [root@centos7 ~ 17:18:18]# id operator1
    uid=1088(operator1) gid=8890(operator1)=8890(operator1)
    #-a是补充的意思
    #G是用户组的意思
    #注意参数1 是需要补充的用户内容,参数二是用户
    [root@centos7 ~ 17:19:06]# usermod -aG wheel operator1
    [root@centos7 ~ 17:19:27]# id operator1
    uid=1088(operator1) gid=8890(operator1)=8890(operator1),10(wheel)
    
  8. 查看 /etc/group 中对应条目

    [root@centos7 ~ 17:19:53]# grep operator1 /etc/group
    wheel:x:10:liulele,operator1
    operator1:x:8890:
    
  9. 删除 operator1 用户

    #userdel删除用户
    #-f 强制删除
    [root@centos7 ~ 17:20:07]# userdel operator1
    userdel: user operator1 is currently used by process 10188
    #这里强制删除出现说operator1表示正在使用,但是已经删除了。
    [root@centos7 ~ 17:21:32]# userdel -f operator1
    userdel: user operator1 is currently used by process 10188
    #id 用户名:查看用户的分组情况
    [root@centos7 ~ 17:21:57]# id operator1
    id: operator1: no such user
    #虽然用户已经被删除了,但是再家目录/home下用户文件还是存在的
    [root@centos7 ~ 17:30:24]# ls /home
    laowang  liulele  operator1  tom  user01
    [root@centos7 ~ 17:30:54]# cd /home/
    #需手动删除
    [root@centos7 home 17:31:13]# rm -rf operator1/
    [root@centos7 home 17:31:21]# ls
    #邮件也需要删除
    [root@centos7 ~ 09:15:34]# ls /var/spool/mail/
    laowang  liulele  operator1  rpc  tom  user01
    [root@centos7 ~ 09:21:22]# rm -rf /var/spool/mail/operator1 
    

3.10 进阶硬核实验:不使用 useradd,手动创建用户🤯

很多面试会问到:useradd 底层到底改了哪些文件?我们手动修改四大配置文件,复刻用户创建全过程,吃透底层原理!

# 步骤1:添加账户
# 编辑passwd添加用户条目,UID、GID不能重复
[root@centos7 ~ 15:01:06]# vim /etc/passwd
#最后一行添加如下内容,注意uid要在原有的基础上增加1
zhangsan:x:1001:1001::/home/zhangsan:/bin/bash

# 步骤2:添加组
[root@centos7 ~ 15:07:59]# vim /etc/group
# 最后一行添加如下内容
zhangsan:x:1001:

# 步骤3:添加密码
[root@centos7 ~ 15:10:50]# vim /etc/shadow
# 最后一行添加如下内容
# 而这里写的是空密码
zhangsan:::0:99999:7:::

# 步骤4:复制系统骨架目录skel生成家目录
[root@centos7 ~ 15:17:54]# cp -r /etc/skel/ /home/zhangsan

# 步骤5:修改家目录归属用户和组
[root@centos7 ~ 15:22:27]# ls -ld /home/zhangsan
drwxr-xr-x. 3 root root 78 719 15:19 /home/zhangsan
[root@centos7 ~ 15:23:16]# chown zhangsan:zhangsan  /home/zhangsan
[root@centos7 ~ 15:23:32]# ls -ld /home/zhangsan
drwxr-xr-x. 3 zhangsan zhangsan 78 719 15:19 /home/zhangsan

# 测试登录验证
ssh zhangsan@localhost

#vim /etc/passwd
在这里插入图片描述

#vim /etc/group
在这里插入图片描述

#vim /etc/shadow
在这里插入图片描述

3.11 三大登录故障模拟 + 一键修复🛠️

故障 1:登录后提示符变成 bash-4.2$

现象:丢失用户名、主机名、路径提示符,只有基础 bash 标识

原因:/etc/bashrc 全局 shell 配置文件缺失,nologin shell打开的时候执行 /etc/bashrc 配置,登录 shell 无法加载环境变量

模拟:

#echo 打印显示,mv这里是用作重命名
[root@centos7 ~ 15:31:32]# echo mv /etc/bashrc{,.ori}
mv /etc/bashrc /etc/bashrc.ori
[root@centos7 ~ 15:32:23]# mv /etc/bashrc{,.ori}
[root@centos7 ~ 15:32:34]# bash
bash-4.2#

恢复:

bash-4.2# mv /etc/bashrc{.ori,}
bash-4.2# bash
[root@centos7 ~ 15:34:31]# 
故障 2:误删家目录,登录提示 No such file or directory

报错:Could not chdir to home directory /home/zhangsan: No such file or directory

模拟:

[root@centos7 ~ 15:34:47]# rm -rf /home/zhangan
#登录zhangsan用户

解决

[root@centos7 ~ 15:37:39]# cp -r /etc/skel/ /home/zhangsan/
[root@centos7 ~ 15:38:53]# chown zhangsan:zhangsan /home/zhangsan/
故障 3:家目录权限不足 Permission denied

报错:无法切换到家目录、无法读取.bash_profile

模拟:移除用户自身读写执行权限

[root@centos7 ~ 15:42:35]# chmod u=- /home/zhangsan
[root@centos7 ~ 15:42:43]# ls -ld /home/zhangsan
d---r-xr-x. 6 zhangsan zhangsan 119 719 15:38 /home/zhangsan

修复:递归修正归属 + 重置目录权限

[root@centos7 ~ 15:42:51]#  chown -R zhangsan:zhangsan /home/zhangsan
[root@centos7 ~ 15:43:19]# chmod u=rxw /home/zhangsan
#或者 标准用户家目录权限推荐700
[root@centos7 ~ 15:43:19]# chmod 700 /home/zhangsan

[root@centos7 ~ 15:43:38]# ls -ld /home/zhangsan
drwxr-xr-x. 6 zhangsan zhangsan 119 719 15:38 /home/zhangsan

四、本地组管理:批量管控用户权限👥

用户组作用:将多个业务用户放入同一组,统一设置文件 / 目录权限,不用逐个修改用户权限,批量管理超省心!核心配置文件 /etc/group

4.1 groupadd命令

创建用户组

# 创建名称为admin的组
[root@centos7 ~ 15:45:36]# groupadd admin
# 指定GID=2000创建sysadmin组
[root@centos7 ~ 16:00:20]# groupadd sysadmin -g 2000
# 验证组信息

[root@centos7 ~ 16:02:42]# grep admin /etc/group
printadmin:x:997:
admin:x:1002:
sysadmin:x:2000:

4.2 groupmod 修改组属性

# 修改组名称
[root@centos7 ~ 16:03:03]# groupmod --new-name admins admin
# 修改组id
[root@centos7 ~ 16:11:03]# groupmod -g 2002 admins
# 验证
[root@centos7 ~ 16:11:11]# grep admin /etc/group
printadmin:x:997:
sysadmin:x:2000:
admins:x:2002:

4.3 groupdel 命令

[root@centos7 ~ 16:11:58]# groupdel sysadmin
[root@centos7 ~ 16:13:40]# grep sysadmin /etc/group

4.4 groupmems 命令

精细化管理组内成员✨

专门用来增删、清空、查看组内用户,无需反复使用 usermod 附属组参数,操作更简洁!

[root@centos7 ~ 16:16:02]# groupmems --help
用法:groupmems [选项] [动作]

选项:
  -g, --group groupname         更改组 groupname,而不是用户的组(只 root)
  -R, --root CHROOT_DIR         chroot 到的目录

动作:
  -a, --add username            将用户 username 添加到组成员中
  -d, --delete username         从组的成员中删除用户 username
  -h, --help                    显示此帮助信息并推出
  -p, --purge                   从组中移除所有成员
  -l, --list                    列出组中的所有成员

# 添加成员
[root@centos7 ~ 16:16:19]# groupmems -g admins -a liulele
[root@centos7 ~ 16:17:35]# groupmems -g admins -l
liulele 
[root@centos7 ~ 16:17:47]# id liulele
uid=1000(liulele) gid=1000(liulele)=1000(liulele),10(wheel),2002(admins)

# 删除成员
[root@centos7 ~ 16:17:58]# groupmems -g admins -d liulele
[root@centos7 ~ 16:18:31]# groupmems -g admins -l

#清空组中所有成员
[root@centos7 ~ 16:18:45]# groupmems -g admins -a liulele
[root@centos7 ~ 16:19:43]# groupmems -g admins -p 

4.5 练习(动手吧)📝

  1. 创建developer组,组id为2000

    [root@centos7 ~ 16:23:02]# groupdel developer 
    [root@centos7 ~ 16:23:37]# groupadd developer -g 2000
    [root@centos7 ~ 16:23:53]# grep deve /etc/group
    developer:x:2000:
    
  2. 修改developer组名称为developer1,组id为3000

    [root@centos7 ~ 16:24:16]# groupmod --new-name developer1 developer
    [root@centos7 ~ 16:25:51]# groupmod developer1 -g 3000
    [root@centos7 ~ 16:26:31]# grep deve /etc/group
    developer1:x:3000:
    
  3. 创建liudoudou用户,并添加到组developer1

    [root@centos7 ~ 16:26:51]# useradd liudoudou
    [root@centos7 ~ 16:32:36]# groupmems -g developer1 -a liudoudou
    [root@centos7 ~ 16:28:42]# id liudoudou
    uid=1002(liudoudou) gid=3000(developer1)=3000(developer1)
    
  4. 将liudoudou用户从组developer1中删除

    [root@centos7 ~ 16:32:57]# groupmems -g developer1 -d liudoudou
    [root@centos7 ~ 16:33:20]# id liudoudou
    uid=1002(liudoudou) gid=1002(liudoudou)=1002(liudoudou)
    
  5. 删除组developer1

[root@centos7 ~ 16:33:33]# groupdel developer1 
[root@centos7 ~ 16:34:41]# grep developer1 /etc/group

五、密码深度管理:shadow 文件与账号安全策略🔐

5.1 /etc/shadow 密码影子文件详解

/etc/shadow 文件保存操作系统登录用户密码信息。

每行包含一个登录用户信息,以冒号分隔九个域。

示例:

[root@centos7 ~ 11:10:19]# grep liulele /etc/shadow
liulele:$6$hhZq7eHV$4bu30L5L5FOMyFWYVFHMXUKydKuXjw9OmgKjSwLDwUGZCqvV0Fd3RKOmv5fWLxEeZXIIbJXZWLKwGHfGFiwlO/:20649:0:99999:7:::

解释如下:

  • login name:用户登录名。
  • encrypted password:加密的密码。
  • date of last password change:上一次密码更改日期,以距离1970-1-1过去的天数表示。设置为0,强制用户下次登录时更改密码。
  • minimum password age:最小密码生命周期。设置为0,密码可以随时更改。
  • maximum password age:最大密码生命周期。
  • password warning period:密码过期前,提前多少天告警。设置为0,不提示过期。
  • password inactivity period:密码过期后,非活跃天数,在期间密码仍可以使用。
  • account expiration date:账户过期时间,以距离1970-1-1过去的天数表示。
  • reserved field:保留域。

chage 命令

在这里插入图片描述

[root@centos7 ~ 10:35:58]# chage -l liulele
最近一次密码修改时间					:7月 15, 2026
密码过期时间					:从不
密码失效时间					:从不
帐户过期时间						:从不
两次改变密码之间相距的最小天数		:0
两次改变密码之间相距的最大天数		:99999
在密码过期之前警告的天数	
#-M 设置最大时间
[root@centos7 ~ 11:14:42]# chage -M 100 liulele
[root@centos7 ~ 11:14:48]# chage -l liulele
最近一次密码修改时间					:7月 15, 2026
密码过期时间					:10月 23, 2026
密码失效时间					:从不
帐户过期时间						:从不
两次改变密码之间相距的最小天数		:0
两次改变密码之间相距的最大天数		:100
在密码过期之前警告的天数	:7
#-m设置最小时间
[root@centos7 ~ 11:14:56]# chage -m 10 liulele
[root@centos7 ~ 11:15:12]# chage -l liulele
最近一次密码修改时间					:7月 15, 2026
密码过期时间					:10月 23, 2026
密码失效时间					:从不
帐户过期时间						:从不
两次改变密码之间相距的最小天数		:10
两次改变密码之间相距的最大天数		:100
在密码过期之前警告的天数	:7
#-W设置密码过去时间警告天数,7天内不更改就自动锁定
[root@centos7 ~ 11:21:43]# chage -W 7 liulele
[root@centos7 ~ 11:22:04]# chage -l liulele
最近一次密码修改时间					:7月 15, 2026
密码过期时间					:10月 23, 2026
密码失效时间					:从不
帐户过期时间						:从不
两次改变密码之间相距的最小天数		:10
两次改变密码之间相距的最大天数		:100
在密码过期之前警告的天数	:7
#-d 0
#-d:全称 --lastday,代表密码最后一次修改的日期
#0:Linux 系统中,日期以1970-01-01(Unix 时间戳起点)为第 0 天
#效果:把用户密码的最后修改时间设为系统原点,系统判定密码已过期
[root@centos7 ~ 11:22:13]# chage -d 0 liulele

#-E 设置用户账户过期时间是过去的一个时间,以便锁定用户账户
#这里的时间是已经账户时间过期了,用户liulele登录就会失败
[root@centos7 ~ 11:26:28]# chage -E 2026-7-17  liulele
[root@centos7 ~ 11:26:45]# chage -l liulele
最近一次密码修改时间					:密码必须更改
密码过期时间					:密码必须更改
密码失效时间					:密码必须更改
帐户过期时间						:7月 17, 2026
两次改变密码之间相距的最小天数		:10
两次改变密码之间相距的最大天数		:100
在密码过期之前警告的天数	:7

#-E是设置用户账户过期时间是过去的一个时间,以便锁定用户账户
#-M 最大时间
# -m 最小时间
#-1 设置永久时间
[root@centos7 ~ 11:43:40]# chage -E -1 liulele
[root@centos7 ~ 11:43:40]# chage -M 9999 liulele
[root@centos7 ~ 11:43:40]# chage -m 0 liulele
[root@centos7 ~ 11:46:12]# chage -l liulele
最近一次密码修改时间					:7月 18, 2026
密码过期时间					:永不
密码失效时间					:从不
帐户过期时间						:从不
两次改变密码之间相距的最小天数		:0
两次改变密码之间相距的最大天数		:9999
在密码过期之前警告的天数	:7

在这里插入图片描述
在这里插入图片描述

5.2 usermod -p 更改用户密码

[root@centos7 ~ 11:41:05]# usermod -p ' ' liulele
[root@centos7 ~ 11:43:05]# usermod -p '123' liulele
#或者非交互型更改
[root@centos7 ~ 11:43:11]# echo '123' |passwd --stdin liulele
更改用户 liulele 的密码 。
passwd:所有的身份验证令牌已经成功更新。

5.3 usermod -s 限定用户shell(两种禁止登录方案)

场景:后台程序账号、数据库账号,不需要交互式登录

方法一:修改 shell 为 /sbin/nologin

[root@centos7 ~ 12:40:09]# usermod -s /sbin/nologin liulele
[root@centos7 ~ 12:40:24]# su -l liulele
上一次登录:六 718 12:39:37 CST 2026pts/1 上
This account is currently not available.
#恢复登录权限
[root@centos7 ~ 12:40:30]# usermod -s /bin/bash liulele

5.4 usermod -L 锁定用户密码

方案 2:锁定用户密码(usermod -L /passwd -l)

[root@centos7 ~ 12:40:52]# usermod -L liulele
[root@centos7 ~ 12:44:12]# su - liulele
Password: 
su: Authentication failure

5.5 usermod -U 解锁用户密码

等效于passwd -u

[root@centos7 ~ 12:45:56]#  usermod -U liulele
[root@centos7 ~ 12:45:56]# su - liulele
Password: 
[liulele@centos7 ~ 12:47:24]$

5.6 passwd -d 删除密码

用户登录的时候,输入用户名即可登录。

# 删除用户密码即可
[root@centos7 ~ 12:48:23]# passwd -d liulele
清除用户的密码 liulele。
passwd: 操作成功

5.7 设置账户过期

等效于passwd -e

# 设置账户过期时间为过去的某一个日期
[root@centos7 ~ 12:48:42]# usermod -e 2026-7-15 liulele

#或者
[root@centos7 ~ 12:48:42]# chage -E  2026-7-15 liulele

5.8 增加一个 uid 为 0 的用户

方法一

[root@centos7 ~ 12:50:19]# vi /etc/passwd
# 将自己的用户id该为0,此时liulele用户可以行使root权限了
liulele:x:0:1000:liulele:/home/liulele:/bin/bash

方法二

liubing和 root 账户是两个不同的账户,但是laoma用户获得了root账户权限。

[root@centos7 ~ 12:54:04]# useradd -o -u 0 liubing
[root@centos7 ~ 12:54:09]# id liubing
uid=0(root) gid=0(root)=0(root)

动手

  1. 添加用户 laowang,设置密码与laoma用户一致。(不允许使用passwd命令)
  2. 设置 laowang 密码: - 首次登录必须修改密码 - 3天内不允许修改 - 100天后过期
  3. 禁止 laowang 登录系统,至少使用2种方法。

5.9 、系统 Shell 拓展与 tmux 小工具🖥️

  1. 查看系统全部可用 Shell
[root@centos7 ~ 16:35:08]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
# sh是bash软链接
[root@centos7 ~ 20:19:36]# ls -l /bin/sh  /usr/bin/sh
lrwxrwxrwx. 1 root root 4 714 10:27 /bin/sh -> bash
lrwxrwxrwx. 1 root root 4 714 10:27 /usr/bin/sh -> bash
  1. 安装拓展 shell

    # csh/tcsh
    [root@centos7 ~ 20:26:05]# yum install -y tcsh
    # 终端复用工具tmux
    [root@centos7 ~ 20:24:07]# yum install -y tmux
    [root@centos7 ~ 20:26:22]# ll /bin/csh /usr/bin/tcsh
    lrwxrwxrwx. 1 root root      4 714 10:31 /bin/csh -> tcsh
    -rwxr-xr-x. 1 root root 404632 1117 2020 /usr/bin/tcsh
    
  2. tmux 基础快捷键(前缀 Ctrl+b)⌨️

  • c:新建窗口会话
  • 数字键:切换对应编号会话

总结📚

  1. 掌握三大核心文件:/etc/passwd用户信息、/etc/group分组、/etc/shadow加密密码与密码周期。
  2. 用户 / 组全套命令:增删改查用户、自定义 GID/UID、批量管理组成员。
  3. 密码安全:chage管控有效期,多种锁定、免交互改密方式,禁用登录两种方案。
  4. 三大登录故障:提示符异常、家目录丢失、权限不足,熟记修复步骤。
  5. 安全提醒:禁止多 UID=0 账号,后台程序 Shell 设为/sbin/nologin,规范密码策略。
  6. 拓展:系统各类 Shell、tmux 简易终端复用操作。
    n/sh /usr/bin/sh
    lrwxrwxrwx. 1 root root 4 7月 14 10:27 /bin/sh -> bash
    lrwxrwxrwx. 1 root root 4 7月 14 10:27 /usr/bin/sh -> bash

2. 安装拓展 shell

   ~~~bash
   # csh/tcsh
   [root@centos7 ~ 20:26:05]# yum install -y tcsh
   # 终端复用工具tmux
   [root@centos7 ~ 20:24:07]# yum install -y tmux
   [root@centos7 ~ 20:26:22]# ll /bin/csh /usr/bin/tcsh
   lrwxrwxrwx. 1 root root      4 7月  14 10:31 /bin/csh -> tcsh
   -rwxr-xr-x. 1 root root 404632 11月 17 2020 /usr/bin/tcsh
  1. tmux 基础快捷键(前缀 Ctrl+b)⌨️
  • c:新建窗口会话
  • 数字键:切换对应编号会话

总结📚

  1. 掌握三大核心文件:/etc/passwd用户信息、/etc/group分组、/etc/shadow加密密码与密码周期。
  2. 用户 / 组全套命令:增删改查用户、自定义 GID/UID、批量管理组成员。
  3. 密码安全:chage管控有效期,多种锁定、免交互改密方式,禁用登录两种方案。
  4. 三大登录故障:提示符异常、家目录丢失、权限不足,熟记修复步骤。
  5. 安全提醒:禁止多 UID=0 账号,后台程序 Shell 设为/sbin/nologin,规范密码策略。
  6. 拓展:系统各类 Shell、tmux 简易终端复用操作。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐