Sudo 似乎不遵守 -S 参数

Sudo 似乎不遵守 -S 参数

我正在使用 DeployHQ 运行一些脚本作为部署前/部署后的一部分,我需要能够在一行上调用脚本,并且为了避免终端出现反馈,我想将密码传递到 sudo 命令中(而不是 sudo 在使用时询问密码)

我正在尝试通过做类似的事情sudo来开展工作;stdin

echo my_password | sudo -S chown -R my_user:www-data /srv/www/my_site/public_html/

但返回的是;

[sudo] password for my_user: 
 Sorry, try again.
[sudo] password for my_user: 
 sudo: 1 incorrect password attempt

有问题的密码是正确的,并且当运行该命令时-S,系统会提示用户输入密码,这样就有效了。

有人能指出我做错什么吗?

只是为了澄清一下 - 我希望仍然有一个密码,只有一个我可以传递的密码。

答案1

来自 sudo 手册:

-S(stdin)选项使 sudo 从标准输入而不是终端设备读取密码。密码后面必须有一个换行符。这意味着你应该以 \n 结尾密码

编辑:我做了几个测试,老实说,在我的测试系统中你的语法工作正常。(echo mypass | sudo -S ....)

第二次编辑:尝试使用以下语法:echo -e "mypass\n" | sudo -S command

答案2

我不知道哪里出了问题

但是,如果你想在不提示输入密码的情况下运行 sudo,你可以通过编辑 sudo 配置文件来实现。为此,请使用命令visudo

默认文件有很多示例,因此只需搜索NOPASSWD,您就会找到一个可以开始使用的示例

相关内容