Linux 非交互命令修改密码
Linux 修改密码一般使用 passwd 命令,交互式修改每次输入密码很麻烦
本文将介绍非交互式的修改密码,不必每次手动输入修改密码
一、passwd交互式修改密码
最普通的修改密码的命令就是passwd命令
# passwd Changing password for user root. New password: BAD PASSWORD: The password is shorter than 8 characters # 密码过短,建议8个字符以上 Retype new password: passwd: all authentication tokens updated successfully.
这种方式修改密码需交互式的手动重复输入两次密码,如果密码复杂一点,可能会出现输错或者输入效率很低的情况
假如有100台机器需修改密码,这时候passwd命令就是灾难!要输100*2次=200次的密码!!!这时候就非常需要一个非交互命令来帮助减轻工作负担。
二、非交互式修改密码
新密码为: "Hello@2024"
1、passwd命令+管道+echo命令实现 (强烈推荐,有回显提示)
echo 'Hello@2024' | passwd --stdin root
# echo 'Hello@2024' | passwd --stdin root Changing password for user root. passwd: all authentication tokens updated successfully.
stdin是接受echo后面的字符串做为密码,说白了还是通过变量赋值和管道传参来实现,此方法只需要写一次密码,简洁清晰易懂
注意:echo后面不要忘了加单引号'xx'把新密码引起来,防止双引号"xx"被转义
2、passwd命令+printf命令实现 (推荐,有回显提示)
printf "Hello@2024\nHello@2024\n" | passwd root
# printf "Hello@2024\nHello@2024\n" | passwd root Changing password for user root. New password: Retype new password: passwd: all authentication tokens updated successfully.
这种方式是把要修改的密码通过printf打印参数并换行,将参数通过管道传递到passwd命令中,很容易理解
但是这方法不常用,命令相对还是很繁琐,但是易于理解,清晰易懂
3、usermod命令实现 (不推荐)
usermod --password $(echo 'Hello@2024' | openssl passwd -1 -stdin) root
这个用法不常见,几乎没有人这么用,这种方法会比你直接输入密码的字符还多
在这里只是展示可以这么去做,但不推荐。
4、paasswd命令+EOF(自定义终止符)实现 (不推荐)
passwd root << EOF .... EOF
# passwd root << EOF > Hello@2024 > Hello@2024 > EOF Changing password for user root. New password: Retype new password: passwd: all authentication tokens updated successfully.
这种方法和printf有点类似,将密码通过重定向的方式传输到passwd命令中,去自动做交互,但是依然不够简洁,需交互式两次输入新密码,不推荐
5、chpasswd 命令非交互式修改密码
echo "root:Hello@2024" | chpasswd # 实测这种方法不生效,可能没指定加密算法
这里使用的是chpasswd命令去做,但还是使用管道传递参数。
参考推荐:
Linux 修改默认端口、增加普通用户、使用密钥等安全登录SSH
Linux shell 脚本通过expect实现自动输入密码
Mac sudo: /etc/sudoers is owned by uid 501, should be 0
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2024-07-22 22:59:35
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!
转载注明: Linux 非交互命令修改密码 (米扑博客)