“Accès Sudo” se décline en plusieurs saveurs. Deux saveurs principales : Premièrement, vous, ou un groupe dont vous êtes membre, devez être configuré pour un accès sudo dans le fichier /etc/sudoers.
Deuxièmement, vous devez connaître votre mot de passe, ou vous devez avoir effectué une commande sudo récemment. Assez récemment pour que le délai d'attente n'ait pas expiré. (Fait amusant : vous pouvez voir le délai d'attente très long dans votre fichier sudoer).
J'ai souvent envie de tester le deuxième type d'accès dans le prologue d'un script qui devra sudo quelques étapes. Lorsque cette vérification échoue, je peux conseiller à l'utilisateur d'activer le deuxième type d'accès avant d'exécuter le script.
bash-3.2$ if sudo -S -p '' echo -n < /dev/null 2> /dev/null ; then echo 'Sudo is enabled.' ; else echo 'Sudo is not enabled' ; fi
Sudo is enabled.
bash-3.2$ sudo -K
bash-3.2$ if sudo -S -p '' echo -n < /dev/null 2> /dev/null ; then echo 'Sudo is enabled.' ; else echo 'Sudo is not enabled' ; fi
Sudo is not enabled
Le -S indique à sudo de lire le mot de passe depuis stdin. Le -p définit une invite vide. Le -K efface le deuxième type d'accès.
Comme il envoie stderr à /dev/null, il vérifie également si l'utilisateur a le premier type d'accès sudo.