17 command-line 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
Run Code Online (Sandbox Code Playgroud)
一旦我执行命令,它再次询问“[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
Run Code Online (Sandbox Code Playgroud)
跑步一直问我密码,有什么想法吗?
Bru*_*ira 31
您需要在终端类型上执行以下操作,sudo visudo并在文件末尾添加这样的行,指定要运行的命令而不输入 sudo 密码(我建议您使用要在程序中使用的每个命令和不只是允许所有程序由此执行)
<yourusername> ALL=NOPASSWD: <command1>, <command2>
Run Code Online (Sandbox Code Playgroud)
现在你可以在没有密码的情况下运行指定的命令,只要你用sudo.
即:假设您想运行shutdown -r now而不必每次都输入 sudo 密码并且您的用户名是“joedoe”
键入sudo visudo一个终端上
在文件末尾添加joedoe ALL=NOPASSWD: /usr/sbin/shutdown -r now一个新行,使用您尝试使用的程序的绝对路径。
在您的程序中,您sudo shutdown -r now无需输入 sudo 密码即可使用。
您可以通过which <program name>在终端上使用来找到程序的绝对路径。
这是一个非常肮脏的伎俩,希望让您的系统对其他危险保持开放,但我猜您知道自己在做什么并且想要这个。
编辑
您确实需要确保您设置的许可位于文件的末尾,以便组权限不会覆盖任何内容。