我正在尝试使用makefile编译一些源代码。在makefile中,有一堆命令需要作为sudo运行。
当我从终端编译源代码时,一切都很好,并且在第一次运行sudo命令等待密码时,make会暂停。一旦我输入密码,做简历和完成。
但是我希望能够在NetBeans中编译源代码。所以,我开始了一个项目,并向netbeans展示了在哪里可以找到源代码,但当我编译项目时,它给出了错误:
sudo: no tty present and no askpass program specified
第一次执行sudo命令时。
我在网上查了这个问题,我找到的所有解决方案都指向一件事:禁用这个用户的密码。因为这里讨论的用户是根用户。我不想那样做。
还有其他解决办法吗?
命令sudo失败,因为它试图提示输入root密码,并且没有分配伪tty(因为它是脚本的一部分)。
您需要以root身份登录运行此命令,或者在/etc/sudoers中设置以下规则
(或:sudo visudo):
# Members of the admin group may gain root privileges.
%admin ALL=(ALL) NOPASSWD:ALL
然后确保您的用户属于admin组(或wheel)。
理想情况下(更安全),将根权限限制为只允许指定为%admin ALL=(ALL) NOPASSWD:/path/to/program的特定命令
我得到这个错误是因为我限制了我的用户只有一个可执行的“systemctl”,并错误地配置了visudo文件。
以下是我得到的答案:
jenkins ALL=NOPASSWD: systemctl
然而,你需要包括可执行文件的完整路径,即使它默认在你的路径上,例如:
jenkins ALL=NOPASSWD: /bin/systemctl
这允许我的jenkins用户重新启动服务,但不具有完全的根访问权限