如何在不使用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’
-
在终端上键入
sudo visudo
-
添加
joedoe ALL=NOPASSWD: /usr/sbin/shutdown -r now
作为文件末尾的新行,使用您尝试使用的程序的绝对路径。 -
在您的程序上,您可以使用
sudo shutdown -r now
而无需键入sudo密码。
您可以使用终端上的which
找到程序的绝对路径。
它是一个非常肮脏的技巧希望让你的系统开放以应对其他危险,但我猜你知道你在做什么并想要这个。
编辑
您确实需要确保您设置的权限位于文件的末尾,以便组权限不会覆盖任何内容。