Question Exécuter sudo sans mot de passe?


Inspiré par cela question....

Je suis la seule personne utilisant mon système avec 12.04.
Chaque fois que je délivre un sudo commander; le système demande le mot de passe utilisateur (ce qui est bien à sa manière).
Cependant je pensais; sans activer le racine Compte; 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; seulement 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.


220
2018-06-06 12:30


origine


donc vous voulez seulement être demandé pour le mot de passe dans le terminal et pour d'autres choses non, ou l'inverse?! dans les deux sens, je pense que c'est une violation de la sécurité élevée - Dr_Bunsen
Je veux que ce système ne demande pas de mot de passe uniquement lorsque dans le terminal ... pour toute autre raison, le système doit demander un mot de passe. Cette exigence n'est que temporaire, et pour être utilisée lors de la configuration de l'installation de nouveaux serveurs .. pendant les nouvelles installations du serveur, il faut vraiment des heures de configuration avec les commandes sudo. est un mal de tête. Je ne veux pas utiliser le compte root. - Z9iT
Vous devez lire la discussion en: askubuntu.com/questions/135428/… - david6
Bien sûr, vous pouvez prolonger le délai d'attente. En outre, si vous effectuez fréquemment de nouvelles configurations de serveur, vous devez envisager d’automatiser le processus. Vous n'êtes pas payé pour taper, vous êtes payé pour résoudre des problèmes et pour être fait. - MauganRa
En relation: Comment exécuter la commande sudo sans mot de passe? - Eliah Kagan


Réponses:


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.

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


63
2018-06-06 13:36



Sera-ce vrai que j'entre le mot de passe une seule fois ... et jusqu'à ce que je ne sors pas; temps 5 heures ou 15 .... le système ne demandera pas d'authentification par mot de passe lorsqu'une commande sudo est émise. - Z9iT
@ Z9iT jusqu'à ce que vous tapez exit ou jusqu'à ce que vous fermiez la fenêtre de l'émulateur de terminal. - Bruno Pereira
Merci .. Accepté cette réponse car il sert à émettre des commandes sudo sans authentification par mot de passe pendant n-heure jusqu'au moment où nous ne quitterons pas .. Ne pas modifier les fichiers système est un plus. - Z9iT
Cela ne répond pas vraiment à la question, car vous devez toujours entrer le mot de passe pour devenir root à ce stade. - Adam F
Pas si vous utilisez une machine virtuelle dans un environnement sécurisé et que vous voulez simplement que la chose fasse quelque chose immédiatement et que vous ne voulez pas traiter les mots de passe. Cette réponse ne répond pas à la question, alors que c'est sans doute une information utile. Je suis d'accord avec Adam F - Jonathan Komar


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

En 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 montre vim), et il vous invite à enregistrer).

sudoers file]

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

Cela ne s'applique qu'à sudo commande dans la fenêtre du terminal. Par exemple, lorsque vous essayez d'installer un package dans le centre du logiciel, vous serez invité à 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 vous voulez.


438
2018-06-06 13:20



Il est recommandé d'utiliser sudo visudo au lieu de le modifier directement. Changer les permissions des sudoers peut aussi vous bloquer. Lors de l'édition avec vim, utilisation :wq! pour écrire dans des fichiers en lecture seule et quitter l'éditeur. De cette façon, les autorisations 644 ne sont pas nécessaires. - Lekensteyn
Il s'agit d'un risque de sécurité grave, toute personne prenant en charge un compte avec les droits sudo peut prendre le contrôle de l'ensemble du système et verrouiller tout accès ultérieur à cet ordinateur, sérieusement non recommandé. - Bruno Pereira
@ wil93 vous manquez le point: un script qui appelle à sudo install crapware ne demandera pas un mot de passe dans ce cas et pourrait gâcher tout ce que vous avez, et vous n'avez pas besoin d'être physiquement à côté d'une machine pour distribuer les scripts la dernière fois que j'ai vérifié ... Ceci est juste un exemple. - Bruno Pereira
@BrunoPereira Si vous prévoyez d'exécuter des scripts non fiables, alors cette est le risque de sécurité (même si sudo demande un mot de passe, un script malveillant pourrait toujours faire rm -rf ~déconner pas mal de choses). Dans l'ensemble, je n'appellerais pas «risque de sécurité grave» la simple suppression de l'invite de mot de passe de sudo. - wil93
D'accord avec @ wil93. Lors de l'exécution d'un script non fiable, la saisie du mot de passe n'est qu'une chance d'annuler le processus, alors que je doute que cela soit inutile pour la plupart des gens. Le point est que vous savez d'où le script et ce qu'il fait. - Chad


Les délais d'expiration de sudo racine sont le moyen le plus simple et le plus sûr d'y parvenir. Je vais exposer tous les exemples, mais sachez 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 du Defaults ligne.

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

(vi!) appuyez sur Echap pour revenir au mode de commande. Maintenant, si vous êtes satisfait de votre édition, tapez :w  Entrer pour écrire le fichier et :q  Entrer sortir vi. Si vous avez commis une erreur, le moyen le plus simple est peut-être de recommencer depuis le début pour quitter sans enregistrer (appuyez sur Échapper pour entrer dans le mode de commande), puis tapez: q! Entrer.

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

Vous pourriez vouloir lire les sudoers et les pages de manuel 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 un accès root.

Modifier le fichier sudoers

Ouvrez une fenêtre de terminal. Tapez sudo visudo. Ajoutez la ligne suivante à la fin du fichier (si ce n'est pas à la fin, il peut être annulé par des entrées ultérieures):

<username> ALL=NOPASSWD: ALL

Remplacer <username> avec 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 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

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 doit activer les connexions root, vous pouvez le faire comme ceci:

sudo passwd root

Désactiver 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 à l'échelle du système sudo

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

Déconnectez-vous, puis de nouveau

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

30
2017-10-30 01:15



J'ai posté ceci avant que j'ajoute, pour une manière générale de faire ceci et d'autres lisent ici: - user209328
C'était une réponse tardive, mais c'est la plus complète en termes d'options. - jenming


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 permet de 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

Sera très clair quels utilisateurs sont 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

S'il te plait regarde /etc/sudoers.d/README  pour plus d'informations.


10
2018-02-01 15:54



la commande echo a échoué, même si je suis root. mais, j'ai ajouté le fichier et l'ai édité directement et cela a fonctionné sur le dernier ubuntu (alors que l'ajout de l'utilisateur aux sudoers directement ne l'a pas fait!) - scape
La bonne façon est de le faire avec tee commander. - woto


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)'

5
2018-06-27 17:50



Je pense que vous pourriez juste faire: echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo env EDITOR="tee -a" visudo, seulement visudo Besoins sudo après tout (et même env ne sera pas nécessaire dans la configuration par défaut, IIRC). - muru
Il y a tellement de choses qui pourraient mal tourner ici (toutes les erreurs utilisateur, bien sûr), qu'il est préférable, à mon humble avis, d'éditer directement le fichier sudoer (sudo visudo), tout en testant le résultat (avec l'éditeur toujours ouvert), pour les nouveaux utilisateurs qui pourraient être tentés d'essayer ce "one-liner". - michael
Merci pour les commentaires! J'essayais simplement de script-ify la suppression de l'invite de mot de passe de sudo dans mes machines virtuelles de test volatiles. N'hésitez pas à suggérer des améliorations :) - Eric Landry


Bien sûr, ce que vous voulez faire n'est pas recommandé. Après un certain temps, en entrant sudo devient tellement 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.


4
2018-06-06 13:27



sudo -s ou sudo -i sont probablement les deux meilleures idées que sudo bash, car ils assurent l’environnement et les choses. - Darael
"sane and things" n'est pas généralement dans le domaine des "meilleures idées", est-ce que quelqu'un pourrait expliquer pourquoi sudo -s ou sudo -i est meilleur que sudo bash? (Edit: Voici une question pertinente askubuntu.com/questions/376199/… ) - Nuzzolilo
un nombre de sudo commandes (pensant surtout à sudo pip ...) exiger sudo -H (définissez HOME) pour que la commande s'exécute correctement. Dans d'autres cas, sudo -E (préserver env) peut être requis. Fonctionnement sudo bash cela fonctionnera probablement dans la plupart des cas, mais pas dans tous, et quand ce ne sera pas le cas, il ne sera pas clair pourquoi. - michael
sudo su est la manière traditionnelle de changer de rôle et de commencer à agir comme administrateur système. - user1656671


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>

Remplacer <password> avec votre mot de passe


1
2018-05-17 00:12