web-dev-qa-db-fra.com

Comment puis-je forcer Sudo à toujours demander un mot de passe après la sortie de suspension?

Disons que j'exécute une commande avec Sudo, puis si j'utilise Sudo dans les prochains 15/5 minutes (je ne suis pas sûr de savoir combien de temps il se souvient de moi), il ne le fera pas moi pour un mot de passe. Cela ne m'invitera à nouveau que si je ne l'ai pas utilisé pendant au moins aussi longtemps.

Cependant, si je suspends ma machine, la réveille et que je me connecte avant la fin de cette période, je peux simplement exécuter à nouveau une commande Sudo et elle ne me demandera pas mon mot de passe car je ne l'ai pas laissé être pour la certaine quantité de temps.

Alors, comment puis-je faire en sorte que peu importe le temps que je n'ai pas utilisé Sudo, il me demandera certainement un mot de passe après la suspension une fois que je me suis connecté à nouveau, même si je suis toujours dans ce laps de temps où les 15/5 minutes d'utilisation de Sudo n'ont pas encore passé?

La chose la plus probable qui fonctionnera est de le faire exécuter une commande pour supprimer tous les caches d’identité pour Sudo lors de l’exécution d’une certaine commande exécutée au réveil.

J'utilise Ubuntu GNOME 15.10 avec GNOME 3.18.

14
user364819

De man Sudo:

     -K, --remove-timestamp
                 Similar to the -k option, except that it removes the user's
                 cached credentials entirely and may not be used in conjunc‐
                 tion with a command or other option.  This option does not
                 require a password.  Not all security policies support cre‐
                 dential caching.

Vous voulez donc que votre utilisateur exécute Sudo -K chaque fois que le système est suspendu.

Ubuntu 15.04+ (systemd)

Cela peut être fait sur Ubuntu 15.04+ en plaçant un script dans /lib/systemd/system-sleep/.

  1. Exécutez Sudo nano /lib/systemd/system-sleep/disable_Sudo_user (remplacez user par le nom d’utilisateur de votre utilisateur pour plus de commodité);
  2. Collez le script suivant (remplacez user par le nom d'utilisateur de votre utilisateur):
#!/bin/sh
case $1/$2 in
    pre/suspend)
        su user -c 'Sudo -K'
        ;;
esac
  1. Frappé CTRL+OENTER et CTRL+X;

  2. Exécutez Sudo chmod o+x /lib/systemd/system-sleep/disable_Sudo_user;


Pour l'activer également pour l'hibernation/hybride-veille, utilisez plutôt ce script:

#!/bin/sh
case $1 in
    pre)
        su user -c 'Sudo -K'
        ;;
esac

Versions précédentes d'Ubuntu (Upstart)

Cela peut être fait sur les versions précédentes d'Ubuntu en plaçant un script dans /etc/pm/sleep.d/.

  1. Exécutez Sudo nano /etc/pm/sleep.d/disable_Sudo_user (remplacez user par le nom d’utilisateur de votre utilisateur pour plus de commodité);
  2. Collez le script suivant (remplacez user par le nom d'utilisateur de votre utilisateur):
#!/bin/sh
case $1 in
    suspend)
        su user -c 'Sudo -K'
        ;;
esac
  1. Frappé CTRL+OENTER et CTRL+X;

  2. Exécutez Sudo chmod o+x /etc/pm/sleep.d/disable_Sudo_user;


Pour l'activer également en veille prolongée, utilisez plutôt ce script:

#!/bin/sh
case $1 in
    suspend|hybernate)
        su user -c 'Sudo -K'
        ;;
esac
18
kos

niquement si vous êtes aussi paranoïaque! Vous pouvez utiliser l'option -K de Sudo.

-K, --reset-timestamp
       When used without a command, invalidates the user's cached credentials.  
       In other words, the next time Sudo is run a password will be required.  
       This option does not require a password and was added to allow a user to revoke
       Sudo permissions from a .logout file.

       When used in conjunction with a command or an option that may require a 
       password, this option will cause Sudo to ignore the user's cached credentials.  
       As a result, Sudo will Prompt for a password (if one is required by the 
       security policy) and will not update the user's cached credentials.

       Not all security policies support credential caching.

par exemple,

Sudo -K <command>

Ou vous pouvez simplement laisser votre ordinateur dans une boîte en métal gardée par des robots:)

3
Edward Torvalds

Encore une autre méthode

Tapez 'Sudo visudo'

Aller à la ligne qui dit: 'Defaults env_reset'

et changer à:

'Valeurs par défaut env_reset, timestamp_timeout = 0

Puis enregistrez le fichier.

En réglant le délai d'attente sur 0, le système vous demandera le mot de passe à chaque fois.

1
Edgar Naser