Est-il possible d'entrer un mot de passe pour sudo une seule fois et de le configurer pour qu'il ne nécessite pas de mot de passe sur d'autres terminaux?

33

J'entre ma première sudocommande. Je saisis mon mot de passe Pendant un moment, je n'aurai pas à entrer mon mot de passe pour les commandes sudo suivantes.

Maintenant la question. Je suis quelqu'un qui ouvre beaucoup de terminaux. Cela serait très pratique si je n’ai pas besoin de saisir de mots de passe lorsqu’il est utilisé sudodans les terminaux que j’ouvre après mon premier sudo, pendant le temps très court où je n’aurai pas à saisir de mot de passe pour sudo dans le terminal à partir duquel j’ai utilisé sudo la première fois. (Désolé pour la longue phrase!)

C'est possible? Sinon pourquoi? Si oui comment?

daltonfury42
la source
4
Avez-vous pensé que vous ouvriez ainsi la faille de sécurité pour laquelle ce mécanisme existe? La raison pour laquelle vous devez entrer votre mot de passe avec sudo est d'empêcher qu'un attaquant ait accès à une session en votre nom. Si vous le désactivez et que quelqu'un parvient à détourner l'une de vos sessions de terminal (sont-ils tous sur la même console?) Ou parvient d'une autre manière à accéder à une session de connexion à votre nom sans connaître votre mot de passe, ils pourront exécuter n'importe quel programme. commande en tant que root. Ce n'est pas un scénario très probable, mais une chose à considérer.
Pepijn Schmitz

Réponses:

52

Bien sûr que ça l'est. Exécuter sudo visudoet ajouter cette ligne à votre sudoersfichier:

Defaults        !tty_tickets

Comme expliqué dans man sudoers:

 tty_tickets       If set, users must authenticate on a per-tty basis.
                   With this flag enabled, sudo will use a separate record
                   in the time stamp file for each tty.  If disabled, a
                   single record is used for all login sessions.  This
                   flag is on by default.

En tty_ticketsdésactivant cette !option, vous activez le partage d’une authentification unique par plusieurs sessions.

terdon
la source
1
La seule chose que je fais différemment ici quand je conseille aux utilisateurs est d’utiliser un fichier sudoers.d à la place. De cette façon, s’ils ont quelque chose à foirer, il suffit de supprimer ce fichier. Ex. sudo visudo -f /etc/sudoers.d/01_file
Doug
Que se passe-t-il lorsque le délai d'expiration sudo se termine? ou courir quelque chose comme sudo -k?
Maythux
@ Maythux, vous devez le saisir à nouveau. Cela permet simplement une identification unique pour toutes les sessions du shell. Rien d'autre.
Terdon
@ user3073656 ah, cool, ça a plus de sens :). Oui, s'il vous plaît, je vais supprimer le mien.
terdon
Je dois noter que si j'utilise cette méthode, le mot de passe n'expirera qu'au bout d'un délai de 15 minutes, même si je redémarre, ce qui pose un problème de sécurité. Alors peut-être ajouter sudo -kà /etc/rc6.d?
daltonfury42