如何使用任务后台处理程序运行 sudo 命令?

如何使用任务后台处理程序运行 sudo 命令?

当我尝试使用需要 sudo 访问权限的任务假脱机程序运行任务时,例如

ts sudo echo "hello world"

它不要求我输入密码并退出并显示错误 1

或者,我有一些任务在执行过程中可能需要输入密码。我该如何与之交互?

答案1

运行的内容ts未连接到终端。我假设您不想设置为sudo无密码工作。那么您需要在没有终端的情况下提供密码。这可以通过以下方式完成sudo -A

man 8 sudo

-A
通常,如果sudo需要密码,它会从用户终端读取密码。如果-A指定了 (askpass) 选项,则会执行(可能是图形化的)辅助程序来读取用户密码并将密码输出到标准输出。如果SUDO_ASKPASS设置了环境变量,它会指定辅助程序的路径。[…]

编写一个辅助脚本。该脚本应该只打印您的密码。示例脚本位于这是我的另一个答案

然后你可以这样做:

SUDO_ASKPASS="/path/to/helper/script" sudo whatever

正确ts的语法是:

SUDO_ASKPASS="/path/to/helper/script" ts sudo whatever

脚本如何知道密码取决于你。密码可能是硬编码的(如示例中所示),存储在文件中(脚本将只是cat file),通过连接到某个代理或以交互方式从你那里获取(例如通过显示 GUI 窗口;阅读在脚本中使用 sudo 时,如何通过 GUI 提示询问密码?)。

您现在关心的是确保脚本(以及文件,如果有)的安全。

笔记sudo可能配置为在没有终端的情况下无法工作

相关内容