Pourquoi sudo demande-t-il un mot de passe dans la fenêtre après que je viens de m'authentifier dans un autre?

10

Si j'utilise la ligne de commande dans xterm, gnome-terminal, etc., je peux éviter sudode demander à nouveau un mot de passe, dans certaines limites, ou je peux le désactiver.

En tant que compromis entre la convivialité et la sécurité, je souhaite généralement allonger ce temps d'attente de nouvelle interrogation.

Par défaut, il n'y a qu'un délai de grâce de 15 minutes après avoir entré un mot de passe sudo avant qu'il ne le demande à nouveau. Pour changer cela à 45 minutes, je peux modifier /etc/sudoerset définir timestamp_timeout sur la période d'attente que je veux (en minutes).

fichier sudoers

Si je suis dans la même session de terminal et que je démarre un nouveau shell (en tapant cshou bash) la période d'attente est respectée.

Mais si je vais dans une autre fenêtre pour y accéder, il me demandera immédiatement mon mot de passe si j'essaye sudo.

Au sein de la même session pseudoterminale ( pts) (par exemple, si je crée un nouveau shell à l'intérieur de la même fenêtre gnome-terminal), le délai est respecté.

Si je lance un nouveau xterm, gnome-terminal, etc., je dois saisir à nouveau les informations d'identification.

Bien qu'il soit le seul utilisateur actif sur mon système domestique (un système mono-utilisateur), etc., sudo ne fait pas confiance à ce que toutes mes ptsentrées proviennent du même utilisateur:

~/pseudoland$ w
 01:27:39 up 1 day, 15:03,  7 users,  load average: 0.32, 0.71, 0.77
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
jgb    tty1                      23:56    1:30m  0.55s  0.51s -bash
jgb    tty7     :0               Tue10   39:03m  2:28m  0.76s gnome-session
root     pts/1    :0.0             00:30   56:23   0.01s  0.01s /bin/bash
jgb    pts/3    :0.0             01:16    0.00s  0.59s  3.22s gnome-terminal
jgb    pts/4    :0.0             01:27   26.00s  0.23s  0.23s /bin/bash
jgb    pts/5    :0.0             01:17    9:26   0.23s  0.23s bash

Existe-t-il un moyen de dire à sudo qu'il doit considérer toutes les fenêtres que j'ouvre comme provenant du même utilisateur et ne pas demander à nouveau mon mot de passe si le dernier temporisateur sudo n'a pas expiré?

belacqua
la source

Réponses:

12

Le délai de grâce est contrôlé par ce qu'on sudoappelle un «ticket». Lorsque vous vous authentifiez avec sudo, il crée ce ticket avec un certain horodatage qui indique essentiellement quand l'authentification doit expirer.

Par défaut (défini lors de la compilation du package), ce délai est, comme vous l'avez constaté, par tty . C'est une fonctionnalité de sudo appelée 'tty_tickets'. Fondamentalement, cela signifie qu'au lieu de créer un verrou par utilisateur, sudo crée plutôt un verrou par terminal.

Pour revenir à l'ancien comportement et remplacer la valeur par défaut, vous devez modifier /etc/sudoers. Recherchez la Defaultsligne " ", que vous avez déjà modifiée pour modifier le délai d'expiration, et ajoutez ,!tty_tickets-la. Cela désactivera la fonctionnalité tty_tickets et vous donnera le comportement que vous souhaitez.

Iain Lane
la source