Ich habe zwei Programme in Java, die ich von einem Bash-Skript aus aufrufe:
java program1 arg ... arg
sudo java program2 arg ... arg
Ich möchte program2 als sudo ausführen, ohne nach einem Passwort gefragt zu werden. Ich kenne die sudoers-Datei, bin mir aber nicht sicher, wie ich sie konfigurieren soll, um Java-Programme als sudo auszuführen, ohne nach einem Passwort gefragt zu werden. Irgendwelche Ideen?
Antwort1
Verwenden von Platzhaltern in der Sudoers-Datei
In der sudoers
DateidürfenVerwenden Sie Platzhalter (*), um die Möglichkeit zu schaffen, ein Skript mit Argumenten auszuführen.
Ein Beispiel
Ich habe es mit einem erschreckend einfachen Python-Skript getestet. In der sudoers
Datei musste ich den absoluten Pfad zu python
: /usr/bin/python
in der Zeile der sudoers-Datei verwenden:
jacob ALL=NOPASSWD: /usr/bin/python /home/jacob/Bureaublad/pscript_1.py*
Dann war mein (Python-Skript-)Code:
#!/usr/bin/python
import sys
s1 = sys.argv[1]
s2 = sys.argv[2]
print(s1)
print(s2)
Dann habe ich in einem Terminal Folgendes ausgeführt:
~$ sudo python '/home/jacob/Bureaublad/pscript_1.py' monkey banana
monkey
banana
ohne nach meinem Passwort zu fragen.
Ebenso sollten Sie Ihr gewünschtes Ergebnis erreichen, wenn Sie der sudoers
Datei die folgende Zeile hinzufügen:
<your_username> ALL=NOPASSWD: /path/to/java <your_script>*
Und führen Sie das Skript aus, indem Sie:
sudo java <script> <args>
und Sie werden nicht nach Ihrem Passwort gefragt.
Mehr Informationen
Eine interessante Quelle zur Verwendung der sudoers
Datei könnte sein:Dieses hier.