2021年10月21日
Shell脚本免交互修改用户密码
方法1:
echo "password" | passwd testuser --stdin > /dev/null 2>&1
方法2:
echo testuser:password|chpasswd
问题1:
使用方法1报错:passwd 没有 –stdin 选项
问题2:
使用方法2报错:passwd: Authentication token manipulation error
原因2-1:
密码文件/etc/shadow权限问题
sudo lsattr /etc/shadow #-i选项:不得任意更动文件或目录。 ----i---------e---- /etc/shadow #去掉-i选项 chattr -i /etc/shadow sudo lsattr /etc/shadow --------------e---- /etc/shadow #修改完再加回-i选项 chattr +i /etc/shadow
原因2-2:
我的是命令权限问题,sudo 只是让 echo 命令具有了 root 权限,但是没有让 “>” 和 “>>” 命令也具有root 权限,所以 bash 会认为这两个命令都没有写入信息的权限。
解决2:
sudo sh -c 'echo robot:RK-robot2020 | /usr/sbin/chpasswd'
参考:
https://blog.csdn.net/zly_ir/article/details/51264874
https://blog.csdn.net/change_can/article/details/115128218