使用 sudo 参数运行脚本而无需输入密码

使用 sudo 参数运行脚本而无需输入密码

我有两个 Java 程序,我正在从 Bash 脚本调用它们:

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

我想以 sudo 身份运行 program2,而无需输入密码。我知道 sudoers 文件,但我不知道如何配置它以以 sudo 身份运行 java 程序,而无需输入密码。有什么想法吗?

答案1

在 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

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

并通过以下方式运行脚本:

sudo java <script> <args>

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

更多信息

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

相关内容