Inspiré par cette question ....
Je suis la seule personne à utiliser mon système avec 12.04.
Chaque fois que je lance une sudo
commande; 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.
la source
Réponses:
sudo -i
est le chemin à suivre si vous ne voulez pas saisir un mot de passe toutes les 10 minutes tout en apportant des modifications à votre système (ou à d’autres systèmes) et que vous ne souhaitez modifier aucun fichier système.Il vous basculera vers la racine en utilisant votre
sudo
mot de passe utilisateur, lorsque vous fermez la console ou tapez queexit
vous revenez à votre utilisateur normal.la source
exit
ou fermiez la fenêtre de l'émulateur de terminal.Vous pouvez configurer
sudo
pour ne jamais demander votre mot de passe.Ouvrez une fenêtre de terminal et tapez:
Au bas du fichier, ajoutez la ligne suivante:
Où
$USER
est votre nom d'utilisateur sur 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 si vous en avez un), appuyez sur ctl + x pour quitternano
et cela vous invitera à enregistrer).À partir d’Ubuntu 19.04, le fichier devrait maintenant ressembler à quelque chose comme:
Ensuite, vous pouvez taper
sudo <whatever you want>
dans une fenêtre de terminal sans être invité à entrer le mot de passe.Ceci s'applique uniquement à l'utilisation de la
sudo
commande dans le terminal. Vous serez toujours invité à entrer votre mot de passe si vous essayez (par exemple) d'installer un package à partir du centre de logiciel.la source
sudo visudo
au lieu de le modifier directement. Changer également les permissions des sudoers peut vous bloquer. Lors de l'édition avecvim
, utilisez: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.sudo install crapware
ne demandera pas de mot de passe dans ce cas et pourrait tout gâcher, 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é. .. C'est juste un exemple.rm -rf ~
déconner pas mal de choses). Globalement, je n’appellerais pas «risque de sécurité grave» la simple suppression du mot de passe de sudo.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 qu'elle soit beaucoup plus sûre:
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 pour Vi notées avec (vi!) . Ignorez-les si vous utilisez nano.)
Utilisez les touches fléchées pour aller à la fin de la
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 d'édition (à ajouter après le dernier caractère de la ligne).
Maintenant tapez:
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. Par exemple
Defaults env_reset,timestamp_timeout=5
.(vi!) appuyez sur Echap pour revenir au mode commande. Maintenant, si vous êtes satisfait de votre édition, tapez
:w
Enterpour écrire le fichier et:q
Enterquitter vi. Si vous faites une erreur, le moyen le plus simple est peut-être de refaire depuis le début, de quitter sans sauvegarder (appuyer Escapepour passer en mode commande), puis de taper: q! Enter.Appuyez sur Ctrl+ X, puis sur Y, puis sur Enterpour enregistrer votre fichier et quitter nano.
Vous voudrez peut-être lire les pages de manuel de sudoers et vi pour des informations supplémentaires.
Réinitialiser la valeur de délai en utilisant:
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):Remplacez-le
<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 le groupe d'utilisateurs 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:
Tapez ^ X ( Ctrl+ X) pour quitter. Cela devrait vous 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:
Cependant, si vous devez activer les connexions root, vous pouvez le faire comme suit:
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:
Groupe sudo
Déconnectez-vous, puis revenez dans.
Réinitialiser le délai d'attente sudo
Vous pouvez être sûr que sudo demandera le mot de passe la prochaine fois en lançant:
la source
sudo env EDITOR=/bin/nano visudo
pour une édition fiablesudoers
en nano. (update-alternatives peut également être utilisé pour paramétrer l'éditeur)Le moyen préféré pour accorder des autorisations individuelles (ou de groupe) serait d’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é.
Pour que l'utilisateur actuellement connecté devienne un sudoer et
sudo
ne lui demande pas de mot de passe, utilisezcela créera un fichier appelé
/etc/sudoers.d/$USER
(où$USER
est le nom d'utilisateur de l'utilisateur avec lequel vous étiez connecté lorsque vous avez exécuté cette commande), indiquant clairement quels utilisateurs sont autorisés.Si vous souhaitez le faire pour un autre utilisateur, remplacez simplement les deux instances de
$USER
par un autre nom d'utilisateur dans la commande ci-dessus.De même, un fichier peut être utilisé pour gérer plusieurs directives:
Voir
/etc/sudoers.d/README
etman sudoers
pour plus d'informations.la source
tee
commande.sudo sh -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$(logname)'
sudo chmod 440 /etc/sudoers.d/$(logname)
sudo ... >file
redirection dans un shell est exécutée dans le shell d'origine. Elle ne peut donc fonctionner que dans un shell racine.echo "username ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/username
Nice one-liner pour supprimer les invites sudo pour l'utilisateur actuel
la source
echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo env EDITOR="tee -a" visudo
n’avisudo
besoinsudo
que de tout (et neenv
sera même pas nécessaire dans la configuration par défaut, IIRC).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".sudo chmod 440 /etc/sudoers.d/$(logname)
corriger les autorisations de fichier comme indiqué dans le fichier README de ce répertoire.Bien sûr, ce que vous voulez faire n'est pas recommandé. Au bout d'un moment, bien que l'entrée
sudo
devienne si automatique que son utilité diminue.Une autre approche est de laisser votre fichier sudoers tel qu'il est et, tout en faisant quelque chose de compliqué à vos trente - six cents serveurs, entrez
sudo bash
. Cela vous donnera un shell qui sera authentifié en tant que root jusqu'à ce que vous le quittiez.la source
sudo -s
ousudo -i
sont probablement les deux meilleures idées quesudo bash
, car ils assurent l'environnement est sain et les choses.sudo
commandes (en pensant en particulier àsudo pip ...
) nécessitentsudo -H
(définissez HOME) pour que la commande s'exécute correctement. Dans d'autres cas,sudo -E
(préserv env) peut être requis. L'exécutionsudo bash
probablement fonctionnera dans la plupart des cas, mais pas dans tous, et quand ce ne sera pas, on ne saura pas pourquoi.De super utilisateur vient une bonne réponse:
Utilisez le commutateur -S qui lit le mot de passe de STDIN:
Remplacez
<password>
avec votre mot de passe.la source
echo
afin qu'il n'apparaisse pas dans l'histoire?Bon mot
sudo sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g'
la source
Ceci est une solution d'une ligne qui modifie également les autorisations de fichiers comme indiqué dans
/etc/sudoer.d/README
:la source
Développer l’idée de @upteryx.
Voici comment j'ai implémenté l'utilisateur non root et sans mot de passe dans une image Docker éphémère à utiliser dans un pipeline CICD:
la source