Azure Pipelines是否可以使用sudo运行bash命令?

16 浏览
0 Comments

Azure Pipelines是否可以使用sudo运行bash命令?

我正在尝试使用一个makefile编译一些源代码。在makefile中有一堆需要以sudo运行的命令。\n当我在终端中编译源代码时,一切都很顺利,当第一次运行sudo命令时,make会暂停等待密码。一旦我输入密码,make会继续执行并完成。\n但是我想在NetBeans中编译这些源代码。所以,我开始了一个项目并告诉netbeans在哪里找到源代码,但是当我编译项目时,它给出了错误:\n

sudo: no tty present and no askpass program specified

\n第一次遇到sudo命令时。\n我在互联网上查找了这个问题,所有的解决方案都指向一件事:禁用此用户的密码。由于这里涉及的用户是root用户,我不想这样做。\n还有其他解决方案吗?

0
0 Comments

问题出现的原因是在使用Azure Pipelines时,无法使用sudo命令运行bash命令。解决方法是使用ssh命令并添加-t参数,以强制分配伪终端。具体的解决方法如下:

尝试以下命令:

ssh -t remotehost "sudo <cmd>"

这将消除上述错误。

-t参数表示强制分配伪终端。这可以用于在远程机器上执行任意基于屏幕的程序。更多信息请参见:sudo-no-tty-present-and-no-askpass-program-specified。同时,sudo -A允许设置一个sudo askpass程序,但我只看到GUI界面。有人知道一个基于终端的askpass程序吗?

更正一下,sudo-A参数不接受参数,而是需要环境变量SUDO_ASKPASS或者一个sudo.conf文件。因此,ssh remotehost sudo -A command仍然有效。对于基于终端的askpass程序,仍然有疑问。

这对我来说不起作用(可能是因为我从脚本中调用ssh),给我一个错误:Pseudo-terminal will not be allocated because stdin is not a terminal. 🙁

这并没有回答问题。

0
0 Comments

问题:Azure Pipelines中是否可以使用sudo运行bash命令?

原因:使用sudo运行bash命令需要在sudoers文件中进行配置,但是在配置过程中可能会出现一些问题。

解决方法:

1. 在sudoers文件中使用NOPASSWD行配置所有命令,例如:jenkins ALL=(ALL) NOPASSWD: ALL

2. 将该行放置在sudoers文件的所有其他行之后。

3. 将新的配置行放置在已存在的配置行之后,以确保新配置行具有优先级。

需要注意的是,在sudoers文件中将配置行放置在最后一行才能生效,即使在Ubuntu 16.04上也是如此。此外,为jenkins用户赋予sudo权限可能存在安全风险,建议将jenkins脚本进行封装,并且只授予特定命令的访问权限,例如:jenkins ALL=(ALL) NOPASSWD: /var/lib/jenkins/wrapper_script

以上是关于在Azure Pipelines中使用sudo运行bash命令的原因和解决方法的整理。希望对大家有所帮助。

0
0 Comments

问题的出现原因是在Azure Pipelines中运行bash命令时,需要使用sudo权限,但是没有sudo权限,导致无法运行命令。解决方法是通过修改sudoers文件,授予用户在不提示输入密码的情况下使用特定命令的权限。

具体的解决步骤如下:

1. 打开一个shell控制台,输入命令sudo visudo以编辑sudoers文件。

2. 在文件的末尾添加以下内容:username ALL = NOPASSWD: /fullpath/to/command, /fullpath/to/othercommand,其中username是用户的名称,/fullpath/to/command是需要授权的命令的完整路径。

3. 保存文件并退出。

需要注意的是,编辑sudoers文件时要谨慎操作,因为损坏该文件可能会导致严重后果。

如果没有sudo权限,可以考虑在/etc/sudoers.d目录下添加文件,并保持visudo文件不变。

如果希望以编程的方式实现此操作,可以参考下面的答案,向sudo命令添加-S标志。

然而,需要注意的是,使用NOPASSWD选项可能存在安全风险,因此解决缺少tty的问题可能更为明智。添加密码不是解决此问题的方法,错误本身才是问题。

,通过修改sudoers文件并授予用户特定命令的sudo权限,可以解决在Azure Pipelines中使用sudo运行bash命令的问题。但是需要谨慎操作,以免造成安全风险。

0