429 votes

Exécuter sudo sans mot de passe ?

Inspiré par cette question ....

Je suis la seule personne à utiliser mon système avec la version 12.04.
Chaque fois que j'émets un sudo le système demande le mot de passe de l'utilisateur (ce qui est bien en soi).
Cependant, je me disais que sans activer le racine comment puis-je exécuter les commandes sudo qui ne demanderont pas le mot de passe de l'utilisateur pour s'authentifier.

NOTE : Je veux exécuter la commande sudo sans m'authentifier par mot de passe ; uniquement lorsqu'elle est exécutée via le terminal.
Je ne veux pas supprimer cette couche de sécurité supplémentaire pour d'autres fonctions comme l'utilisation du centre logiciel Ubuntu ou l'exécution d'un script bash script en glissant-déposant un fichier .sh dans le terminal.

757voto

Vous pouvez configurer sudo pour ne jamais demander votre mot de passe.

Ouvrez une fenêtre Terminal et tapez :

sudo visudo

Au bas du fichier, ajoutez la ligne suivante :

$USER ALL=(ALL) NOPASSWD: ALL

$USER est votre nom d'utilisateur sur votre système. Sauvegardez et fermez le fichier sudoers (si vous n'avez pas changé votre éditeur de terminal par défaut (vous le saurez si vous l'avez fait), appuyez sur Ctl + x pour sortir nano et il vous sera demandé de sauvegarder).

À partir d'Ubuntu 19.04, le fichier devrait maintenant ressembler à ceci

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

YOUR_USERNAME_HERE ALL=(ALL) NOPASSWD: ALL

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

Cela ne s'applique qu'à l'utilisation de la sudo dans le terminal. Le mot de passe vous sera toujours demandé si vous essayez (par exemple) d'installer un paquet à partir du centre logiciel.

gui password prompt

97voto

Bruno Pereira Points 70510

sudo -i est la solution si vous ne voulez pas avoir à taper un mot de passe toutes les 10 minutes lorsque vous effectuez des modifications sur votre système (ou sur d'autres systèmes), et si vous ne voulez pas modifier de fichiers système.

Cela vous permettra de passer en root en utilisant votre sudo le mot de passe de l'utilisateur, lorsque vous fermez la console ou que vous tapez exit vous êtes de retour à votre utilisateur normal.

58voto

user1656671 Points 882

La meilleure façon d'accorder des autorisations individuelles (ou de groupe) serait d'ajouter des fichiers sous la rubrique /etc/sudoers.d

Cela sépare les modifications locales de la politique par défaut et permet de gagner du temps en cas de modification du fichier sudoers de la distribution.

Pour faire de l'utilisateur actuellement connecté un sudoer et rendre sudo ne pas leur demander un mot de passe, utiliser

echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/$USER

cela créera un fichier appelé /etc/sudoers.d/$USER (où $USER est le nom d'utilisateur de l'utilisateur sous lequel vous étiez connecté lorsque vous avez exécuté cette commande), ce qui permet de savoir clairement à quels utilisateurs les autorisations sont accordées.

Si vous voulez faire cela pour un autre utilisateur, remplacez simplement les deux instances de $USER avec un autre nom d'utilisateur dans la commande ci-dessus.

echo "otheruser ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/otheruser

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

echo "username ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee -a /etc/sudoers.d/local

Ver /etc/sudoers.d/README y man sudoers pour plus d'informations.

47voto

user209328 Points 471

Les délais sudo à la racine sont le moyen le plus simple et le plus sûr de le faire. Je vais vous donner tous les exemples, mais sachez qu'il est très risqué de procéder de quelque manière que ce soit, même si cette méthode est beaucoup plus sûre :

sudo visudo

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

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

Utilisez les touches fléchées pour vous déplacer vers la fin de l'écran. Defaults ligne.

(vi !) appuyez sur la touche A (a majuscule) 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).

Tapez maintenant :

,timestamp_timeout=X

où X est le délai d'expiration 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 la touche Echap pour revenir au mode de commande. Maintenant, si vous êtes satisfait de votre montage, tapez :w Enter pour écrire le fichier et :q Enter pour quitter vi. Si vous avez fait une erreur, le plus simple est peut-être de recommencer depuis le début, de quitter sans sauvegarder (tapez sur Escape pour accéder au mode de commande), puis tapez :q ! Enter .

Hit Ctrl + X entonces Y entonces Enter pour enregistrer votre fichier et quitter nano.

Vous pouvez lire les pages de manuel sudoers et vi pour obtenir des informations supplémentaires.

man sudoers
man vi

Réinitialiser la valeur du délai d'attente en utilisant :

sudo -k

Ces instructions visent à supprimer l'invitation à saisir un mot de passe lors de l'utilisation de la commande sudo. Cependant, la commande sudo devra toujours être utilisée pour l'accès root.

Modifier le fichier sudoers

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

<username> ALL=NOPASSWD: ALL

Remplacer <username> avec votre nom d'utilisateur (sans le <> ). Ceci suppose qu'Ubuntu a créé un groupe avec le même nom que votre nom d'utilisateur, ce qui est typique. Vous pouvez également utiliser le groupe users ou tout autre groupe auquel vous appartenez. Assurez-vous simplement que vous êtes dans ce groupe. Vous pouvez le vérifier en allant dans Système -> Administration -> Utilisateurs et groupes.

Exemple :

michael ALL=NOPASSWD: ALL

Tapez ^X ( Ctrl + X ) pour sortir. Une option permettant de sauvegarder le fichier devrait être demandée, tapez Y pour sauvegarder.

Déconnectez-vous, puis reconnectez-vous. Cela devrait maintenant vous permettre d'exécuter la commande sudo sans être invité à saisir 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 vraiment besoin d'un login root persistant, la meilleure alternative est de simuler un login Root Shell en utilisant la commande suivante :

sudo -i

Toutefois, si vous doit pour activer les logins root, vous pouvez le faire comme ceci :

sudo passwd root

Réactivation 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 de l'ensemble du système sudo

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

Déconnectez-vous, puis reconnectez-vous.

Réinitialiser le délai d'attente sudo

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

sudo -k

9voto

John S Gruber Points 12997

Bien sûr, ce que vous voulez faire n'est pas recommandé. Mais après un certain temps, en entrant 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é sur vos mille et un serveurs, entrez sudo bash . Cela vous donnera un Shell qui sera authentifié en tant que root jusqu'à ce que vous le quittiez.

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