用户与组管理命令
用户与组管理
一、用户操作
常用命令:useradd、usermod 、passwd 、userdel
1、useradd
(1)、命令简介
useradd 是 Linux 系统中用于创建新用户账户的核心命令,通常需要 root 权限执行。
(2)、命令选项清单
#命令语法:useradd [选项] 用户名
#选项 说明
-m 创建用户家目录(通常为 /home/用户名)
-d 指定自定义家目录路径(如 -d /data/user1)
-s 指定登录 shell(如 -s /bin/bash)
-g 指定主用户组(可接组名或GID)
-G 指定附加用户组(多个组用逗号分隔)
-u 指定用户UID(如 -u 1005)
-c 添加用户备注/全名(如 -c "张三")
-e 设置账户过期日期(格式:YYYY-MM-DD)
-f 密码过期后宽限天数(0=立即禁用,-1=不限制)
-p 设置加密后的密码(不安全,建议用 passwd)
-r 创建系统账户(无家目录,UID<1000)
-k 指定骨架目录(默认 /etc/skel)
(3)、常用命令示例
创建普通用户
sudo useradd -m -s /bin/bash username
#-m 创建家目录
#-s 设置默认 shell
创建带备注的用户
sudo useradd -m -c "开发人员" -s /bin/bash devuser
创建指定UID的用户
sudo useradd -u 1500 -g developers -G docker,sudo newadmin
#-u 1500 指定UID
#-g developers 设置主组
#-G docker,sudo 加入附加组
创建系统账户(用于服务)
sudo useradd -r -s /usr/sbin/nologin mysql
#-r 创建系统账户
#-s /usr/sbin/nologin 禁止登录
创建用户时指定密码(不推荐)
sudo useradd -m -p $(openssl passwd -1 "mypassword") user1
#密码会出现在命令历史中,建议创建后用 passwd 设置:
sudo passwd username
用户信息验证,创建后检查用户信息
id username # 查看UID/GID信息
finger username # 查看用户详情(需安装finger包)
getent passwd username # 查看账户配置
2、usermod
(1)、命令简介
usermod 是 Linux 系统中用于修改现有用户账户属性的命令,需要 root 权限执行。
(2)、命令选项清单
#命令语法:usermod [选项] 用户名
#选项 说明
-d 修改家目录路径(需配合 -m 移动内容)
-m 与 -d 联用,将旧家目录内容移至新位置
-s 修改用户登录 shell(如 /bin/bash 或 /sbin/nologin)
-g 修改用户主组(组名或GID)
-G 修改用户附加组(覆盖原有附加组,用逗号分隔)
-aG 追加附加组(不覆盖原有组)
-u 修改用户UID
-c 修改用户备注/全名
-l 修改用户名(登录名)
-e 修改账户过期日期(格式:YYYY-MM-DD)
-f 修改密码过期后宽限天数
-L 锁定用户账户
-U 解锁用户账户
(3)、常用命令示例
修改用户登录名
sudo usermod -l newname oldname
#以上操作不会自动修改家目录名,需额外操作:
sudo usermod -d /home/newname -m newname
修改用户主组
sudo usermod -g developers username
追加附加组
sudo usermod -aG sudo,docker username
#-aG 会保留原有附加组
修改家目录并迁移内容
sudo usermod -d /new/home/path -m username
修改用户UID
sudo usermod -u 1500 username
锁定/解锁账户
sudo usermod -L username # 锁定
sudo usermod -U username # 解锁
修改用户默认shell
sudo usermod -s /sbin/nologin username # 禁止登录
sudo usermod -s /bin/bash username # 允许登录
设置账户过期时间
sudo usermod -e 2024-12-31 username
验证修改
id username # 查看用户组信息
finger username # 查看用户详情
getent passwd username # 查看账户配置
ls -ld /home/username # 检查家目录权限
3、passwd
(1)、命令简介
passwd 是 Linux 系统中用于管理用户密码的核心命令,可以修改用户密码、设置密码策略等。
(2)、命令选项清单
#命令语法:passwd [选项] [用户名]
#选项 说明
-l 锁定用户密码(禁止登录)
-u 解锁用户密码
-d 删除用户密码(允许无密码登录)
-e 强制用户下次登录时修改密码
-n 设置密码最短使用天数
-x 设置密码最长使用天数
-w 设置密码过期前警告天数
-i 设置密码过期后宽限天数
-S 显示密码状态信息
-k 只更新过期的密码
-a 与-S联用,显示所有用户密码状态
(3)、常用命令示例
修改当前用户密码
passwd
#系统会提示输入当前密码和新密码
修改其他用户密码(需root权限)
sudo passwd username
锁定/解锁用户密码
sudo passwd -l username # 锁定
sudo passwd -u username # 解锁
删除用户密码
sudo passwd -d username # 允许无密码登录(不安全)
强制用户下次登录修改密码
sudo passwd -e username
设置密码策略
sudo passwd -n 7 -x 30 -w 7 username
#密码最少使用7天
#密码最多使用30天
#过期前7天开始警告
查看密码状态
sudo passwd -S username
#输出示例:
username P 05/10/2023 0 99999 7 -1
#字段说明:用户名 状态(L/P/NP) 最后修改日期 最小天数 最大天数 警告天数 不活动天数
显示所有用户密码状态
sudo passwd -Sa
批量修改用户密码
echo "username:newpassword" | chpasswd
生成随机密码
openssl rand -base64 12 | passwd --stdin username
检查密码是否过期
chage -l username
设置密码过期时间
chage -E YYYY-MM-DD username
密码策略配置文件
passwd 行为受以下文件影响:
/etc/pam.d/passwd - PAM 密码策略配置
/etc/login.defs - 密码过期默认设置
/etc/security/pwquality.conf - 密码复杂度要求
4、userdel
(1)、命令简介
userdel 是 Linux 系统中用于删除用户账户的命令,通常需要 root 权限执行。
(2)、命令选项清单
#命令语法:userdel [选项] 用户名
#选项 说明
-r 同时删除用户家目录和邮件池
-f 强制删除,即使用户已登录
-Z 同时删除用户的 SELinux 用户映射
(3)、常用命令示例
基本删除用户(保留家目录)
sudo userdel username
#只删除 /etc/passwd、/etc/shadow、/etc/group 中的用户信息
#家目录和邮件池(/var/mail/username)会保留
完全删除用户(包括家目录)
sudo userdel -r username
#同时删除 /home/username 目录
#删除 /var/mail/username 邮件池
强制删除已登录用户
sudo userdel -f username
#属于危险操作,可能导致该用户运行中的程序异常
删除用户并清理 SELinux 映射
sudo userdel -Z username
批量删除用户
sudo userdel -r user1 user2 user3
验证删除
id username # 检查用户是否已删除
ls /home # 检查家目录是否删除(如使用 -r 选项)
删除操作会影响以下文件:
/etc/passwd - 用户账户信息
/etc/shadow - 用户密码信息
/etc/group - 组信息
/etc/gshadow - 组密码信息
/home/username - 用户家目录(使用 -r 时)
/var/mail/username - 用户邮件池(使用 -r 时)
二、组操作
**常用命令:**groupadd、groupdel
1、groupadd
(1)、命令简介
groupadd 是 Linux 系统中用于创建新用户组的命令,需要管理员权限执行。
(2)、命令选项清单
#命令语法:groupadd [选项] 组名
#选项 说明
-g 指定组ID (GID)
-r 创建系统组 (GID 范围通常为 1-999)
-f 强制创建 (组已存在时忽略错误)
-o 允许使用重复的 GID
-p 设置组密码 (不建议直接使用)
-K 覆盖 /etc/login.defs 中的默认值
(3)、常用命令示例
创建普通用户组
sudo groupadd developers
创建指定 GID 的用户组
sudo groupadd -g 1500 admins
创建系统组
sudo groupadd -r systemgroup
强制创建组 (忽略已存在错误)
sudo groupadd -f developers
创建共享 GID 的组
sudo groupadd -o -g 1005 sharedgroup
自定义密码加密方法创建组
sudo groupadd -p '$6$salt$hashedpassword' securegroup
#不推荐直接设置密码,建议使用 gpasswd
验证创建
getent group 组名 # 查看组信息
grep 组名 /etc/group # 检查组配置
**groupadd 行为受以下配置文件影响:**
/etc/login.defs - 定义 GID 范围等默认值
/etc/group - 用户组信息存储文件
/etc/gshadow - 组密码信息存储文件
**2、**groupdel
(1)、命令简介
groupdel 是 Linux 系统中用于删除用户组的命令,需要管理员权限执行。
(2)、命令选项清单
#命令语法:groupdel [选项] 组名
#选项 说明
-f 强制删除,即使组是某用户的主组
-h 显示帮助信息
-R 更改根目录(chroot)应用
(3)、常用命令示例
基本删除用户组
sudo groupdel developers
**强制删除用户组(即使是用作主组)**
sudo groupdel -f developers
#属于危险操作,可能导致某些用户无法正常使用
在 chroot 环境下删除组
sudo groupdel -R /mnt/chroot guestgrou
验证删除
getent group 组名 # 检查组是否已删除
grep 组名 /etc/group /etc/gshadow # 检查组配置是否清除
安全删除流程
#检查组成员
grep 组名 /etc/group#修改相关用户主组
sudo usermod -g newgroup username#修改文件归属
sudo find / -group 组名 -exec chgrp newgroup {} \;#删除组
sudo groupdel 组名
批量删除组
for group in grp1 grp2 grp3; do sudo groupdel $group; done
删除操作会影响以下文件:
/etc/group - 用户组信息
/etc/gshadow - 组密码信息