linux切换用户密码脚本(linux下非交互批量修改用户密码)(1)

首先,操作的用户必须是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空间下载

,