J'écris un petit programme utilitaire. Je voudrais qu'il essaie de sudo
lancer quelque chose si nécessaire.
C'est-à-dire: si les autorisations de fichier ne permettent pas à l'utilisateur actuel d'opérer sur un fichier particulier (et que les sudo
règles le permettent), j'aimerais que mon utilitaire sudo
exécute quelque chose en tant que propriétaire du fichier.
J'espère vérifier cette capacité à l'avance, car je préférerais que les journaux système ne se remplissent pas de bruit provenant d'échecs sudo
. Comme l' sudo
indique lui-même l'échec: "Cet incident sera signalé".
Donc, j'espère vérifier par programme: peut user <x>
fonctionner command <y>
via sudo
?.
Voici le problème: tandis que /etc/sudoers
contient ce mappage, il appartient à root et n'est pas lisible par les utilisateurs réguliers.
J'envisageais de créer un sous-processus à exécuter sudo -l
(qui génère des commandes que l'utilisateur actuel peut exécuter sudo). Je voudrais ensuite analyser la sortie de cela. Cependant, cela semble un peu fragile. La sortie contient les informations que je veux, mais il semble qu'elle ait été conçue pour être lue par les humains (pas pour la consommation programmatique). Je ne sais pas s'il y a une garantie que la sortie suivra le même format à l'avenir, ou sur différentes plates-formes.
L'analyse syntaxique des sudo -l
sorties est-elle considérée comme sûre? Sinon, existe-t-il de meilleures options pour déterminer à l'avance si une commande sudo réussira?
(Contexte sur le X / Y: cet utilitaire est destiné à être utilisé par un compte de rôle à accès limité. Je m'attends à ce que d'autres utilisateurs optent effectivement pour permettre au compte à accès limité de fonctionner sur leurs fichiers via les règles sudo. ne sais pas à l'avance lesquels de ces autres utilisateurs ont la règle sudo pertinente en place)