使用 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可能是這個

相關內容