Ich schreibe ein kleines Hilfsprogramm. Ich möchte, dass es versucht, sudobei Bedarf etwas auszuführen.
Das heißt: Wenn der aktuelle Benutzer mit Dateiberechtigungen nicht in der Lage ist, eine bestimmte Datei sudozu sudobearbeiten (und die Regeln dies zulassen würden), möchte ich, dass mein Dienstprogramm als Eigentümer der Datei etwas ausführt.
Ich hoffe, diese Fähigkeit im Voraus überprüfen zu können, da ich es vorziehen würde, dass sich die Systemprotokolle nicht mit Rauschen aus fehlgeschlagenen sudoVersuchen füllen . Wie sudoselbst berichtet über Fehler: "Dieser Vorfall wird gemeldet".
Also, ich bin der Hoffnung , programmatisch zu überprüfen: kann user <x>laufen command <y>über sudo?.
Hier ist das Problem: Während es /etc/sudoersdiese Zuordnung enthält, befindet es sich im Root-Besitz und ist für normale Benutzer nicht lesbar.
Ich habe darüber nachgedacht, einen auszuführenden Unterprozess zu sudo -lerzeugen (der Befehle ausgibt, die der aktuelle Benutzer sudo ausführen kann). Ich würde dann die Ausgabe davon analysieren. Dies scheint jedoch ein wenig fragil. Die Ausgabe enthält die gewünschten Informationen, aber es scheint, dass sie für Menschen zum Lesen gedacht sind (nicht für den programmatischen Verbrauch). Ich weiß nicht, ob es eine Garantie dafür gibt, dass die Ausgabe in Zukunft dem gleichen Format oder auf verschiedenen Plattformen folgt.
Wird das programmatische Parsen der sudo -lAusgabe als sicher angesehen? Wenn nicht, gibt es bessere Möglichkeiten, um im Voraus festzustellen, ob ein sudo-Befehl erfolgreich sein würde?
(Hintergrundinformationen zu X / Y: Dieses Dienstprogramm wird von einem Rollenkonto mit eingeschränktem Zugriff verwendet. Ich erwarte, dass sich einige andere Benutzer effektiv dafür entscheiden, dass das Konto mit eingeschränktem Zugriff ihre Dateien über Sudo-Regeln bearbeiten kann. Ich habe jedoch gewonnen Ich weiß nicht im Voraus, für welche dieser anderen Benutzer die entsprechende Sudo-Regel gilt.)