web-dev-qa-db-fra.com

Exécuter Sudo sans mot de passe?

Inspiré par ceci question ....

Je suis la seule personne à utiliser mon système avec 12.04.
Chaque fois que j'émets une commande Sudo; le système demande le mot de passe de l'utilisateur (qui est correct à sa manière).
Cependant je pensais; sans activer le compte root ; comment puis-je exécuter les commandes Sudo qui ne demanderont pas le mot de passe de l'utilisateur pour s'authentifier.

REMARQUE: Je souhaite exécuter la commande Sudo sans authentification via un mot de passe. seulement quand ils sont exécutés via un terminal.
Je ne souhaite pas supprimer cette couche de sécurité supplémentaire d'autres fonctions, telles que l'utilisation du 'centre logiciel Ubuntu' ou l'exécution d'un script bash en faisant glisser un fichier quelque chose.sh sur le terminal.

275
Bhavesh Diwan

Sudo -i est la voie à suivre si vous ne souhaitez pas saisir un mot de passe toutes les 10 minutes lorsque vous apportez des modifications à votre système (ou à un autre système) et si vous ne souhaitez modifier aucun fichier système.

Il vous fera basculer vers la racine en utilisant votre mot de passe utilisateur Sudo, lorsque vous fermez la console ou tapez exit vous revenez à votre utilisateur normal.

80
Bruno Pereira

Pour résoudre votre problème, l’approche consiste à placer votre utilisateur dans le fichier sudoers, comme vous pouvez le voir.

Ouvrez la fenêtre du terminal et tapez:

Sudo visudo

Au bas du fichier, tapez ce qui suit:

$USER ALL=(ALL) NOPASSWD: ALL

$USER est votre nom d'utilisateur dans votre système. Enregistrez et fermez le fichier sudoers (si vous n'avez pas modifié votre éditeur de terminal par défaut (vous le saurez), appuyez sur ctl + x pour quitter nano(mais notez que la capture d'écran ci-dessous montre vimname__), et vous verrez le message sauver).

sudoers file]

Ensuite, vous pouvez, dans la fenêtre du terminal, taper Sudo <Whatever you want> sans être invité à entrer le mot de passe.

Ceci s’applique uniquement à la commande Sudodans la fenêtre du terminal. Par exemple, lorsque vous essayez d'installer un package dans le centre logiciel, il vous sera demandé d'insérer votre mot de passe, comme vous pouvez le voir dans la capture d'écran suivante.

gui password Prompt

Je pense que c'est ce que tu veux.

Les délais d’exécution Root Sudo sont le moyen le plus simple et le plus sûr de le faire. Je vais exposer tous les exemples, mais sachez que cette façon de procéder est très risquée, bien que cette façon soit beaucoup plus sûre:

Sudo visudo

Cela ouvre un éditeur et le pointe vers le fichier sudoers - Ubuntu utilise par défaut nano, d’autres systèmes utilisent Vi. Vous êtes maintenant un super utilisateur qui édite l'un des fichiers les plus importants de votre système. Pas de stress!

(Instructions spécifiques de Vi notées avec (vi!). Ignorez-les si vous utilisez nano.)

Utilisez les touches fléchées pour vous déplacer à la fin de la ligne Defaultsname__.

(vi!) Appuyez sur la touche A (majuscule "a") pour vous déplacer à la fin de la ligne en cours et passer en mode d'édition (ajouter après le dernier caractère de la ligne).

Maintenant tapez:

,timestamp_timeout=X

où X est l'expiration du délai d'attente en minutes. 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'attente n'expirera jamais. E.g. Defaults env_reset,timestamp_timeout=5.

(vi!) appuyez sur Echap pour revenir au mode commande. Maintenant, si vous êtes satisfait de votre modification, saisissez :w Enter écrire le fichier et :q Enter pour sortir vi. Si vous faites une erreur, le moyen le plus simple est peut-être de recommencer depuis le début, de quitter sans enregistrer (touche Escape pour entrer en mode commande) puis tapez: q! Enter.

Frappé Ctrl+X, puis Y, puis Enter pour enregistrer votre fichier et quitter nano.

Vous voudrez peut-être lire les pages de manuel de sudoers et vi pour des informations supplémentaires.

man sudoers
man vi

Réinitialiser la valeur de délai en utilisant:

Sudo -k

Ces instructions permettent de supprimer l'invite de mot de passe lors de l'utilisation de la commande Sudo. La commande Sudo devra néanmoins toujours être utilisée pour l'accès root.

Editer le fichier sudoers

Ouvrez une fenêtre de terminal. Tapez Sudo visudo. Ajoutez la ligne suivante à la fin du fichier (sinon, elle peut être annulée par des entrées ultérieures):

<username> ALL=NOPASSWD: ALL

Remplacez <username> par votre nom d'utilisateur (sans le <>). Cela suppose qu'Ubuntu a créé un groupe portant le même nom que votre nom d'utilisateur, ce qui est typique. Vous pouvez également utiliser les utilisateurs du groupe ou tout autre groupe de ce type. Assurez-vous simplement que vous faites partie de ce groupe. Cela peut être vérifié en allant dans Système -> Administration -> Utilisateurs et groupes.

Exemple:

michael ALL=NOPASSWD: ALL

Tapez ^ X (Ctrl+X) pour quitter. Cela devrait demander une option pour enregistrer le fichier, tapez Y pour enregistrer.

Déconnectez-vous, puis reconnectez-vous. Cela devrait maintenant vous permettre d'exécuter la commande Sudo sans être invité à entrer un mot de passe.

Le compte root

Activer le compte root

L'activation du compte root est rarement nécessaire. Presque tout ce que vous devez faire en tant qu'administrateur d'un système Ubuntu peut être fait via Sudo ou gksudo. Si vous avez réellement besoin d'un identifiant root persistant, la meilleure solution consiste à simuler un shell de login root à l'aide de la commande suivante:

Sudo -i

Cependant, si vous devez activer les connexions à la racine, vous pouvez le faire comme suit:

Sudo passwd root

Réactiver votre compte root

Si, pour une raison quelconque, vous avez activé votre compte root et souhaitez le désactiver à nouveau, utilisez la commande suivante dans le terminal:

Sudo passwd -dl root

Groupe Sudo

root$ echo "%Sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

Déconnectez-vous, puis revenez dans.

Réinitialiser le délai d'attente Sudo

Vous pouvez vous assurer que Sudo demandera le mot de passe la prochaine fois en exécutant:

Sudo -k
35
user209328

La méthode préférée pour accorder des autorisations individuelles (ou de groupe) consiste à ajouter des fichiers sous /etc/sudoers.d

Cela sépare les modifications locales de la stratégie par défaut et permet de gagner du temps au cas où le fichier de distribution sudoers serait modifié.

Par exemple:

Sudo echo "username ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/username

Indiquera très clairement quels utilisateurs obtiennent la permission.

De même, un fichier peut être utilisé pour gérer plusieurs directives:

Sudo echo "username ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers.d/local

Veuillez consulter /etc/sudoers.d/README pour plus d'informations.

16
user1656671

Un one-liner pour supprimer les invites Sudo pour l'utilisateur actuel

Sudo bash -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo)'
6
Eric Landry

Bien sûr, ce que vous voulez faire n'est pas recommandé. Au bout d'un moment, entrer Sudo devient tellement automatique que son utilité diminue.

Une autre approche consiste à laisser votre fichier sudoers tel quel et, tout en effectuant une opération compliquée pour vos cent mille serveurs, entrez Sudo bash. Cela vous donnera un Shell qui sera authentifié en tant que root jusqu'à ce que vous le quittiez.

4
John S Gruber

De super utilisateur vient une bonne réponse:

Utilisez le commutateur -S qui lit le mot de passe de STDIN:

echo <password> | Sudo -S <command>

Remplacez <password> par votre mot de passe.

2
WinEunuuchs2Unix

Il s’agit d’une solution d’une ligne qui modifie également les autorisations de fichiers comme indiqué dans /etc/sudoer.d/README:

Sudo sh -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$(logname)' & Sudo chmod 440 $(logname)
1
user2442

Bon mot

Sudo sed -i /etc/sudoers -re 's/^%Sudo.*/%Sudo ALL=(ALL:ALL) NOPASSWD: ALL/g'

0
upteryx