用户与组管理命令

用户与组管理

一、用户操作

常用命令:useraddusermod 、passwd 、userdel

1、useradd

(1)、命令简介

useradd 是 Linux 系统中用于创建新用户账户的核心命令,通常需要 root 权限执行。

(2)、命令选项清单

text-x-sh 复制代码
#命令语法: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)、常用命令示例

创建普通用户

text-x-sh 复制代码
sudo useradd -m -s /bin/bash username
#-m 创建家目录
#-s 设置默认 shell

创建带备注的用户

text-x-sh 复制代码
sudo useradd -m -c "开发人员" -s /bin/bash devuser

创建指定UID的用户

text-x-sh 复制代码
sudo useradd -u 1500 -g developers -G docker,sudo newadmin
#-u 1500 指定UID
#-g developers 设置主组
#-G docker,sudo 加入附加组

创建系统账户(用于服务)

text-x-sh 复制代码
sudo useradd -r -s /usr/sbin/nologin mysql
#-r 创建系统账户
#-s /usr/sbin/nologin 禁止登录

创建用户时指定密码(不推荐)

text-x-sh 复制代码
sudo useradd -m -p $(openssl passwd -1 "mypassword") user1
#密码会出现在命令历史中,建议创建后用 passwd 设置:
sudo passwd username

用户信息验证,创建后检查用户信息

text-x-sh 复制代码
id username  # 查看UID/GID信息
finger username  # 查看用户详情(需安装finger包)
getent passwd username  # 查看账户配置

2、usermod

(1)、命令简介

usermod 是 Linux 系统中用于修改现有用户账户属性的命令,需要 root 权限执行。

(2)、命令选项清单

text-x-sh 复制代码
#命令语法: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)、常用命令示例

修改用户登录名

text-x-sh 复制代码
sudo usermod -l newname oldname
#以上操作不会自动修改家目录名,需额外操作:
sudo usermod -d /home/newname -m newname

修改用户主组

text-x-sh 复制代码
sudo usermod -g developers username

追加附加组

text-x-sh 复制代码
sudo usermod -aG sudo,docker username
#-aG 会保留原有附加组

修改家目录并迁移内容

text-x-sh 复制代码
sudo usermod -d /new/home/path -m username

修改用户UID

text-x-sh 复制代码
sudo usermod -u 1500 username

锁定/解锁账户

text-x-sh 复制代码
sudo usermod -L username  # 锁定
sudo usermod -U username  # 解锁

修改用户默认shell

text-x-sh 复制代码
sudo usermod -s /sbin/nologin username  # 禁止登录
sudo usermod -s /bin/bash username     # 允许登录

设置账户过期时间

text-x-sh 复制代码
sudo usermod -e 2024-12-31 username

验证修改

text-x-sh 复制代码
id username           # 查看用户组信息
finger username       # 查看用户详情
getent passwd username # 查看账户配置
ls -ld /home/username # 检查家目录权限

3、passwd

(1)、命令简介

passwd 是 Linux 系统中用于管理用户密码的核心命令,可以修改用户密码、设置密码策略等。

(2)、命令选项清单

text-x-sh 复制代码
#命令语法:passwd [选项] [用户名]
#选项		说明
-l		锁定用户密码(禁止登录)
-u		解锁用户密码
-d		删除用户密码(允许无密码登录)
-e		强制用户下次登录时修改密码
-n		设置密码最短使用天数
-x		设置密码最长使用天数
-w		设置密码过期前警告天数
-i		设置密码过期后宽限天数
-S		显示密码状态信息
-k		只更新过期的密码
-a		与-S联用,显示所有用户密码状态

(3)、常用命令示例

修改当前用户密码

text-x-sh 复制代码
passwd
#系统会提示输入当前密码和新密码

修改其他用户密码(需root权限)

text-x-sh 复制代码
sudo passwd username

锁定/解锁用户密码

text-x-sh 复制代码
sudo passwd -l username  # 锁定
sudo passwd -u username  # 解锁

删除用户密码

text-x-sh 复制代码
sudo passwd -d username  # 允许无密码登录(不安全)

强制用户下次登录修改密码

text-x-sh 复制代码
sudo passwd -e username

设置密码策略

text-x-sh 复制代码
sudo passwd -n 7 -x 30 -w 7 username
#密码最少使用7天
#密码最多使用30天
#过期前7天开始警告

查看密码状态

text-x-sh 复制代码
sudo passwd -S username
#输出示例:
username P 05/10/2023 0 99999 7 -1
#字段说明:用户名 状态(L/P/NP) 最后修改日期 最小天数 最大天数 警告天数 不活动天数

显示所有用户密码状态

text-x-sh 复制代码
sudo passwd -Sa

批量修改用户密码

text-x-sh 复制代码
echo "username:newpassword" | chpasswd

生成随机密码

text-x-sh 复制代码
openssl rand -base64 12 | passwd --stdin username

检查密码是否过期

text-x-sh 复制代码
chage -l username

设置密码过期时间

text-x-sh 复制代码
chage -E YYYY-MM-DD username

密码策略配置文件

passwd 行为受以下文件影响:

text-x-sh 复制代码
/etc/pam.d/passwd - PAM 密码策略配置
/etc/login.defs - 密码过期默认设置
/etc/security/pwquality.conf - 密码复杂度要求

4、userdel

(1)、命令简介

userdel 是 Linux 系统中用于删除用户账户的命令,通常需要 root 权限执行。

(2)、命令选项清单

text-x-sh 复制代码
#命令语法:userdel [选项] 用户名
#选项		说明
-r		同时删除用户家目录和邮件池
-f		强制删除,即使用户已登录
-Z		同时删除用户的 SELinux 用户映射

(3)、常用命令示例

基本删除用户(保留家目录)

text-x-sh 复制代码
sudo userdel username
#只删除 /etc/passwd、/etc/shadow、/etc/group 中的用户信息
#家目录和邮件池(/var/mail/username)会保留

完全删除用户(包括家目录)

text-x-sh 复制代码
sudo userdel -r username
#同时删除 /home/username 目录
#删除 /var/mail/username 邮件池

强制删除已登录用户

text-x-sh 复制代码
sudo userdel -f username
#属于危险操作,可能导致该用户运行中的程序异常

删除用户并清理 SELinux 映射

text-x-sh 复制代码
sudo userdel -Z username

批量删除用户

text-x-sh 复制代码
sudo userdel -r user1 user2 user3

验证删除

text-x-sh 复制代码
id username  # 检查用户是否已删除
ls /home     # 检查家目录是否删除(如使用 -r 选项)

删除操作会影响以下文件:

text-x-sh 复制代码
/etc/passwd - 用户账户信息
/etc/shadow - 用户密码信息
/etc/group - 组信息
/etc/gshadow - 组密码信息
/home/username - 用户家目录(使用 -r 时)
/var/mail/username - 用户邮件池(使用 -r 时)

二、组操作

**常用命令:**groupadd、groupdel

1、groupadd

(1)、命令简介

groupadd 是 Linux 系统中用于创建新用户组的命令,需要管理员权限执行。

(2)、命令选项清单

text-x-sh 复制代码
#命令语法:groupadd [选项] 组名
#选项		说明
-g		指定组ID (GID)
-r		创建系统组 (GID 范围通常为 1-999)
-f		强制创建 (组已存在时忽略错误)
-o		允许使用重复的 GID
-p		设置组密码 (不建议直接使用)
-K		覆盖 /etc/login.defs 中的默认值

(3)、常用命令示例

创建普通用户组

text-x-sh 复制代码
sudo groupadd developers

创建指定 GID 的用户组

text-x-sh 复制代码
sudo groupadd -g 1500 admins

创建系统组

text-x-sh 复制代码
sudo groupadd -r systemgroup

强制创建组 (忽略已存在错误)

text-x-sh 复制代码
sudo groupadd -f developers

创建共享 GID 的组

text-x-sh 复制代码
sudo groupadd -o -g 1005 sharedgroup

自定义密码加密方法创建组

text-x-sh 复制代码
sudo groupadd -p '$6$salt$hashedpassword' securegroup
#不推荐直接设置密码,建议使用 gpasswd

验证创建

text-x-sh 复制代码
getent group 组名  # 查看组信息
grep 组名 /etc/group  # 检查组配置

**groupadd 行为受以下配置文件影响:**

text-x-sh 复制代码
/etc/login.defs - 定义 GID 范围等默认值
/etc/group - 用户组信息存储文件
/etc/gshadow - 组密码信息存储文件

**2、**groupdel

(1)、命令简介

groupdel 是 Linux 系统中用于删除用户组的命令,需要管理员权限执行。

(2)、命令选项清单

text-x-sh 复制代码
#命令语法:groupdel [选项] 组名
#选项		说明
-f		强制删除,即使组是某用户的主组
-h		显示帮助信息
-R		更改根目录(chroot)应用

(3)、常用命令示例

基本删除用户组

text-x-sh 复制代码
sudo groupdel developers

**强制删除用户组(即使是用作主组)**

text-x-sh 复制代码
sudo groupdel -f developers
#属于危险操作,可能导致某些用户无法正常使用

在 chroot 环境下删除组

text-x-sh 复制代码
sudo groupdel -R /mnt/chroot guestgrou

验证删除

text-x-sh 复制代码
getent group 组名  # 检查组是否已删除
grep 组名 /etc/group /etc/gshadow  # 检查组配置是否清除

安全删除流程

text-x-sh 复制代码
#检查组成员
grep 组名 /etc/group

#修改相关用户主组
sudo usermod -g newgroup username

#修改文件归属
sudo find / -group 组名 -exec chgrp newgroup {} \;

#删除组
sudo groupdel 组名

批量删除组

text-x-sh 复制代码
for group in grp1 grp2 grp3; do sudo groupdel $group; done

删除操作会影响以下文件:

text-x-sh 复制代码
/etc/group - 用户组信息
/etc/gshadow - 组密码信息
相关推荐
zly35006 分钟前
Linux(centos)安全狗
linux·运维·服务器
星辰云-25 分钟前
Nginx笔记
运维·笔记·nginx
失因1 小时前
Linux 权限管理与 ACL 访问控制
linux·运维·服务器·数据库·centos
悟能不能悟1 小时前
TransportClient详细说一说
运维·jenkins
玖剹2 小时前
Linux文件操作:从C接口到系统调用
linux·服务器·c语言·c++·笔记·ubuntu
Lovyk2 小时前
Linux 系统启动原理
linux·服务器·windows
藏在歌词里3 小时前
Linux-Shell脚本基础用法
linux·运维·服务器
Sadsvit3 小时前
Linux 服务器性能监控、分析与优化全指南
java·linux·服务器
农夫山泉(代码版)3 小时前
Linux驱动学习(七)平台总线框架
linux·服务器·学习
通信小小昕3 小时前
Petalinux快捷下载
linux