À quelle fréquence le mot de passe est-il demandé pour les commandes sudo? Où puis-je le configurer?

24

J'exécute pas mal de sudocommandes.

J'ai remarqué que si j'exécute un puis un autre en quelques minutes, la 2ème fois je ne reçois pas le message:

[sudo] mot de passe pour my_username:

mais je l'obtiens quand il y a plus de temps entre l'exécution des deux commandes.

Quelle est la période de temps pendant laquelle le message n'apparaît pas? Comment pouvons-nous le vérifier / le mettre à jour?

fedorqui
la source
1
sudo visudo, alors la ligne% sudo devrait être% sudo ALL = (ALL: ALL) NOPASSWD: ALL, il ne vous demandera aucun mot de passe lorsque vous tapez sudo any-stuff
Qasim
3
Ceci (NOPASSWD: ALL) est une suggestion très dangereuse. Cela rendra votre installation non sécurisée.
Sri

Réponses:

31

Le délai d'expiration par défaut sudoest de 15 minutes; c'est-à-dire, sudose souviendra de votre mot de passe pendant 15 minutes par défaut.

Vous pouvez modifier ce délai par défaut en ajoutant une chaîne dans le fichier /etc/sudoers. Cependant, vous ne modifiez pas le fichier directement, mais vous utilisez plutôt la commande sudo visudo.

Alors, tapez sudo visudoun terminal. Cela ouvrira le fichier (en fait, temporaire) que nous pourrons éditer, en utilisant votre éditeur préféré.

Remarque: si vous utilisez visudopour la première fois, il vous sera demandé quel éditeur vous souhaitez utiliser, alors choisissez votre éditeur. Il n'y a pas de "meilleur" éditeur, mais je préfère nano. Si vous avez déjà utilisé visudoet choisi un éditeur auparavant, mais que vous souhaitez utiliser un autre éditeur pour le moment, vous pouvez le faire sudo EDITOR=vi visudopour l'utiliser viou le changer nanopour l'utiliser nano. Si vous souhaitez modifier définitivement votre éditeur préféré, faites-le sudo update-alternatives --config editor.

Recherchez cette ligne:

Defaults    env_reset

Et ajoutez (avec une virgule) à la fin de celui-ci, où X est le temps que vous souhaitez définir en minutes.timestamp_timeout=X

Ainsi, votre ligne devrait ressembler à ceci, à titre d'exemple:

Defaults    env_reset,timestamp_timeout=5

Si vous spécifiez 0, le mot de passe vous sera toujours demandé. Si vous spécifiez une valeur négative, le délai d'expiration n'expirera jamais.

Une fois terminé, enregistrez et quittez.

Source: RootSudoTimeout

Alaa Ali
la source
Merci, @Alaa, c'est une bonne et utile réponse. Juste comme note latérale, la Ctrl + xpartie n'est pas toujours assortie comme l'éditeur peut être par exemple vi(dans mon cas).
fedorqui
Au fait, j'ai fait une grosse erreur en ajoutant une nouvelle ligne avec seulement Default timestamp-0au lieu de celle avec env_reset. Il a cassé mon fichier sudoers. J'ai dû utiliser askubuntu.com/a/73872/143251 pour le résoudre!
fedorqui
@fedorqui: C'est exactement pourquoi vous devriez utiliser visudo (comme le recommande Alaa) au lieu de modifier directement le fichier. Le premier vérifiera la syntaxe du fichier pour vous, vous empêchant de vous verrouiller hors de sudo.
Plutor
Oui, oui, c'est ce que j'ai fait @Plutor. Mais vic'est l'éditeur que j'ai défini visudo. Le problème est que j'ai enregistré le fichier bien que j'ai reçu un message d'avertissement lors de sa fermeture. Ma faute, évidemment.
fedorqui
1
@fedorqui, oui, je voulais en quelque sorte supprimer cette partie parce que n'importe qui pourrait utiliser un éditeur différent. J'ai modifié ma réponse pour ne pas être spécifique à l'éditeur.
Alaa Ali
3

Voir cet article ici: http://ubuntuforums.org/showthread.php?p=116697#post116697

Modifier le /etc/sudoersfichier, utilisez la sudo visudocommande pour plus de sécurité. Ajoutez timestamp_timeout=0à la ligne commençant Defaultsà demander à chaque fois, ou X positif pour un retard de X minutes.

Tuminoïde
la source
1
Je dois m'inscrire sur le forum pour le voir. En attendant, pourriez-vous indiquer quel fichier dois-je modifier avec une timestamp_timeout=0ligne?
fedorqui
OK, réponse fixe.
Tuminoïde
Ça a fait l'affaire! J'accepterai l'autre réponse car elle a une explication plus complète et inclut la env_resetréférence, qui est importante. Quoi qu'il en soit, votre réponse a également été très utile, alors merci!
fedorqui
0

Je ne sais pas si cela expire ou non, mais vous pouvez essayer

sudo su

Il vous demandera le mot de passe et ensuite toutes les commandes seront exécutées en tant que sudo.

Mihai
la source
1
Oui, @ Rat2000, mais je veux continuer à utiliser mon utilisateur et non root. Je pense que c'est plus sûr. Quoi qu'il en soit, merci pour les conseils.
fedorqui
3
sudo su vous fait devenir root. Votre invite devrait alors être root @ yourpc. Gardez à l'esprit que root a son propre .bashrc, donc vos alias ne fonctionneront pas. N'oubliez pas que la racine peut endommager gravement le système, alors faites attention!
speter