我正在尝试使用makefile编译一些源代码。在makefile中,有一堆命令需要作为sudo运行。

当我从终端编译源代码时,一切都很好,并且在第一次运行sudo命令等待密码时,make会暂停。一旦我输入密码,做简历和完成。

但是我希望能够在NetBeans中编译源代码。所以,我开始了一个项目,并向netbeans展示了在哪里可以找到源代码,但当我编译项目时,它给出了错误:

sudo: no tty present and no askpass program specified

第一次执行sudo命令时。

我在网上查了这个问题,我找到的所有解决方案都指向一件事:禁用这个用户的密码。因为这里讨论的用户是根用户。我不想那样做。

还有其他解决办法吗?


当前回答

试试这个:

echo '' | sudo -S my_command

其他回答

没有人告诉会导致这个错误的原因,如果从一个主机迁移到另一个主机,请记住在sudoers文件中检查主机名:

这是我的/etc/sudoers配置

User_Alias      POWERUSER = user_name
Cmnd_Alias SKILL = /root/bin/sudo_auth_wrapper.sh
POWERUSER hostname=(root:root) NOPASSWD: SKILL

如果不匹配

uname -a
Linux other_hostname 3.10.17 #1 SMP Wed Oct 23 16:28:33 CDT 2013 x86_64 Intel(R) Core(TM) i3-4130T CPU @ 2.90GHz GenuineIntel GNU/Linux

它将弹出以下错误:

没有tty present,也没有指定askpass程序

我想我能帮到别人。

首先,我修改了/etc/sudoers中的用户设置,参考上面的答案。但它仍然没有工作。

myuser   ALL=(ALL) NOPASSWD: ALL
%mygroup  ALL=(ALL:ALL) ALL

在我的例子中,myuser在mygroup中。

我不需要小组。删除了这一行。

(不应该像我一样删除这一行,只是标记注释。)

myuser   ALL=(ALL) NOPASSWD: ALL

它的工作原理!

我能够做到这一点,但请确保按照正确的步骤。 这是为任何得到导入错误的人准备的。

步骤1:检查文件和文件夹是否有执行权限问题。 Linux用户使用:

chmod 777 filename

步骤2:检查哪个用户有执行它的权限。

Step3:打开终端键入此命令。

sudo visudo

将这些行添加到下面的代码中

www-data ALL=(ALL) NOPASSWD:ALL
nobody ALL=(ALL) NOPASSWD:/ALL

这是授予执行脚本的权限,并允许它使用所有的库。用户通常是“nobody”或“www-data”。

现在将代码编辑为

echo shell_exec('sudo -u the_user_of_the_file python your_file_name.py 2>&1');

进入终端查看进程是否正在运行 在这里输入这个…

ps aux | grep python

这将输出在python中运行的所有进程。

附加元件: 使用下面的代码检查系统中的用户

cut -d: -f1 /etc/passwd

谢谢你!

登录到您的linux。执行以下命令。要小心,因为编辑sudoer是一个有风险的命题。

$ sudo visudo

vi编辑器打开后,进行以下更改:

注释掉默认值是必需的 #默认值是必须的 转到文件末尾并添加 NOPASSWD:所有

以下操作适用于ubuntu20

编辑/etc/sudoers

visudo

or

vi /etc/sudoers

添加以下内容

userName   ALL=(ALL) NOPASSWD: ALL
%sudo   ALL=(ALL:ALL) NOPASSWD:ALL