Linux 用户与用户组管理全解析:从基础概念到实战操作(附实验案例)

一、用户与用户组核心配置文件

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)深入学习各命令参数,并在测试环境中反复练习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值