Linux 用户管理知识与应用实践(三:用户组及修改用户密码)

Linux 用户管理知识与应用实践

本章将深入讲解用户管理的知识,并带领小伙伴们实践 Linux 运维中有关用户管理的工作。

六、添加用户组命令 groupadd

在 groupadd 命令后面指定用户组名执行就可以建立新的用户组了。但 groupadd 命令的用途不大,因为 useradd 命令在创建用户的同时会创建与用户同名的用户组,正常情况下都可以满足创建用户组的需求。

1、groupadd 命令语法和常用参数

css 复制代码
groupadd		[options]		[group]
groupadd		[选项]		   [用户组]

表 14-12 groupadd 命令的常见参数及说明

2、groupadd 命令实例

在生产环境中,增加用户组的用法一般来说都是非常简单的,比如下面的示例是添加 GID 为 802 的用户组 zumahome。实现代码具体如下:

csharp 复制代码
[root@shy ~]# groupadd -g 802 zumahome
[root@shy ~]# tail -l /etc/group
zumahome:x:802:

提示:groupadd 的命令在工作场景中的应用绝大多数情况下最多仅限于此。

七、删除用户组命令 groupdel

groupdel 命令用于删除指定的用户组,此命令的使用频率极低,了解一下即可。

groupdel 命令语法和使用范例:

css 复制代码
groupdel		[group]
groupdel		[用户组]

说明:groupdel 不能删除还有用户归属的主用户组。

范例 14 -12:删除 zumahome 用户组。

csharp 复制代码
[root@shy ~]# grep -w zumahome /etc/group		
zumahome:x:802:
[root@shy ~]# groupdel zumahome				# 删除 zumahome 用户组命令
[root@shy ~]# grep -w zumahome /etc/group	# zumahome 用户组已经被删除了。
[root@shy ~]# groupdel root					# 删除root用户组失败,因为组内的root用户还存在。
groupdel:不能移除用户"root"的主组

八、修改用户密码命令 passwd

passwd 命令可以修改用户密码及密码过期时间等内容,是很常用的命令。普通用户和超级用户都可以运行 passwd 命令,但普通用户只能更改自身的用户密码,超级用户 root 则可以设置或修改所有用户的密码。

1、passwd 命令语法和常用参数

css 复制代码
passwd		[option]		[username]
passwd		[选项]		   [用户名]

表 14-13 passwd 命令常见参数及说明

注意

  • root 用户可以修改任何用户的密码,普通用户只能修改自身的密码。
  • root 用户修改密码时,如果不符合系统密码规则,则会给出警告信息,但密码设置仍然有效。而普通用户修改密码时,如果使用的是弱密码,则会给出告警信息,且修改无效。

2、passwd 命令使用范例

范例 14-13:修改用户密码的示例。

(1)修改自身用户密码

当只执行 passwd 无任何参数和内容时,表示修改当前执行命令用户自身的密码。具体代码如下:

csharp 复制代码
[root@shy ~]# passwd 
更改用户 root 的密码 。
新的 密码:					 # 输入密码 12345678,系统不会输出用户输入的密码。
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:			  # 再次输入密码 123456
passwd:所有的身份验证令牌已经成功更新。

(2)设置及修改普通用户的密码

ruby 复制代码
[root@shy ~]# useradd oldgirl
useradd:用户"oldgirl"已存在
[root@shy ~]# passwd oldgirl			# 为 oldgirl 用户添加密码
更改用户 oldgirl 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@shy ~]# su - oldgirl				# 切换到 oldgirl 用户
上一次登录:二 5月 19 22:00:53 CST 2026pts/0 上
[oldgirl@shy ~]$ whoami
oldgirl
[oldgirl@shy ~]$ passwd 
更改用户 oldgirl 的密码 。
为 oldgirl 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

范例 14-14:显示账号密码信息。

ruby 复制代码
[oldgirl@shy ~]$ passwd -S oldgirl
只有根用户才能进行此操作。
[oldgirl@shy ~]$ exit
登出
[root@shy ~]# passwd -S oldgirl
oldgirl PS 2026-07-05 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

范例 14-15:一条命令非人工交互设置密码(生产使用技巧)。

css 复制代码
[root@shy ~]# echo "12345678"|passwd --stdin oldgirl	# --stdin参数能从标准输入中获取密码。
更改用户 oldgirl 的密码 。
passwd:所有的身份验证令牌已经成功更新。

提示:这个命令用于在工作中批量设置密码。

范例 14-16:要求 oldgirl 用户 7 天之内不能更改密码,60 天以后必须修改密码,过期前 10 天通知用户,过期后 30 天禁止用户登录。

yaml 复制代码
[root@shy ~]# passwd -n 7 -x 60 -w 10 -i 30 oldgirl
调整用户密码老化数据oldgirl。
passwd: 操作成功
[root@shy ~]# chage -l oldgirl			# -l 参数用于查看账户的信息。
最近一次密码修改时间					:7月 05, 2026
密码过期时间					:9月 03, 2026
密码失效时间					:10月 03, 2026	# 对应 -i 参数,密码过期30天之后停权。
帐户过期时间						:从不
两次改变密码之间相距的最小天数		:7		# 对应 -n 参数
两次改变密码之间相距的最大天数		:60		# 对应 -x 参数
在密码过期之前警告的天数	:10			  # 对应 -w 参数

3、生产场景下实用技巧

  • 用户密码要足够复杂,最好是 8 位以上字母(含大小写)、数字、 特殊字符的组合。
  • 较大的企业用户和密码可以统一管理(采用微软活动目录或 openldap 开源工具)。
  • 动态密码:动态口令,需要时登录到动态口令系统中,即时申请获得密码,但如果若干时间内不操作服务器,密码则会失效。

九、批量更新用户的密码命令 chpasswd

chpasswd 命令可从标准输入中读取一定格式的用户名、密码来批量更新用户的密码。这个格式为 "用户名:密码",注意,用户名必须事先真实存在,否则,该命令无法为一个不存在的用户设置密码。

范例 14-17:批量修改密码。

ini 复制代码
[root@shy ~]# id oldboy			# 确认要修改密码的 oldboy 用户是否存在。
uid=996(oldboy) gid=1004(incahome) 组=1004(incahome),1003(sa)
[root@shy ~]# id oldgirl		# 确认要修改密码的 oldgirl 用户是否存在。
uid=1004(oldgirl) gid=1004(incahome) 组=1004(incahome)
[root@shy ~]# chpasswd 			# 命令行直接输入对应格式。
root:12345678
oldboy:12345678
oldgirl:12345678
						# 在新的空行输入 Ctrl + D 结束输入。
[root@shy ~]# 

或者将用户和密码字符串放到文件里执行。

makefile 复制代码
[root@shy ~]# cat user.txt
  t: user.txt: 没有那个文件或目录
[root@shy ~]# touch user.txt		# 新建一个文件用于存放用户及其对应的密码
[root@shy ~]# vim user.txt 			# 编辑该文件
root:12345678
oldboy:12345678
oldgirl:12345678
~                                                                                                        
~                      
[root@shy ~]# cat user.txt 
root:12345678
oldboy:12345678
oldgirl:12345678
[root@shy ~]# chpasswd <user.txt 	# 利用输入重定向一次性为所有用户设置预先指定的密码。
相关推荐
Mortalbreeze1 小时前
深入 Linux 线程机制(三):线程互斥——竞争条件与互斥锁的本质
linux·运维·服务器·c++·算法
鱼听禅2 小时前
CentOS 源码模式配置SVNAdmin2管理SVN仓库
linux·svn·centos
Amonter2 小时前
RK3399ProD移植主线Linux内核
linux·rockchip·rk3399pro
say_fall2 小时前
【Git 精品详解】企业规范:企业级开发模型、Git Flow、发版流程规范、Code Owner 制度、事故应急回滚
大数据·linux·服务器·git·学习·elasticsearch
一杯奶茶¥3 小时前
Ubuntu系统镜像各个版本下载Ubuntu镜像合集资源Linux系统镜像乌班图Linux系统镜像
linux·运维·ubuntu·镜像·;inux镜像·ubuntu镜像
三84412 小时前
文件查找/文件压缩/解压缩
linux·运维·服务器
小猪写代码12 小时前
Linux 管道(Pipeline)作业
linux·运维·服务器
会周易的程序员14 小时前
microLog 的本地日志读取接口 log_reader — 本地日志文件读取工具开发指南
linux·物联网·架构·嵌入式·日志·iot·aiot
yoothey15 小时前
报废审批流规则引擎设计——责任链模式完整实现
linux·开发语言·bash