使用参数作为sudo运行脚本而不要求输入密码

我有两个Java程序,我从bash脚本调用:

java program1 arg ... arg sudo java program2 arg ... arg 

我想在没有被要求输入密码的情况下将program2作为sudo运行。 我知道sudoers文件,但我不知道如何配置它来运行java程序作为sudo而不被要求输入密码。 有什么想法吗?

在sudoers文件中使用通配符

sudoers文件中,您可以使用通配符(*),从而创建使用参数运行脚本的可能性。

一个例子

我用一个令人震惊的简单python脚本测试它。 在sudoers文件中,我不得不在sudoers文件的行中使用python/usr/bin/python的绝对路径:

 jacob ALL=NOPASSWD: /usr/bin/python /home/jacob/Bureaublad/pscript_1.py* 

然后我的(python脚本)代码是:

 #!/usr/bin/python import sys s1 = sys.argv[1] s2 = sys.argv[2] print(s1) print(s2) 

然后我跑进了一个终端:

 ~$ sudo python '/home/jacob/Bureaublad/pscript_1.py' monkey banana monkey banana 

没有要求我的密码。

同样,您应该能够通过将以下行添加到sudoers文件来实现您想要的:

  ALL=NOPASSWD: /path/to/java * 

并运行脚本:

 sudo java  

并且不会要求您输入密码。

更多信息

关于如何使用sudoers文件的一个有趣的来源可能就是这个 。