93 votes

Comment éviter d'être invité à entrer un mot de passe par sudo ?

Je sais que je peux devenir root (super utilisateur) par le biais de la fonction su mais je dois l'autoriser après avoir entré les commandes. Existe-t-il un moyen de devenir root et de l'autoriser (avec un mot de passe) en une seule ligne ?

96voto

Din Points 1951

Dans le terminal, exécutez la commande visudo pour modifier le sudoers fichier :

sudo visudo

et ajoutez la ligne suivante au liste de sudoers

username ALL = NOPASSWD : ALL

Note : Remplacer nom d'utilisateur avec votre vrai Nom d'utilisateur dans la ligne ci-dessus.

94voto

Stewart Points 1385

Et bien, la seule chose à laquelle je pense est

echo 'password' | sudo -S command

El -S le drapeau fait sudo lire le mot de passe à partir de l'entrée standard. Comme expliqué dans man sudo :

-S, --stdin

Écrire l'invite dans l'erreur standard et lire le mot de passe à partir de l'entrée standard au lieu d'utiliser le terminal. Le mot de passe doit être suivi d'un caractère de nouvelle ligne.

Donc, pour exécuter ls con sudo les privilèges, vous feriez

echo 'password' | sudo -S ls

Notez que cela produira une erreur si votre sudo Le jeton d'accès est actif, si vous n'avez pas besoin de saisir votre mot de passe parce que vous l'avez déjà fait récemment. Pour contourner ce problème, vous pouvez utiliser -k pour réinitialiser le jeton d'accès :

echo 'password' | sudo -kS ls

Je ne connais pas de moyen de vous faire entrer dans un Shell racine réelle (comme le su ou sudo -i ) font. Cela pourrait suffire à vos besoins.

30voto

Heinzi Points 401

El echo 'password' | sudo -kS ls fonctionne, mais elle présente quelques inconvénients en matière de sécurité, dont la plupart ont déjà été mentionnés dans les commentaires de la réponse de terdon. Ainsi, je voudrais suggérer une approche différente :

S'il s'agit d'une seule commande que vous devez fréquemment exécuter, par exemple apt-get upgrade vous pouvez configurer votre système de telle sorte que sudo someCommand fait nicht nécessitent un mot de passe.

Pour ce faire, exécutez visudo et entrez quelque chose de similaire à ce qui suit :

myusername ALL=(ALL) NOPASSWD: /usr/bin/apt-get upgrade

Notez que si vous entrez une commande sans un argument (par exemple sans upgrade dans cet exemple), l'utilisateur sera autorisé à l'exécuter avec cualquier l'argument, donc à utiliser avec précaution.

17voto

Jahid Points 337

Vous pouvez aussi le faire :

sudo -S <<< "password" command

10voto

Shital Shah Points 588

Au lieu de supprimer complètement le mot de passe, vous pouvez augmenter le délai d'attente afin de ne devoir le taper que quelques fois par jour ; dans un terminal, exécutez :

sudo visudo

À la fin du fichier, ajoutez la ligne suivante pour définir un délai d'attente de 30 minutes (remplacez jsmith avec votre nom d'utilisateur).

Defaults:jsmith timestamp_timeout=30

Vous pouvez utiliser le numéro que vous voulez ; -1 signifie qu'il n'y a pas de délai d'attente (déclenché seulement la première fois), et 0 signifie un délai d'attente instantané (déclenché à chaque fois que vous sudo ). Le délai d'attente par défaut est de 5 minutes.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X