在 Linux 系统运维中,用户与组的管理是核心基础技能之一,直接关系到系统的安全性与资源访问权限的管控。本文将从本地用户管理、本地组管理、密码策略配置三个维度,结合实操案例与课后作业,全面讲解 Linux 用户与组管理的核心操作与进阶技巧,助力大家快速掌握系统权限管控精髓。

一、本地用户管理:基础操作与课后实战

Linux 系统中,用户信息主要存储在/etc/passwd(用户基础信息)、/etc/shadow(密码加密信息)两个核心配置文件中,掌握用户的创建、修改、验证与删除,是运维入门的必备技能。

1.综合案例:operator1 用户全流程管理实操

以下为完整实操命令,涵盖用户创建、信息验证、属性修改、组关联及删除全流程,可直接复制执行(需 root 权限):

# 1. 创建 operator1 用户
useradd operator1

# 2. 使用 id 命令验证用户基础信息(UID、GID、所属组等)
id operator1

# 3. 查看 /etc/passwd 中 operator1 对应的条目(验证用户基础配置)
grep operator1 /etc/passwd

# 4. 为 operator1 设置密码为 redhat(--stdin 实现非交互式密码设置)
echo "redhat" | passwd --stdin operator1

# 5. 修改 operator1 用户的 UID 为 1088(需确保 UID 未被占用)
usermod -u 1088 operator1

# 6. 修改 operator1 用户的描述信息为"Operator One"(完善用户备注)
usermod -c "Operator One" operator1

# 7. 将 wheel 组(管理员特权组)作为补充组添加给 operator1
usermod -aG wheel operator1

# 8. 查看 /etc/group 中 wheel 组条目(验证用户是否成功加入)
grep wheel /etc/group

# 9. 删除 operator1 用户(-r 参数连带删除家目录及相关文件)
userdel -r operator1

2.进阶实战:手动创建用户 zhangsan(深入底层原理)

通过手动修改配置文件创建用户,能更清晰理解 Linux 用户管理的底层逻辑,核心涉及4个关键步骤,缺一不可:

步骤1:添加用户基础信息(/etc/passwd)

编辑 /etc/passwd 文件,在末尾添加用户条目,注意 UID 需在系统现有基础上递增,避免冲突:

vim /etc/passwd
# 末尾添加如下内容,格式:用户名:密码占位符:UID:GID:描述:家目录:登录Shell
zhangsan:x:1002:1002::/home/zhangsan:/bin/bash
步骤2:创建用户专属组(/etc/group)

Linux 默认创建用户时会同步创建同名组,手动创建需在 /etc/group 中添加对应组条目:

vim /etc/group
# 末尾添加如下内容,格式:组名:密码占位符:GID:组成员
zhangsan:x:1002:
步骤3:配置用户密码(/etc/shadow)

/etc/shadow 存储用户加密密码及密码策略,手动添加需确保密码加密格式正确(可复制现有用户加密串修改):

vim /etc/shadow
# 末尾添加如下内容,格式:用户名:加密密码:最后修改时间:最小有效期:最大有效期:警告期:非活跃期:过期时间:保留字段
zhangsan:$6$FgUNKn74yoEDbcXD$pxDk9AEhsxkJGYi76Rv91zLy5LRns8olgAyGuNssQYG07ypaidhuX0gHAU4hrNi9Zp9A7vtMEvbyzCQ0e/gbk1::0:99999:7:::
步骤4:配置用户家目录(/home/zhangsan)

用户家目录是用户登录后的默认工作目录,需从 /etc/skel(模板目录)复制基础配置,并修改权限:

# 复制模板目录到用户家目录
cp -r /etc/skel/ /home/zhangsan
# 修改家目录所属用户和组为 zhangsan
chown zhangsan:zhangsan /home/zhangsan
# 验证家目录权限
ll -d /home/zhangsan
常见故障排查与解决

手动创建用户或日常运维中,常遇到家目录缺失、权限不足等问题,以下为两种典型故障及解决方法:

  • 故障1:家目录缺失
    现象:登录时提示 Could not chdir to home directory /home/zhangsan: No such file or directory
    解决:重新复制模板目录并修改权限,执行命令:
    cp -r /etc/skel/ /home/zhangsan && chown -R zhangsan:zhangsan /home/zhangsan

  • 故障2:家目录权限不足
    现象:登录时提示 Could not chdir to home directory /home/zhangsan: Permission denied
    解决:修改家目录权限,赋予用户读写执行权限,执行命令:
    chown -R zhangsan:zhangsan /home/zhangsan && chmod u=rwx /home/zhangsan

二、本地组管理:组的创建、修改与成员管控

Linux 中组用于批量管理用户权限,通过组权限可快速实现多个用户的资源访问管控,核心涉及 groupaddgroupmodgroupdelgroupmems 四个命令。

1.groupadd:创建新组

用于创建新的用户组,可指定组名、GID,默认 GID 会在系统现有基础上递增:

# 创建名称为 admin 的普通组
groupadd admin

# 创建名称为 sysadmin 的组,指定 GID 为 2000(需确保 GID 未被占用)
groupadd sysadmin -g 2000

# 验证组是否创建成功
grep admin /etc/group

2.groupmod:修改组属性

用于修改已存在组的名称、GID 等属性,修改后需验证配置文件确保生效:

# 修改组名称:将 admin 组重命名为 admins
groupmod --new-name admins admin

# 修改组 GID:将 admins 组的 GID 修改为 2002
groupmod -g 2002 admins

# 验证修改结果
grep 'admins' /etc/group

3.groupdel:删除组

用于删除不再使用的组,注意:若组为某用户的主组,需先修改用户主组,再删除该组:

# 删除 sysadmin 组
groupdel sysadmin 

# 验证组是否删除成功
grep sysadmin /etc/group

4.groupmems:管理组成员

用于批量添加、删除、列出组成员,仅 root 用户可操作其他组,普通用户仅可管理自身所属组:

# 查看命令帮助
groupmems --help

# 1. 添加成员:将 csh 用户添加到 admins 组
groupmems -g admins -a csh

# 2. 列出组成员:查看 admins 组的所有成员
groupmems -g admins -l

# 3. 删除成员:将 csh 用户从 admins 组中删除
groupmems -g admins -d csh

# 4. 清空成员:清空 admins 组的所有成员
groupmems -g admins -p

5.练习:组管理实操

结合上述命令,完成以下组管理实操,巩固核心技能:

# 1. 创建 developer 组,指定 GID 为 2000
groupadd developer -g 2000

# 2. 修改 developer 组名称为 developers,GID 修改为 3000
groupmod --new-name developers -g 3000 developer

# 3. 创建 developer1 用户,并将其添加到 developers 组(作为补充组)
useradd developer1 && groupmems -g developers -a developer1

# 4. 将 developer1 用户从 developers 组中删除
groupmems -g developers -d developer1

# 5. 删除 developers 组
groupdel developers

三、用户密码管理:策略配置与安全管控

用户密码是系统安全的第一道防线,Linux 通过 /etc/shadow 文件存储密码信息及策略,通过 chageusermodpasswd 等命令可实现密码策略的精细化管控。

1. /etc/shadow 文件解析

/etc/shadow 文件每行对应一个用户的密码信息,以冒号分隔9个字段,核心字段含义如下(以用户 csh 为例):

# 查看用户密码信息
grep csh /etc/shadow
# 示例输出:csh:$6$m0OgWyIu$P2TF1pB8MO...J3LopEUdhmp/Ir/:19300:0:99999:7:::

各字段含义(从左到右):

  1. 登录名:用户登录系统的用户名,与 /etc/passwd 中用户名一致;

  2. 加密密码:采用 SHA-512 算法加密的密码串,若为空表示无密码,若为 ! 表示密码被锁定;

  3. 最后密码修改时间:距离1970年1月1日的天数,设置为0表示强制用户下次登录时修改密码;

  4. 最小密码生命周期:用户两次修改密码的最小间隔天数,设置为0表示可随时修改;

  5. 最大密码生命周期:密码的有效天数,到期后需修改密码;

  6. 密码警告期:密码过期前,系统提前警告用户的天数;

  7. 密码非活跃期:密码过期后,用户仍可登录的宽限天数,到期后账户锁定;

  8. 账户过期时间:账户的有效截止日期,以距离1970年1月1日的天数表示,到期后账户无法登录;

  9. 保留字段:预留字段,暂未使用。

2.chage:精细化配置密码策略

chage 命令用于查看、修改用户密码策略,是实现密码安全管控的核心命令,常用参数及实操如下:

# 1. 查看用户密码策略详情
chage -l csh

# 2. 修改密码最大有效期:设置 csh 用户密码100天后过期
chage -M 100 csh

# 3. 修改密码最小有效期:设置 csh 用户密码3天内不允许修改
chage -m 3 csh

# 4. 强制用户下次登录修改密码:设置最后密码修改时间为0
chage -d 0 csh

# 5. 锁定用户账户:设置账户过期时间为过去日期(如1970-01-01)
chage -E 1970-01-01 csh

3.usermod:用户密码与登录权限管控

usermod 命令可实现密码批量复制、登录 Shell 限定、密码锁定/解锁等操作,适用于批量运维场景:

# 1. 批量复制密码:将 laowang 用户的密码设置为与 laoma 一致(无需交互)
# 先查看 laoma 的加密密码串
grep csh /etc/shadow
# 复制加密串,替换到以下命令中
usermod -p '$6$m0OgWyIu$P2TF1pB8MO...J3LopEUdhmp/Ir/' laowang

# 2. 删除用户密码:清空 laowang 用户密码,登录时无需输入密码
usermod -p '' laowang

# 3. 限定用户登录 Shell:将 laowang 用户的登录 Shell 修改为 /sbin/nologin(禁止登录)
usermod -s /sbin/nologin laowang

# 4. 恢复用户登录 Shell:将 laowang 用户的登录 Shell 改回 /bin/bash
usermod -s /bin/bash laowang

# 5. 锁定用户密码:锁定 laowang 用户密码,禁止登录(等效于 passwd -l)
usermod -L laowang

# 6. 解锁用户密码:解锁 laowang 用户密码,恢复登录(等效于 passwd -u)
usermod -U laowang

# 7. 设置账户过期时间:设置 laowang 用户账户2024年7月18日过期
usermod -e 2024-07-18 laowang

4.passwd:快速管理用户密码

passwd 命令是管理用户密码的基础命令,适用于单用户密码设置、删除、锁定等场景:

# 1. 非交互式设置密码:为 laowang 设置密码为 redhat
echo "redhat" | passwd --stdin laowang

# 2. 删除用户密码:清空 laowang 用户密码(等效于 usermod -p '')
passwd -d laowang

# 3. 锁定用户密码:锁定 laowang 用户密码(等效于 usermod -L)
passwd -l laowang

# 4. 解锁用户密码:解锁 laowang 用户密码(等效于 usermod -U)
passwd -u laowang

5.进阶技巧:创建 UID 为 0 的特权用户

Linux 中 UID 为 0 的用户拥有 root 管理员权限,可通过以下两种方式创建特权用户(谨慎操作,避免安全风险):

# 方法一:手动修改 /etc/passwd 文件,将用户 UID 改为 0
vim /etc/passwd
# 将 csh 用户的 UID 改为 0,格式如下
csh:x:0:1000:csh:/home/csh:/bin/bash

# 方法二:使用 useradd 命令,-o 表示允许 UID 重复,-u 指定 UID 为 0
useradd -o -u 0 csh

# 验证用户权限
id csh

四、拓展:Linux 登录 Shell 管理

登录 Shell 是用户登录系统后默认的交互环境,Linux 支持多种 Shell,可根据需求安装、切换,核心操作如下:

# 1. 查看系统中已安装的 Shell 清单
cat /etc/shells

# 2. 查看默认 Shell 关联关系(/bin/sh 软链接到 bash)
ll /bin/sh /usr/bin/sh

# 3. 安装额外 Shell(如 tmux、csh)
yum install -y tmux tcsh

# 4. 验证安装结果
ll /bin/csh /usr/bin/csh

补充:tmux 是一款终端复用工具,登录后可通过快捷键 Ctrl+b 实现会话管理,常用快捷键:c(新建会话)、数字键(切换对应编号会话)。

五、总结

Linux 用户与组管理的核心是围绕 /etc/passwd/etc/group/etc/shadow 三个配置文件,通过各类命令实现用户、组的创建、修改、删除及权限管控。掌握基础操作是前提,理解底层配置文件的逻辑是关键,而精细化的密码策略与权限管控,是保障系统安全的核心。希望本文的实操案例与技巧,能帮助大家快速提升 Linux 运维技能,从容应对各类权限管控场景。

如果大家在实操过程中有疑问,欢迎在评论区留言交流,一起探讨 Linux 运维的进阶技巧!

Logo

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

更多推荐