如何在不使用sudo提示密码的情况下允许执行?

我正在编写一个Java应用程序,我需要执行命令行执行并返回结果,但是当我执行命令时,它会询问sudo密码。 到目前为止,我试过:

$ sudo -s $ vim /etc/sudoers # User privilege specification root ALL=(ALL:ALL) NOPASSWD: ALL javauser ALL=(ALL:ALL) NOPASSWD: ALL :wq $ 4 -r--r----- 1 root root 615 2011-10-26 09:23 sudoers 

一旦我执行命令,它再次询问“[javauser]密码为javauser:”。 但我已经提到过noPASSWD。

whoami返回alex ,我在sudoers文件中添加它

 # User privilege specification root ALL=(ALL:ALL) ALL alex ALL=NOPASSWD: ALL # Members of the admin group may gain root privileges %admin ALL=(ALL) ALL # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL 

跑步一直问我输入密码,有什么想法吗?

您需要在终端类型sudo visudo上执行以下操作,并在文件末尾添加这样的行,指定要运行的命令而不键入sudo密码(我建议您使用要在其中使用的每个命令)程序,而不仅仅是允许所有程序执行此)

  ALL=NOPASSWD: ,  

现在,只要您使用sudo键入该命令,就可以在没有密码的情况下运行指定的命令。

即:让我们说你shutdown -r now想要运行shutdown -r now而不必每次都输入sudo密码而你的用户名是’joedoe’

  1. 在终端上键入sudo visudo

  2. 添加joedoe ALL=NOPASSWD: /usr/sbin/shutdown -r now作为文件末尾的新行,使用您尝试使用的程序的绝对路径。

  3. 在您的程序上,您可以使用sudo shutdown -r now而无需键入sudo密码。

您可以使用终端上的which 找到程序的绝对路径。

它是一个非常肮脏的技巧希望让你的系统开放以应对其他危险,但我猜你知道你在做什么并想要这个。

编辑

您确实需要确保您设置的权限位于文件的末尾,以便组权限不会覆盖任何内容。