Meine Frage ist, ist es möglich, meinen obigen Befehl in Java auszuführen, ohne irgendwo Änderungen vorzunehmen, dh mit Standardeinstellungen?
sudo -u -S pwd
Die kurze Antwort lautet "Nein". Sie müssen die Einstellungen ändern, damit sudo andere Aktionen ausführt als derzeit.
Möglicherweise ist sudo das falsche Werkzeug dafür. Die Regeln von Sudo sollen Systemadministratoren dabei helfen, eine Möglichkeit zu konfigurieren, um schwer zu missbrauchende Erhöhungsrechte zu erlangen, um zusätzliche / unbeabsichtigte Berechtigungen zu erhalten.
Wenn Sie überlegen, was sudo für Sie tut:
- fordert zur Eingabe eines Kennworts auf, um die Identität zu überprüfen
- Privilegien erhöhen
- dann optional Privilegien als anderer Benutzer erhalten
- Protokolle, die sudo verwendet, um Zugriff zu erhalten oder Befehle auszuführen
Wenn Sie möchten, dass Ihr Java willkürliche Befehle als willkürliche Benutzer ausführt, ohne ein Kennwort für diese oder Ihre Benutzer anzugeben, ersetzen Sie im Wesentlichen sudo. In diesem Fall sollten Sie Ihre eigenen Regeln erstellen, um Missbrauch zu verhindern.
Grundsätzlich gibt es zwei Möglichkeiten, dies zu tun:
- Führen Sie Ihr Java mit erhöhten Rechten aus und nehmen Sie die benötigten Rechte sorgfältig entgegen und geben Sie sie zurück (siehe setuid () seteuid () C-Funktionsaufrufe).
- Führen Sie ein externes Programm aus, um bei Bedarf erhöhte Berechtigungen zu erhalten
Im Fall von # 1 führt Ihr Java-Programm selbst aus, was sudo tut, und Sie sollten Ihre eigenen Regeln implementieren, um sich vor Missbrauch zu schützen.
Es gibt andere Programme als sudo, um # 2 zu tun. Ein Beispiel finden Sie unter https://code.google.com/archive/p/exec-wrapper/downloads
Dieses praktische Shell-Skript erstellt ein C-Programm zum Ausführen eines anderen Befehls (normalerweise eines Skripts). Dann kompilieren Sie das C-Programm in eine Binärdatei und markieren das setuid-Stammverzeichnis, oder es kann wirklich für jeden Benutzer gesetzt werden. (Modus: 4555 und Besitzer: root)
Solange Sie sich in einem Dateisystem befinden, das dies zulässt, führt das Ausführen des Binärprogramms den konfigurierten Befehl als Benutzer-ID aus, die das Binärprogramm selbst besitzt.