Je travaille sur un script qui exécute une commande en tant que sudo et fait écho à une ligne de texte UNIQUEMENT si mes privilèges sudo ont expiré, donc uniquement si l'exécution d'une commande avec sudo nécessiterait que mon utilisateur (et non root) saisisse à nouveau son mot de passe.
Comment vérifier cela? N'oubliez pas que $(id -u)
même lors de l'exécution en tant que sudo, mon ID utilisateur actuel sera renvoyé, ce qui ne peut pas être vérifié pour le faire correspondre à 0 ...
J'ai besoin d'une méthode qui vérifierait cela tranquillement.
sudo -n true
et leur utilisation": La documentation est un peu vague sur ce point, mais je pense que l'exécution d'unesudo
commande, même justesudo -n true
, rétablira le délai d'attente l'horloge. Quoi qu'il en soit, cela-v
est explicitement documenté comme tel, etsudo -n -v
est probablement plus approprié quesudo -n true
dans ce but de toute façon.hostname sudo[8870]: username : a password is required ; TTY=pts/0 ; PWD=/home/username ; USER=root ; COMMAND=/usr/bin/true
. Si vous l'utilisez dans l'invite bash, par exemple, cela entraînera de nombreux messages d'erreur.Courir:
Si vos privilèges sudo ont expiré, cela se terminera avec un code de sortie de 1 et affichera:
Si vous disposez d'informations d'identification en cache valides, cette commande réussira et ne produira rien.
Donc, pour mettre tout cela ensemble, voici un scriptlet qui vérifiera en silence si vous avez des informations d'identification mises en cache valides:
Comme d'autres réponses / commentaires mentionnés, l'
-v
option ("valider") pour sudo renouvelle silencieusement les informations d'identification mises en cache s'il existe des invites d'authentification afin de générer des informations d'identification mises en cache, et l'-n
option ("non interactive") empêche sudo de générer toutes les invites interactives, telles que l'invite d'authentification.la source
sudo -nv
fonctionne bien, mais pollue les journaux système avec des erreurs sudo et des informations d'authentification pam. J'avais besoin de vérifier les privilèges sudo pour mon invite bash, donc elle a été exécutée assez souvent et mes journaux ne comprenaient presque que ce bruit.Il est possible d'analyser directement le fichier d'horodatage sudo - j'ai écrit un petit utilitaire C pour cela:
la source