在shell脚本中传递su密码

3

如何在shell脚本中使用su来传递密码(不使用sudo和其他方式)? 我尝试了echo "password" | su root -c,但无效。


你疯了吗?绝对不要在脚本中放置 root 密码(或以被记录在 history 文件的方式在命令中使用它)。那只会带来麻烦。以无需密码的方式 susudo 到 root 的正确方法是将自己添加到 wheel 组的成员中,然后 su 到 root(输入密码),编辑 sudo 配置文件 visudo 并在末尾添加以下行 %wheel ALL = (ALL) NOPASSWD:ALL。然后,您和所有 wheel 组的成员都可以无需输入密码地 susudo - David C. Rankin
1
为什么这个帖子会被踩?除了犯了一个战术性错误,即提出了一个可能会暴露根密码的解决方案,其余部分都是关于如何将密码传递给su实用程序的好问题。 - jayhendren
一个与此类似的问题在AskUbuntu上获得了12个赞和两个不错的被赞回答。 - jayhendren
此外,https://dev59.com/A3VC5IYBdhLWcg3woCrN 是一个相似的问题,但是没有一个得到赞成的回答专门解决将密码传递给 su(只有 sudossh)。 - jayhendren
1个回答

5

最佳的方法是使用 sudo,但如果您不想使用最佳解决方案,可以使用 script 替代:

{ sleep 3; echo "yourpassword"; } | script -q -c 'su -c whoami' /dev/null

这将会打印出root,即whoami命令的输出。

在尝试适应此命令以运行您自己的命令之前,请确保按原样(将密码替换)尝试此命令,因为适应它很困难且容易出错。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接