【发布时间】:2018-08-15 20:18:37
【问题描述】:
我正在尝试使用在一行中提供的用户密码的命令运行 sudo
echo abc$*@def | sudo -S -u user_account ./script_name
echo abc\$*@def | sudo -S -u user_account ./script_name
echo 'abc$*@def' | sudo -S -u user_account ./script_name
echo 'abc\$*@def' | sudo -S -u user_account ./script_name
所有这些命令不断输入错误密码请重试错误
我也尝试将用户密码更改为“m”,并且成功了
echo 'm' | sudo -S -u user_account ./script_name
这意味着密码中的特殊字符有问题
注意:我使用的是 OS X 10.13.3,这是一个只有我自己运行的命令,我想要一个一键式解决方案,这样我就不必在很多机器上输入 pwd。是的,这个密码的安全性在这里不是问题
如果通过脚本完成,我也可以使用其他一键式方法
有人可以帮忙吗?
【问题讨论】:
-
如果你的密码真的是
abc$*@def,我认为第三个应该可以工作。 -
对于以其他用户身份运行脚本的问题,这是一个糟糕的解决方案。最好将
sudo配置为允许以该用户身份运行此脚本而无需密码。man sudoers似乎是为机器编写的,而不是人类,而是例如this thread 有一些很好的建议。 -
为什么密码在
sudo运行之前被收集? -
否;要么运行
sudo -u user_account ./script_name,并让相关用户在提示时输入密码,要么配置sudo以在没有密码的情况下运行命令。 -
@chepner,没有其他用户可以交互,这是一个仅由我运行的脚本,我想要一个单击解决方案,而不是在几台机器上多次输入 pwd