1.3.2 用户与组管理命令(useradd/usermod/userdel、groupadd/groupmod/groupdel)

用户与组管理命令(useradd/usermod/userdel、groupadd/groupmod/groupdel)#

用户与组的增删改需要遵循“最小权限、可审计、可回滚”。在生产环境中建议统一 UID/GID 规划,并结合变更记录。下述内容包含原理草图、命令解释、示例、排错与练习。

文章图片

命令说明速览#

  • useradd:创建用户与初始化属性(家目录、Shell、主组、附加组)。
  • usermod:修改用户属性(Shell、UID、组、家目录、锁定)。
  • userdel:删除用户(可选清理家目录)。
  • groupadd:创建组。
  • groupmod:修改组名或 GID。
  • groupdel:删除组(组内无用户时可删)。

1) useradd:创建用户#

常用参数解释
- -m 创建家目录
- -d 指定家目录路径
- -s 指定登录 Shell
- -u 指定 UID
- -g 指定主组
- -G 指定附加组
- -c 备注信息
- -e 过期日期(YYYY-MM-DD)

示例:创建标准业务用户

# 1) 先创建业务组
groupadd -g 1601 app

# 2) 创建用户,指定主组、附加组与Shell
useradd -u 1501 -g app -G wheel,dev -m -s /bin/bash -c "App User" appuser

# 3) 设置密码(交互式)
passwd appuser

# 4) 验证
id appuser
getent passwd appuser

预期效果
- /home/appuser 自动创建
- id 输出包含 uid=1501(appuser)gid=1601(app) 与附加组


2) usermod:修改用户属性#

典型操作示例

# 禁止登录(运维常用临时封禁)
usermod -s /sbin/nologin appuser

# 追加附加组(注意 -a,避免覆盖)
usermod -aG docker appuser

# 修改用户名(需同步检查目录与文件属主)
usermod -l appuser_new appuser

# 迁移家目录(移动并更新路径)
usermod -d /data/appuser -m appuser_new

解释要点
- -aG 必须与 -G 配合,否则会覆盖原附加组
- -l 仅改用户名,不会自动移动家目录


3) userdel:删除用户#

示例

# 软处理:先锁定,再观察
usermod -L appuser_new

# 删除用户但保留家目录(便于回滚)
userdel appuser_new

# 删除用户并清理家目录与邮件
userdel -r appuser_new

4) groupadd / groupmod / groupdel#

创建与修改

# 创建组
groupadd app

# 指定 GID
groupadd -g 1602 app2

# 修改组名
groupmod -n app_new app

# 修改 GID
groupmod -g 1603 app_new

删除组

# 组内无用户时才可删除
groupdel app_new

安装与工具补充#

系统自带 user/group 工具包(通常为 shadow-utils)。若缺失可安装:

# CentOS/RHEL
yum install -y shadow-utils

# Ubuntu/Debian
apt-get install -y passwd

配置文件与验证(配合排错)#

# 查看账号与组条目
getent passwd appuser
getent group app

# 直接查看文件(谨慎修改)
grep '^appuser' /etc/passwd
grep '^app' /etc/group

常见排错#

1) “groupdel: cannot remove the primary group of user”
- 解决:先修改用户主组或删除用户

usermod -g othergroup appuser
groupdel app

2) “usermod: user appuser is currently logged in”
- 解决:确认会话并终止或等待

who
pkill -u appuser

3) 附加组丢失(忘记 -a
- 解决:重新追加

usermod -aG docker,dev appuser

练习#

1) 新建 ops 组(GID=1701),创建 opsuser(UID=1701)并加入 wheel
2) 将 opsuser 的家目录迁移到 /data/opsuser,并验证属主。
3) 锁定 opsuser,查看登录限制是否生效。
4) 删除 ops 组前,确保没有用户以其为主组。

参考命令

groupadd -g 1701 ops
useradd -u 1701 -g ops -G wheel -m -s /bin/bash opsuser
usermod -d /data/opsuser -m opsuser
usermod -L opsuser
id opsuser