我有兩個 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
可能是這個。