
03 - 用户与用户组管理一、用户与组的概念Linux 是多用户操作系统通过用户和组来管理访问控制用户User系统中的每个使用者有唯一的 UID组Group用户的集合有唯一的 GID方便批量授权用户分类类型UID 范围说明超级用户0root拥有最高权限系统用户1~999服务运行专用如 nginx、mysql普通用户1000日常使用用户相关配置文件文件作用/etc/passwd用户基本信息/etc/shadow用户密码加密存储/etc/group组基本信息/etc/gshadow组密码# /etc/passwd 格式冒号分隔7 个字段# 用户名:密码占位:UID:GID:描述:家目录:登录Shellroot:x:0:0:root:/root:/bin/bash nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin# /etc/shadow 格式# 用户名:加密密码:最后修改天数:最小间隔:最大天数:警告期:禁用期:过期日期root:$6$xxx...:19000:0:99999:7:::二、用户管理2.1 创建用户 - useradd# 基本创建useraddalice# 常用选项useradd-m-s/bin/bash-cAlice Wangalice# -m 创建家目录# -s 指定登录 Shell# -c 添加描述信息# 指定 UID 和所属组useradd-u2000-gdevelopers-Gdocker,wheel bob# -u 指定 UID# -g 指定主组# -G 指定附加组多个用逗号分隔# 创建系统用户不创建家目录不可登录useradd-r-s/sbin/nologin appuserCentOS vs Ubuntu 差异CentOS 的useradd默认不创建家目录需加-mUbuntu 的adduser命令是交互式的更友好2.2 设置密码 - passwd# 设置自己的密码passwd# root 给其他用户设置密码passwdalice# 锁定/解锁用户密码passwd-lalice# 锁定passwd-ualice# 解锁# 强制用户下次登录时修改密码passwd-ealice2.3 修改用户属性 - usermod# 修改用户名usermod-lnewname oldname# 修改家目录usermod-d/home/newhome-malice# -m 迁移原家目录内容# 修改登录 Shellusermod-s/bin/zsh alice# 添加到附加组保留原有组usermod-aGdockeralice# 注意必须加 -aappend否则会覆盖原有附加组# 修改主组usermod-gdevelopers alice重要usermod -aG中的-a不可省略否则用户将从其他附加组中移除。2.4 删除用户 - userdel# 仅删除用户保留家目录userdelalice# 连同家目录一起删除userdel-ralice2.5 查看用户信息# 查看当前用户whoami# 查看用户 UID、GID 及所属组idalice# 查看用户的组信息groupsalice# 查看当前登录的用户whow# 更详细显示用户在做什么三、用户组管理3.1 创建组 - groupadd# 创建组groupadddevelopers# 指定 GIDgroupadd-g1500testers3.2 修改组 - groupmod# 修改组名groupmod-ndevteam developers# 修改 GIDgroupmod-g1600devteam3.3 删除组 - groupdelgroupdeldevteam如果组是某个用户的主组则无法删除。需先移除该用户或修改其主组。3.4 管理组成员 - gpasswd# 添加用户到组gpasswd-aalice developers# 从组中移除用户gpasswd-dalice developers# 设置组管理员gpasswd-Aalice developers# 批量添加多个用户到组gpasswd-Malice,bob,charlie developers四、sudo 权限管理sudo允许普通用户以 root 身份执行特定命令是生产环境推荐的做法优于直接使用 root。4.1 基本使用# 以 root 身份执行命令sudosystemctl restart nginx# 切换到 root 的 Shellsudo-i# 完整登录 Shellsudosu-# 效果类似# 查看当前用户的 sudo 权限sudo-l4.2 配置 sudo 权限# 使用 visudo 编辑推荐有语法检查visudo配置文件格式# 用户 主机(以谁的身份) 可执行的命令 alice ALL(ALL) ALL # alice 可以执行所有命令 bob ALL(ALL) /usr/bin/systemctl restart nginx # bob 只能重启 nginx %wheel ALL(ALL) ALL # wheel 组的所有成员常用 sudo 配置示例# 免密码执行 sudo开发环境常用aliceALL(ALL)NOPASSWD: ALL# 免密码执行特定命令deployALL(ALL)NOPASSWD: /usr/bin/systemctl, /usr/bin/journalctl# 允许运维组管理服务%opsALL(ALL)NOPASSWD: /usr/bin/systemctl restart *, /usr/bin/systemctl status *4.3 sudo 日志审计# sudo 操作会记录到日志中# CentOS/RHELgrepsudo/var/log/secure# Ubuntu/Debiangrepsudo/var/log/auth.log五、PAM 认证简介PAMPluggable Authentication Modules是 Linux 的可插拔认证框架控制用户登录、密码策略等。常见配置文件/etc/pam.d/# PAM 配置目录/etc/pam.d/sshd# SSH 登录认证/etc/pam.d/login# 本地登录认证/etc/security/limits.conf# 资源限制密码策略配置# /etc/login.defs - 全局密码策略PASS_MAX_DAYS90# 密码最大使用天数PASS_MIN_DAYS2# 密码修改最小间隔天数PASS_MIN_LEN12# 密码最小长度PASS_WARN_AGE7# 密码过期前警告天数六、实战场景场景一创建应用专用用户部署 Nginx 服务时创建专用用户# 创建系统用户不可登录useradd-r-s/sbin/nologin-d/var/lib/nginx-Mnginx# 验证idnginx# uid997(nginx) gid995(nginx) groups997(nginx)场景二创建运维团队并分配权限# 1. 创建运维组groupadd-g2000ops# 2. 创建运维用户并加入组useradd-m-s/bin/bash-Gops-u2001aliceuseradd-m-s/bin/bash-Gops-u2002bob# 3. 设置初始密码echoalice:InitPass2024!|chpasswdechobob:InitPass2024!|chpasswd# 4. 强制首次登录修改密码passwd-ealicepasswd-ebob# 5. 配置 sudo 权限visudo# 添加# %ops ALL(ALL) NOPASSWD: /usr/bin/systemctl, /usr/bin/journalctl, /usr/bin/yum场景三批量创建用户#!/bin/bash# batch_create_users.shUSER_LISTalice bob charlie dianaforuserin$USER_LIST;douseradd-m-s/bin/bash$userecho${user}:TempPass123!|chpasswdpasswd-e$userecho用户$user创建成功需首次登录修改密码done七、常见问题Q1用户登录提示 “This account is currently not available”用户的 Shell 被设为了/sbin/nologin或/bin/false。如需恢复登录usermod-s/bin/bash usernameQ2usermod -aG 后用户组没变用户需要重新登录才能生效。或者使用newgrp临时切换newgrpdockerQ3如何禁止某个用户登录但保留其服务运行# 方法一修改 Shellusermod-s/sbin/nologin username# 方法二锁定密码SSH 密钥仍可登录passwd-lusername# 方法三通过 SSH 配置echoDenyUsers username/etc/ssh/sshd_config systemctl restart sshd八、小结本篇介绍了 Linux 用户和组的完整管理流程包括创建、修改、删除、sudo 权限配置以及 PAM 认证基础。在生产环境中遵循最小权限原则——只给用户必要的权限避免直接使用 root。上一篇02 - 文件系统与权限管理下一篇04 - 进程与服务管理