以sudo身份运行带有参数的脚本,无需输入密码。

我有两个用Java编写的程序,我从bash脚本中调用它们。
java program1 arg ... arg
sudo java program2 arg ... arg

我想以sudo身份运行program2,而不需要输入密码。我知道有sudoers文件,但是我不确定如何配置它以sudo方式运行Java程序而不需要输入密码。你有什么想法吗?
1个回答

在sudoers文件中,您可以使用通配符(*),从而创建运行带有参数的脚本的可能性。
一个例子
我用一个非常简单的Python脚本进行了测试。在sudoers文件中,我必须使用绝对路径来指定python:在sudoers文件的那一行中使用/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文件中来实现您想要的:

<your_username> ALL=NOPASSWD: /path/to/java <your_script>*

然后通过以下方式运行脚本:

sudo java <script> <args>

而且您不需要提供密码。

更多信息

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


@MarkoGulin,你能给我一些关于答案的反馈吗?它对你有用吗?你遇到了困难吗? - Jacob Vlijm