Accueil
» LINUX
»
Comment exécuter sudo sans mot de passe sous Linux
Comment exécuter sudo sans mot de passe sous Linux
Vous pouvez exécuter sudo sans mot de passe en ajoutant une NOPASSWDrègle à la politique sudoers. La méthode la plus sûre consiste à autoriser uniquement la commande administrative dont vous avez besoin, plutôt que de désactiver la demande de mot de passe pour chaque commande sudo.
Avant toute modification, n'oubliez pas l'effet de ce paramètre : toute personne ou tout système prenant le contrôle de votre compte connecté pourra exécuter la commande autorisée en tant que superutilisateur (root) sans authentification supplémentaire. Le manuel sudoers indique NOPASSWDque l'option correspondante permet de supprimer l'authentification pour ces commandes.
Pourquoi sudo -s n'est pas une méthode sudo sans mot de passe
L'ancienne méthode d'exécution sudo -sne configure pas réellement l'utilisation de sudo sans mot de passe. Elle -slance un shell sous sudo, mais la politique de sudo peut toujours exiger une authentification préalable. Il est également possible que plusieurs commandes s'exécutent sans autre invite, car sudo conserve généralement en cache les authentifications réussies pendant une courte période. Ceci est différent d'une NOPASSWDrègle permanente.
Exécuter une commande sudo spécifique sans mot de passe
Cet exemple permet à l'utilisateur alexde redémarrer Nginx sans mot de passe. Remplacez le nom d'utilisateur, la commande et les arguments par les valeurs correspondant à votre système.
1. Confirmez votre nom d'utilisateur et le chemin de commande
Exécutez les commandes suivantes en tant qu'utilisateur normal :
whoami
command -v systemctl
La deuxième commande peut renvoyer une valeur /usr/bin/systemctl. Utilisez le chemin indiqué par votre système. Les règles sudoers doivent identifier les commandes par leur chemin complet.
Vérifiez le nom du compte et le chemin complet de la commande avant de rédiger la règle sudoers.
2. Créez un fichier de dépôt dédié aux sudoers
Au lieu de modifier /etc/sudoersdirectement, utilisez visudoun fichier situé dans /etc/sudoers.d:
sudo visudo -f /etc/sudoers.d/alex-nopasswd
Vous devrez normalement saisir votre mot de passe lors de cette étape de configuration. L'utilisation de visudovisudo est préférable car elle vérifie la syntaxe avant d'accepter les modifications. Le manuel de visudo pour Ubuntu indique également que visudovisudo verrouille le fichier pendant l'édition et vérifie les erreurs d'analyse syntaxique.
Ouvrez un fichier de configuration sudoers séparé visudoplutôt que de modifier le fichier de stratégie principal avec un éditeur de texte normal.
3. Ajoutez la règle NOPASSWD la plus restrictive dont vous avez besoin.
Pour l'exemple de redémarrage de Nginx, ajoutez :
alex ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx
Cette règle autorise uniquement l'exécution, sans authentification, de la commande et des arguments spécifiés en tant que superutilisateur (root). Pour autoriser plusieurs commandes spécifiques, séparez-les par des virgules.
Si vous souhaitez délibérément que chaque commande sudo d'un utilisateur s'exécute sans authentification, la règle générale est la suivante :
alex ALL=(ALL:ALL) NOPASSWD: ALL
Cette méthode est beaucoup moins sécurisée et constitue rarement le meilleur choix sur un poste de travail ou un système partagé. Une session utilisateur compromise aurait un accès direct à des privilèges root illimités.
Une règle spécifique à une commande est plus sûre que l'octroi d'une autorisation NOPASSWD: ALL.
4. Valider et tester la règle
Après avoir enregistré et quitté l'éditeur, consultez la politique sudoers complète :
sudo visudo -c
Ne négligez pas cette vérification. La visudodocumentation explique que la politique sudoers est évaluée dans son ensemble ; par conséquent, la vérification de la configuration complète permet de détecter les problèmes pouvant concerner des fichiers inclus.
Ensuite, invalidez toute information d'identification sudo mise en cache et effectuez un test non interactif :
sudo -k
sudo -n /usr/bin/systemctl restart nginx
Cette -noption indique à sudo de ne pas demander de mot de passe. Si la règle est respectée, la commande s'exécute sans demander de mot de passe. Si une authentification est toujours requise, sudo se termine en affichant une erreur au lieu d'attendre une saisie. Ceci est sudo -nparticulièrement utile pour les scripts qui ne doivent jamais s'arrêter à l'invite de mot de passe.
Validez la politique, effacez les informations d'identification mises en cache et utilisez-la sudo -npour confirmer que la commande ne nécessite effectivement plus de mot de passe.
Dépannage de sudo sans mot de passe
La commande demande toujours un mot de passe : vérifiez que le nom d’utilisateur, le chemin de la commande et les arguments correspondent exactement à l’entrée sudoers.
Cette commande n'est pas autorisée : exécutez-la sudo -lpour consulter les privilèges attribués à votre compte.
Le fichier de configuration semble être ignoré : utilisez un nom de fichier simple tel que alex-nopasswd. Certaines configurations sudoers ignorent les fichiers /etc/sudoers.ddont le nom contient un point ou se termine par un suffixe de type sauvegarde.
Vous devez annuler la modification : rouvrez le menu déroulant sudo visudo -f /etc/sudoers.d/alex-nopasswd, supprimez ou restreignez la règle, enregistrez et exécutez sudo visudo -cà nouveau.
Bonnes pratiques
N'utilisez sudo sans mot de passe qu'en cas de nécessité absolue, par exemple pour une action de service strictement contrôlée ou une tâche d'automatisation. Privilégiez un chemin de commande et des arguments précis, évitez NOPASSWD: ALLles raccourcis clavier autant que possible et limitez la taille de la règle sudoers au strict nécessaire. Cela préserve la majeure partie de la protection de sudo tout en supprimant l'invite de mot de passe lorsque cela est réellement indispensable.