Exécuter sudo sans mot de passe?

215

Inspiré de cette question ...

Je suis le seul à utiliser mon système avec 12.04.
Chaque fois que j'émets une commande sudo ; le système demande le mot de passe utilisateur (ce qui est bien à sa manière).
Cependant je pensais; sans activer le compte root ; Comment puis-je exécuter les commandes sudo qui ne demanderont pas d'authentification du mot de passe utilisateur?

REMARQUE: Je veux exécuter la commande sudo sans authentification par mot de passe; uniquement quand ils sont exécutés via le terminal.
Je ne veux pas supprimer cette couche de sécurité supplémentaire des autres fonctions en utilisant 'Ubuntu software center' ou en exécutant un script bash en glissant-déposant le fichier something.sh sur le terminal.

    
posée Z9iT 06.06.2012 - 14:30
la source

7 réponses

60

sudo -i est la voie à suivre si vous ne voulez pas taper un mot de passe toutes les 10 minutes lorsque vous apportez des modifications à votre système (ou à d'autres systèmes) et que vous ne souhaitez modifier aucun fichier système.

Vous basculez en root en utilisant votre mot de passe utilisateur sudo , lorsque vous fermez la console ou que vous tapez exit , vous êtes de retour chez votre utilisateur normal.

    
réponse donnée Bruno Pereira 06.06.2012 - 15:36
la source
428

L'approche pour résoudre votre problème consiste à placer votre utilisateur dans le fichier sudoers, comme vous pouvez le voir.

Ouvrez la fenêtre du terminal et tapez:

sudo visudo

Dans le 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 saurez si vous en avez), appuyez sur ctl + x pour quitter nano (mais notez que la capture d'écran ci-dessous indique vim ). Je vous invite à enregistrer).

]

Après cela, vous pouvez, dans la fenêtre du terminal, taper sudo <Whatever you want> , sans être invité à entrer le mot de passe.

Cela s'applique uniquement à la commande sudo dans la fenêtre du terminal. Par exemple, lorsque vous essayez d'installer un package dans Software Center, vous serez invité à insérer votre mot de passe, comme vous pouvez le voir dans la capture d'écran suivante.

Je pense que c'est ce que vous voulez.

    
réponse donnée Octávio Filipe Gonçalves 06.06.2012 - 15:20
la source
29

Les délais d'expiration sudo racine sont le moyen le plus simple et le plus sûr d'y parvenir. Je vais exposer tous les exemples, mais il faut savoir que c'est très risqué, même si cela est beaucoup plus sûr:

sudo visudo

Cela ouvre un éditeur et le pointe vers le fichier sudoers - Ubuntu par défaut à nano, les 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 à Vi notées avec (vi!) . Ignorez-les si vous utilisez nano.)

Utilisez les touches fléchées pour aller à la fin de la ligne Defaults .

(vi!) appuyez sur la touche A (majuscule "a) pour vous déplacer à la fin de la ligne en cours et passer en mode édition (ajout 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'expiration n'expirera jamais. Defaults env_reset,timestamp_timeout=5 .

(vi!) appuyez sur Echap pour revenir au mode de commande. Maintenant, si vous êtes satisfait de votre modification, tapez :w Entrez pour écrire le fichier et :q Entrez pour quitter vi. Si vous avez commis une erreur, le plus simple est peut-être de recommencer depuis le début, de quitter sans enregistrer (appuyez sur Escape pour accéder au mode commande), puis tapez: q! Entrez .

Cliquez sur Ctrl + X , puis sur Y , puis sur Entrez pour enregistrer votre fichier et quitter nano.

Vous pouvez lire les pages de manuel et les sudoers vi pour plus d'informations.

man sudoers
man vi

Réinitialiser la valeur du délai d'attente à l'aide de:

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 quand même être utilisée pour l'accès root.

Modifier le fichier sudoers

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

<username> ALL=NOPASSWD: ALL

Remplacez <username> par votre nom d'utilisateur (sans le <> ). Cela suppose que Ubuntu a créé un groupe avec 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 de vous trouver dans ce groupe. Cela peut être vérifié en allant dans System - & gt; Administration - & gt; 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

Activation du 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 vraiment besoin d'un login root persistant, la meilleure solution consiste à simuler un shell de connexion root à l'aide de la commande suivante:

sudo -i

Cependant, si vous devez activer les connexions root, vous pouvez le faire comme ceci:

sudo passwd root

Désactivation de 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 de groupe

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

Déconnectez-vous, puis réinstallez.

Réinitialiser le délai d'expiration de sudo

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

sudo -k
    
réponse donnée user209328 30.10.2013 - 02:15
la source
9

La méthode privilégié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 fait gagner du temps en cas de modification du fichier de distribution sudoers.

Par exemple:

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

Rendra très clair les utilisateurs autorisés.

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

Consultez /etc/sudoers.d/README pour plus d'informations.

    
réponse donnée user1656671 01.02.2017 - 16:54
la source
5

Nice 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)'
    
réponse donnée Eric Landry 27.06.2016 - 19:50
la source
4

Bien sûr, ce que vous voulez faire n’est pas recommandé. Après un certain temps, si entrer sudo devient si automatique que son utilité diminue.

Une autre approche consiste à laisser votre fichier sudoers tel quel et, tout en faisant quelque chose de compliqué pour vos centaines de serveurs, entrez sudo bash . Cela vous donnera un shell qui sera authentifié en tant que root jusqu'à ce que vous le quittiez.

    
réponse donnée John S Gruber 06.06.2012 - 15:27
la source
0

De Super utilisateur est 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.

    
réponse donnée WinEunuuchs2Unix 17.05.2018 - 02:12
la source

Lire d'autres questions sur les étiquettes