我有两个 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
文件的一个有趣来源可能是这个。