首先,操作的用户必须是root,只有root才有passwd执行的权限
通常,linux系统修改用户密码都使用命令 passwd user 来修改密码,但这样就进入了交互模式了,没办法更好的适用与shell脚本修改密码或者是批量修改密码,除非使用expect 这种第三方软件来实现,对于仅仅是修改密码这么一件简单的事情来说,并不是一个好办法,下面将列举2种比较常见的处理方式更好的处理这需求:
第一种:使用echo和--stdin实现密码输入
echo "123456" | passwd --stdin root
优点:方便快捷
缺点:
1,安全问题:这种方式会在history留下密码信息,可被别人查询到。
2,使用限制:如密码带有单引号或者双引号这样的特殊字符,将不被支持。
3,有些linux衍生版并不一定有--stdin这个参数。(如Debian/Suse)
第二种:使用chpasswd命令实现
首先将用户名密码一起写入一个临时文件.
cat pass.txt
root:root123
mysql:Bd1234
执行chpasswd读取文件修改对应的用户密码:
chpasswd < pass.txt
优点:可以将用户和密码在一个文件里面写好,便于批量执行。
缺点:需要生成用户密码文件,明文存放,不安全
脚本修改密码,仅依靠这种处理方式,并不是安全的,比较安全可选的是使用openssl生成随机密码,将随即密码赋值给用户,并将随机密码记录下来,这部分脚本可到本人git空间下载
,