Sto scrivendo un piccolo programma di utilità. Mi piacerebbe che tentasse di eseguire sudo
qualcosa se necessario.
Cioè: se le autorizzazioni per i file non consentono all'utente corrente di operare su un determinato file (e le sudo
regole lo consentirebbero) Vorrei che la mia utility sudo
eseguisse qualcosa come proprietario del file.
Spero di verificare prima questa capacità, perché preferirei che i registri di sistema non si riempissero di rumore per tentativi sudo
falliti. Come sudo
riportato di per sé in caso di fallimento: "Questo incidente verrà segnalato".
Quindi, spero di controllare programmaticamente: può user <x>
eseguire command <y>
via sudo
?
Ecco il problema: sebbene /etc/sudoers
contenga quella mappatura, è di proprietà di root e non è leggibile dagli utenti normali.
Stavo considerando di generare un sottoprocesso da eseguire sudo -l
(che genera comandi che l'utente corrente può eseguire sudo-run). Analizzerei quindi l'output di questo. Tuttavia, questo sembra un po 'fragile. L'output contiene le informazioni che desidero, ma sembra che sia stato progettato per essere letto dagli umani (non per il consumo programmatico). Non so se ci sia alcuna garanzia che l'output seguirà lo stesso formato in futuro o su piattaforme diverse.
L'analisi programmatica sudo -l
dell'output è considerata sicura? In caso contrario, ci sono opzioni migliori per determinare in anticipo se un comando sudo riuscirà?
(sfondo sulla X / Y: questa utility è utilizzata da un account con ruolo ad accesso limitato. Mi aspetto che altri utenti optino per consentire all'account con accesso limitato di operare sui propri file tramite le regole sudo. Tuttavia, ho vinto sapere in anticipo quale di quegli altri utenti ha in atto la regola sudo pertinente)