Quelle est la durée du mot de passe pour exécuter une commande avec sudo mis en cache?

23

Si j'exécute une commande qui nécessite des privilèges root avec sudo, il me sera demandé de saisir le mot de passe de l'utilisateur actuel. Après un certain temps, si j'exécute le même type de commandes avec sudo, je ne serai plus demandé le mot de passe. Donc, je suppose que le mot de passe est mis en cache quelque part jusqu'à son expiration. Quelle est la durée de ce délai d'expiration? Est-il possible de le configurer?

Meysam
la source
1
Juste pour info, vous pouvez demander de prolonger l'expiration à l'aide de sudo -v. C'est idéal pour mettre en haut des scripts qui exécutent les commandes sudo afin que le mot de passe vous soit demandé au début.
valbaca
Remarque sudo ne met pas en cache le mot de passe. Sudo n'a en fait pas du tout besoin de mot de passe pour faire son travail, il ne demande qu'à vérifier que l'utilisateur est autorisé à exécuter la commande donnée. Fondamentalement, il met en cache les informations d'identification des utilisateurs pour une période (comme un "horodatage" spécial, voir la réponse principale), au cours de laquelle il ne nécessite pas que l'utilisateur se revérifie. Le mot de passe lui-même n'est pas mis en cache (stocké), contrairement à un navigateur Web ou à des clés de chiffrement.
anthony

Réponses:

20

man 5 sudoersnous informe qu'il existe une option timestamp_timeout:

timestamp_timeout

Nombre de minutes qui peuvent s'écouler avant que sudo demande à nouveau un mot de passe. Le délai d'attente peut inclure un composant fractionnaire si la granularité infime est insuffisante, par exemple 2,5. La valeur par défaut est 5. Définissez cette valeur sur 0 pour toujours demander un mot de passe. S'il est défini sur une valeur inférieure à 0, l'horodatage de l'utilisateur n'expirera jamais. Cela peut être utilisé pour permettre aux utilisateurs de créer ou de supprimer leurs propres horodatages via «sudo -v» et «sudo -k» respectivement.

Alors oui, il peut être configuré via /etc/sudoers, et par défaut, il expire après 5 minutes.

Ulrich Schwarz
la source
4
et vous savez, utilisez visudopour modifier la sudoconfiguration, ne modifiez JAMAIS /etc/sudoersdirectement.
Carlos Campderrós
2
@ CarlosCampderrós: ​​C'est vrai. Et (si possible) gardez toujours un autre shell racine ouvert pour être du bon côté. :)
Ulrich Schwarz
7

Cela dépend de votre configuration. La valeur par défaut sur la plupart des distributions (et dans la source) est de 5 minutes, mais vous pouvez la changer avec l' timestamp_timeoutoption dans/etc/sudoers . De man sudoers:

Nombre de minutes qui peuvent s'écouler avant que sudo demande à nouveau un mot de passe. Le délai d'attente peut inclure un composant fractionnaire si la granularité infime est insuffisante, par exemple 2,5. La valeur par défaut est 5. Définissez cette valeur sur 0 pour toujours demander un mot de passe. S'il est défini sur une valeur inférieure à 0, l'horodatage de l'utilisateur n'expirera jamais. Cela peut être utilisé pour permettre aux utilisateurs de créer ou de supprimer leurs propres horodatages via "sudo -v" et "sudo -k" respectivement.

Par exemple, pour définir le délai d'expiration de l'utilisateur chrissur 20 minutes, ajoutez ce qui suit à /etc/sudoersou dans un fichier dans /etc/sudoers.d(remarque: à la fois l'ordre des règles dans ces fichiers et l'ordre de ces fichiers sont importants, assurez-vous qu'il n'est pas involontairement remplacé par une règle qui est exécutée plus tard):

Defaults:chris timestamp_timeout=20
Chris Down
la source