首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在脚本中更改用户密码不起作用

在脚本中更改用户密码不起作用
EN

Unix & Linux用户
提问于 2018-10-23 06:59:30
回答 1查看 8.2K关注 0票数 1

出于某些原因,我希望使用脚本每隔X分钟将用户的密码更改为随机密码。它是一台debian机器,下面的脚本是通过根的crontab中的@reboot启动的,并且脚本正在运行。每隔X分钟,新密码就会写入脚本中指定的文件中,但是,密码永远不会更改。

代码语言:javascript
运行
复制
#!/bin/bash
# change user's password to a random one on boot and every five minutes

while : ; do
    npasswd=$(pwgen 8 1)
    echo "$npasswd" > /root/current-user-passwd.txt
    usermod --password $(openssl passwd -1 "$npasswd") user
#   echo "$npasswd" | passwd user
#   usermod -p $(perl -e "print crypt("$npasswd","Q4")") user
    sleep 300
done

我已经尝试过这三种方法中的每一种(另外两种方法现在被注释掉了),但没有一种方法有效。但是,当我复制整个脚本并将其粘贴到一个运行它的终端中时,它工作得非常好。如果它是由cron启动的,它就不能在脚本中工作。

有人知道这是怎么回事吗?顺便说一句,我也尝试过echo -n,同样的结果。我还尝试将脚本中的$npasswd设置为固定的,只是为了测试它,结果是相同的。

Just to clearify:我真的在寻找一个答案,它解释了为什么这是手动工作的,但不是在脚本中,而不是为了另一种更改密码的方法。这些方法do工作在,只是如果脚本是由cron启动的话就不行了。

上面有set -o errexit -o nounset -o xtrace的脚本的输出:

代码语言:javascript
运行
复制
+ :
++ pwgen 8 1
+ npasswd=eiZeed5u
+ echo eiZeed5u
++ openssl passwd -1 eiZeed5u
+ usermod --password '$1$EYRCYJXm$5XkrVNxdrYRzxBmcRwuXm0' user
+ sleep 300

当通过cron的@reboot启动上述输出时:

代码语言:javascript
运行
复制
+ :
+ pwgen 8 1
+ npasswd=aizof5Ka
+ echo aizof5Ka
+ openssl passwd -1 aizof5Ka
+ usermod --password $1$KFrgibYH$e1dMUeF2AzTtSPExBjbXo1 user
/root/change-user-passwd.sh: 8: /root/change-user-passwd.sh: usermod: not found

这让我明白了这个问题,谢谢@l0b0

EN

回答 1

Unix & Linux用户

发布于 2018-10-23 07:17:42

根据:https://stackoverflow.com/questions/714915/using-the-passwd-command-from-within-a-shell-script

echo "$npasswd" | passwd --stdin user

echo "user:$npasswd" | chpasswd

对你有好处。

票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/477184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档