【Linux】通过 Shell 脚本修改用户密码

news2024/12/26 12:02:01

1. Linux 中修改用户密码

  Linux 中要修改一个用户的密码通常是使用 passwd 命令来完成,命令格式如下。

#一般使用格式
passwd [username]

[注]:若其后不加任何用户名则表示修改当前用户的密码。
使用示例: 这里笔者将 im 用户的密码修改为 im123

[root@linux-im ~]# passwd im
更改用户 im 的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

这里可以看到在使用 passwd 命令修改用户密码的时候需要手动输入两次进行匹配确认后才能完成密码修改的动作。

2. Shell 脚本实现自动化修改用户密码

  现在已经知道了在终端中如何使用命令修改用户密码,那么如何用 shell 脚本来实现自动修改用户密码呢?
  可以看到当执行命令后需要手动输入更新的密码,那么实现自动修改密码的脚本的关键点就在于解决自动输入所要更新的密码,这里通过执行 man 1 passwd 查看 man 手册对 passwd 命令的描述。

在这里插入图片描述

通过 man 手册了解到 passwd 拥有一个可选参数 --stdin,手册中对其的解释如下:

--stdin
              This option is used to indicate that passwd should read the new password from standard input, which can be a pipe.

简单翻译即为:该选项用于指定 passwd 命令应该从标准输入中读取新密码,标准输入可以是管道。

  那么这样一来,就可以通过 echo 命令像标准输入中输出密码值,而 passwd 命令配置为 --stdin 方式获取密码。现在写一个 shell 脚本名为 changepasswd.sh,其内容如下:

#!/bin/bash

echo "change im passwd"

echo "im123" | passwd --stdin im

ok,现在执行该脚本看看效果:

[root@linux-im test]# ./changepasswd.sh
change im passwd
更改用户 im 的密码 。
passwd:所有的身份验证令牌已经成功更新。

ok,现在看到已经成功将 im 用户的密码修改为 im123 了。当然,你也可以将该脚本改变为参数可输入的形式,让所修改的用户和其新密码可以通过脚本的输入配置。该变 changepasswd.sh 内容如下:

#!/bin/bash

echo "change "$1" passwd"

echo $2| passwd --stdin $1

执行该脚本看看效果:

[root@linux-im test]# ./changepasswd.sh im im123
change im passwd
更改用户 im 的密码 。
passwd:所有的身份验证令牌已经成功更新。

可以看到密码同样被正确修改,那么下面来验证一下这件事。

3. 验证用户密码是否被成功正确修改

  一种方式是使用 su 命令切换用户时的密码验证来验证密码的正确性,另一种方式是退出桌面,重新登录,与 su 同理,还有一种方式是通过 ssh 连接时的密码验证。这里仅介绍第一种方式,但需要注意的是若当前用户是 root 时,执行 su 不需要密码验证,可以先切换到普通用户再执行 su 切换索要验证的用户即可。

# 此时 root 切换到普通用户不需要密码验证
[root@linux-im test]# su im
# 在普通用户下切换到其它用户需要密码验证
[im@linux-im test]$ su im
密码:
[im@linux-im test]$

这里输入修改后的新密码,成功切换到 im 用户,说明密码修改成功。

#完

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/638279.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

简单的提示词操作融合微调 AI 图像

本文旨在帮助我们理解和运用稳定扩散技术对AI生成图像进行精确调整。通过本文将学习如何调整关键词的强度、消除不需要的对象以及如何混合两个关键词。 Stable Diffusion 可以直接下载秋叶大神一键安装包进行使用,也可以直接下git上原生下载自己部署。 百度链接 …

什么是低代码(Low-Code)?

现如今,我们已全面迈入智能互联网时代,新的技术不断迭代问世,也代表着新的生产力不断深入我们的生活,同时也是开创未来最好的原动力。那就眼下而言,什么样的新技术才能真正解放IT生产力,加速社会数字化转型…

2023/06/12 产品经理常用技术名词记录

PM懂点技术总是好的吧,还是要能听懂简单的专业名词。遇到就更新… — 前端 \color{green}{前端} 前端— H5 即HTML5,第五代超文本标记语言。泛指H5广告,是一种借助微信传播的营销形式。 H5页面是传统桌面网站的轻量级版本,支持…

Linux uinput

Linux Uinput 是一个模拟用户输入事件的内核驱动程序,它允许用户空间程序通过创建虚拟输入设备节点来生成模拟输入事件,这些事件可以是键盘、鼠标、触摸屏或其他输入设备的事件。此外,Uinput 还可以为虚拟输入设备设置各种属性,并…

U-Mail邮件系统多重措施保障用户信息安全 防范邮件泄密

电子邮件由于其具有较高的便捷性与高效性,已逐渐成为党政机关和企业工作人员内部联系和业务交流的主要方式之一。但其带来的诸多安全问题也引发了越来越多人的关注,其中最最严重的威胁是邮件泄密问题。就在刚刚过去的2022年国内外都发生了多起电子邮件造…

倍福工控机维修控制器主机维修C5102-0060

常见故障分类: 1、磨损性故障。由于机械正常磨损造成的故障。 2、操作故障。由于操作错误、操作不当造成的故障。 3、固有的薄弱性故障。由于设计问题,在正常使用时产生的故障。 工控机内部温度过高。在需长时间高温运行的环境中,计算机各…

从微观世界的RST包文视角助力企业网络应用故障排查和优化

1. 前言 随着互联网的普及和发展,各行业的业务和应用越来越依赖于网络。然而,网络环境的不稳定性和复杂性使得出现各种异常现象的概率变得更高了。这些异常现象会导致业务无法正常运行,给用户带来困扰,甚至影响企业的形象和利益。…

使用Appium 测试微信小程序和微信公众号方法

由于腾讯系QQ、微信等都是基于腾讯自研X5内核,不是google原生webview,需要打开TBS内核Inspector调试功能才能用Chrome浏览器查看页面元素,并实现Appium自动化测试微信小程序和微信公众号。 前提条件Appium环境搭建,这里不多说了&…

银行的程序员需要了解的一些简单知识

学习《简明银行会计 程序员视角》 会计与银行会计什么是会计?会计假设包括哪些内容?商业银行的业务分类?商业银行的运作过程?银行降准会产生什么效果? 左右开弓的记账法什么是会计恒等式?什么是T字图&#…

echarts画四川地图并交互

先看成果,点击地图中间点位做相应交互(如弹框详细信息等,这里不做演示) 具体步骤如下 一、具体在DataV.GeoAtlas地理小工具系列 (aliyun.com)这个地址获取数据如图即可下载出对应地址的json数据 二、vue中template里相关代码 &l…

传统测试将被取代?AI测试现状及发展之思

近年来,我一直关注AI相关的测试,并积极参与多个全国性测试社区和社群。在这些社区中,我与不同公司和领域的测试专家交流探讨AI测试相关话题,包括业界顶尖公司的专家和国内知名测试学者。我也参加了多个大会,聆听了许多…

【c++】动态联编和静态联编

动态联编和静态联编 动态联编条件&#xff1a;虚函数 基类指针/引用 静态联编条件&#xff1a;重载 动态联编代码 class A { public:virtual void print(){cout << "void printA()" << endl;} protected:int a; };class B :public A { public:void pri…

制作 initramfs 后,缺少部分驱动,可能导致系统无法启动

问题现象&#xff1a; 通过 mkinitrd 制作出来的 initrd.img 镜像&#xff0c;替换到 ISO 中&#xff0c;系统无法正常启动&#xff0c;从日志上看 mount ‘iso9668’ 失败&#xff0c;怀疑是小系统中缺少 isofs 驱动导致 问题复现&#xff1a; 装机报错&#xff0c;等一会&am…

KW 新闻 | KaiwuDB 亮相数字中国并发布离散制造场景解决方案

4月26-30日&#xff0c;以“加快数字中国建设&#xff0c;推进中国式现代化”为主题的第六届数字中国建设峰会在福州市圆满召开。KaiwuDB 受邀亮相大会参展并发布“离散制造场景解决方案”&#xff0c;旨在以数字化方案驱动生产方式、治理方式变革&#xff0c;推进离散制造业物…

vue 使用JSON 编辑器: vue-json-editor

这里写目录标题 1、安装插件2、引入插件并注册3、使用示例4、实现效果 1、安装插件 npm install vue-json-editor --save 2、引入插件并注册 import vueJsonEditor from vue-json-editor export default {components: { vueJsonEditor }, }3、使用示例 <template><…

Jackson、gson官方文档以及下载地址

1. 官网文档 json中文官网&#xff1a;http://www.json.org/json-zh.html json官网&#xff1a;http://www.json.org/ json参考手册&#xff1a;(译) JSON-RPC 2.0 规范(中文版) Jackson官网地址&#xff1a;https://github.com/FasterXML/jackson Jackson文档地址&#xff1a…

【电路】电路与电子技术基础 课堂笔记 第15章 时序逻辑电路的分析与设计

15.1 时序逻辑电路的分析 第一步&#xff0c;写方程&#xff1a;时钟方程、驱动方程和状态方程&#xff08;将驱动方程代入特征方程中得到&#xff09; 第二步&#xff0c;列出状态表&#xff0c;画状态转移图 第三步&#xff0c;根据提供的时钟图像&#xff0c;画出时序图 第四…

android adb 获取电池信息以及设置

本文主要包含 1、设置adb 无线调试桥连接步骤 2、打印设备电池状态(当前电量、充电状态、充放电电流大小、电池种类等&#xff09; 3、更改电池充电状态、电量百分比、电池还原命令 4、断开adb 远程调试桥 -----------------------------------------------------------------…

软件测试最重要的事之【编写用例】

软件测试用例得出软件测试用例的内容&#xff0c;其次&#xff0c;按照软件测试写作方法&#xff0c;落实到文档中&#xff0c;两者是形式和内容的关系&#xff0c;好的测试用例不仅方便自己和别人查看&#xff0c;而且能帮助设计的时候考虑的更周。 一个好的测试用例必须包含…

windows 服务程序和桌面程序集成(四)桌面程序

系列文章目录链接&#xff1a; windows 服务程序和桌面程序集成&#xff08;一&#xff09;概念介绍windows 服务程序和桌面程序集成&#xff08;二&#xff09;服务程序windows 服务程序和桌面程序集成&#xff08;三&#xff09;UDP监控工具windows 服务程序和桌面程序集成&…