Comment puis-je augmenter le délai de mémorisation du mot de passe sudo?

61

Je sais déjà que je dois ajuster le fichier / etc / sudoers, mais j'aimerais voir des informations complètes ainsi qu'une solution qui ne nécessiterait pas mon utilisation de l' viéditeur.

Mise à jour: n'essayez jamais, jamais, de modifier le fichier avec autre chose visudo.

sorin
la source
1
vous pouvez définir la variable EDITOR env tout en utilisant également visudo :: sudo env EDITOR = nano visudo
Bonne personne

Réponses:

86

Exécuter sudo visudoet ajouter cette ligne:

Defaults    timestamp_timeout=-1

Voir man 5 sudoers. -1provoque le mot de passe pour ne jamais expirer. Vous pouvez changer le nombre en ce que vous voulez en quelques minutes.

La page de manuel de " sudoindique que sudo -v" prolonge le délai d'attente sudo de 5 minutes supplémentaires ".

L'exécution de 'sudo visudo' au lieu de modifier le fichier directement amène le système à valider le fichier sudoers avant de valider les modifications. Par exemple, si vous laissez un caractère errant quelque part, lorsque vous enregistrez et quittez, le message "il y a une erreur dans le fichier sudoers, que voudriez-vous faire?" ... donc vous donner une chance de revenir et de modifier. En fait, cela m'est arrivé il y a 10 minutes.

lhf
la source
20
Oui, mais visudoexécute quelques contrôles de base sur le fichier sudoers avant de sauvegarder. Si vous gâchez le fichier en l'utilisant vidirectement, vous risquez d'empêcher l'utilisation de sudo, ce qui rend très difficile l'annulation du changement.
nohillside
4
Les privilèges sont comme ça sur d'autres systèmes, donc rien à voir avec Apple. visudoentoure l'éditeur par défaut du système (je devinerais que l'utilisateur root par défaut si la racine a remplacé la valeur par défaut), n'a donc rien à voir avec vi bar le nom. Sur mon système (pas de pomme d'ailleurs), je prends du nano. Essayez export EDITOR='/bin/nano'ou quel que soit l'éditeur que vous préférez, utilisez ensuite visudo.
Chris
4
Euh ... Vous ne pouvez pas utiliser root pour le corriger, parce que vous ne pouvez pas vous y connecter, parce que vous venez de remplir votre fichier sudo ... C'est tout le problème.
daviewales
1
Dans un rôle professionnel, vous pouvez avoir accès à sudo mais ne pas avoir le mot de passe root. Votre serveur peut se trouver dans un centre de données à travers le pays, ce qui rend difficile l'accès au mode mono-utilisateur. Mais, si vous étiez qualifié de professionnel, vous ne pourriez probablement pas recevoir de tels avertissements. Le fait est que vous devriez apprendre des professionnels. Ne cherchez pas à éviter de prendre de bonnes habitudes. Ensuite, nous devons entendre vos cris frénétiques sur Stack Exchange et IRC.
Bruno Bronosky
1
(Peut-être que c'est évident pour tout le monde, mais en ajoutant): timestamp_timeout est en minutes, peut inclure un composant fractionnaire.
utilisateur
3

Soyez vraiment prudent de modifier /etc/sudoersdirectement!

Par exemple, j'ai essayé la suggestion ci-dessus directement:

sudo sh -c 'echo "\nDefaults timestamp_timeout=-1">>/etc/sudoers'

qui a foiré mon /etc/sudoersdossier (sur une machine virtuelle CentOS Virtualbox). Aurait du être:

sudo sh -c 'echo -e "\nDefaults timestamp_timeout=-1">>/etc/sudoers'

Heureusement, j'ai eu accès au compte root, connecté en tant que root, utilisé visudoet réparé le problème! Donc, je suis d'accord avec les commentaires ci-dessus à utiliser à la visudoplace.

utilisateur304227
la source
1

Toutes les informations pour les sudoers se trouvent sur le terminal avec la commande

man sudoers

Vous pouvez même utiliser du texte simple pour éditer des fichiers, mais les privilèges rendent cela difficile. sudoers est-r--r----- (Octal 0440)

Cela indique qu'Apple ne veut vraiment pas que vous jouiez avec le fichier. C'est vraiment la sécurité de base du système d'exploitation.

Les options de modification sont vi, emacs ou mon préféré BBEdit.

Andrei Freeman
la source
5
Il y a une raison pour laquelle ces privilèges sont définis. Ils ont pour but de vous forcer à utiliser visudole fichier plutôt que de le modifier vous-même. En outre, cela n'a rien à voir avec OS X. C'est standard * nix. De plus, si vous souhaitez utiliser un éditeur autre que celui par défaut, définissez simplement la $EDITORvariable d'environnement avant d'appeler visudo. par exemple EDITOR=nano sudo visudo.
daviewales
1

Désactivez sudo timeout avec cette commande:

sudo sh -c 'echo "\nDefaults timestamp_timeout=-1">>/etc/sudoers'

Pour réactiver le délai d'expiration sudo avec cette méthode:

sudo sed -i "/Defaults timestamp_timeout=-1/d" /etc/sudoers
patpat
la source
8
Depuis la page de manuel sudoers: Le fichier sudoers doit toujours être édité par la commande visudo qui le verrouille et effectue une vérification grammaticale. Il est impératif que les utilisateurs sudoers soient exempts d’erreurs de syntaxe car ils ne fonctionneront pas avec un fichier sudoers syntaxiquement incorrect.
Matteo
@ Matteo Eh bien, vous pouvez faire tout ce que vous voulez sur votre propre propriété à condition que vous soyez conscient des conséquences. Dans certaines situations, cela ne pose pas de problème. Par exemple, je l’utilise sur de nouvelles versions de Mac qui ne contiennent pas de données précieuses dans le cadre d’un script d’automatisation. J'ai suggéré une modification de cette réponse pour fournir un avertissement. Idéalement, vous sudodevriez avoir un moyen unique de changer cela sans avoir à éditer un fichier!
Samthebest
1
Attention, ce conseil est dangereux. Utilisez plutôt visudo.
Will Sheppard