![Linux PuTTY - 自动化 su 解决密码相关问题](https://linux22.com/image/1279829/Linux%20PuTTY%20-%20%E8%87%AA%E5%8A%A8%E5%8C%96%20su%20%E8%A7%A3%E5%86%B3%E5%AF%86%E7%A0%81%E7%9B%B8%E5%85%B3%E9%97%AE%E9%A2%98.png)
我正在通过PuTTY连接到服务器,如下所示:
putty.exe -ssh user@host -pw password -noagent -m commands.txt
之后我必须使用:
su someUser
它会要求输入密码 - 我已将其放在 command.txt 中,但它不起作用。
如何在一行中自动执行 su 命令(包括密码),并将其放在 command.txt 中?或者也许有其他方法?
我不想使用 sudo 或 execute 等。我尝试过:
echo password | su someUser
但这种方式的管道铺设并没有起到作用。
答案1
您可以通过在 /etc/sudoers 文件中添加脚本/程序特定行来禁用密码问题:yourusername ALL=(ALL) NOPASSWD: /usr/local/bin/whatever
答案2
使用 su 并将密码保存在文件中是否至关重要?如果不重要,请使用其他方法,因为:
$ su << LOL
> secretpassword
> LOL
su: must be run from a terminal
$ echo secretpassword|su -
su: must be run from a terminal
你最好使用 ssh 密钥:快速 ssh-keys 介绍
答案3
为什么你不想使用sudo
?su 将始终使用终端功能询问密码,因此您需要创建一个伪终端来与其通信。expect
可以为您做到这一点。
不过,我认为解决这个问题的“正确”方法是使用特定用户拥有的 suid 可执行文件,或者更好的是——使用正确配置的sudo
。