Je veux savoir s'il est possible d'indiquer sur la ligne de commande (idéalement dans l'invite), si mode Sudo est activé.
Par mode Sudo Je veux dire que j'ai déjà entré mon mot de passe correctement une fois dans cette session Shell et qu'il n'a pas encore expiré, mais qu'il est toujours mis en cache.
En d'autres termes, puis-je savoir si la commande Sudo
que je vais exécuter me demandera mon mot de passe ou utilisera les informations d'identification mises en cache?
J'utilise depuis longtemps
Sudo -S true < /dev/null 2> /dev/null
Vous pouvez essayer cela, mais une mise à jour récente semble avoir cassé cela depuis que je reçois maintenant une erreur de segmentation.
Vous pouvez essayer Sudo -n true 2> /dev/null
(no -v
). Cela semble fonctionner pour moi sans renouveler le délai d'attente.
Vous pouvez exécuter cela dans votre invite de différentes manières, notamment:
PS1='\u:\w$(Sudo -n true 2> /dev/null && echo " : Sudo :") \$ '
Cela dépend de l'option promptvars
qui est activée par défaut.
Notez qu'une fois l'invite émise, l'indicateur n'est plus mis à jour. Ainsi, si l'invite reste là jusqu'à l'expiration du délai, cela peut indiquer que Sudo
est actif même s'il a expiré.
Il n’existe aucune commande permettant d’afficher directement le temps restant pour les informations d’identification mises en cache, il vous faudrait en faire un script.
De https://unix.stackexchange.com/questions/115506/Sudo-testing-for-credentials
Sudo -nv 2> /dev/null
donnera une valeur de sortie de 0 si le mot de passe est mis en cache, vous pourrez peut-être modifier le script dans ce lien ou écrire le vôtre.
Alternativement, les horodatages sont stockés dans /var/lib/Sudo
afin que vous puissiez probablement écrire un script pour afficher ou vérifier l'horodatage.