Linux : comment utiliser sudo sans saisir de mot de passe ?
Qu'avons-nous dans la boîte ?
Vous utilisez Linux et vous avez besoin d’exécuter une commande avec des privilèges élevés via sudo sans saisir le mot de passe, et vous ne savez pas comment faire ? Alors, sachez que c’est possible ! Cet article vous explique comment procéder.
Sous Linux, un utilisateur membre du groupe « sudo » peut exécuter des commandes qui nécessitent des privilèges élevés, sans pour autant être le super-utilisateur « root » en lui-même. Toutefois, la première fois que l’on élève ses privilèges au sein d’une session, il convient de saisir son mot de passe, par mesure de sécurité. Si l’on souhaite exécuter une commande sudo dans un script, c’est gênant, car il faudra saisir le mot de passe.
Dans certains cas, on peut avoir besoin de retirer cette obligation pour que la commande sudo puisse être exécutée directement.
1. Editer le fichier /etc/sudoers
La configuration des autorisations s’effectue dans le fichier « /etc/sudoers« , que ce soit sur Debian ou une autre distribution Linux. Ce fichier sudoers s’édite avec cette commande :
sudo visudo
Cette commande permet d’éditer le fichier sudoers en mode texte.
2. Ajouter la règle NOPASSWD
Dans le fichier sudoers, l’utilisation du paramètre NOPASSWD sert à autoriser l’exécution d’une commande sans avoir besoin de saisir le mot de passe. Si l’on prend l’exemple de l’utilisateur « tutobox« , ceci donnerait :
tutobox ALL=(ALL) NOPASSWD: ALL
Mais, attention, cette règle permet à l’utilisateur tutobox d’utiliser la commande « sudo » pour exécuter toutes les commandes sans mot de passe ! Dans le même esprit, la commande ci-dessous attribue cette autorisation à tous les utilisateurs membre du groupe « informatique » :
%informatique ALL=(ALL) NOPASSWD: ALL
Il est recommandé d’affiner cette règle ! En effet, on va permettre à l’utilisateur d’exécuter une commande spécifique sans mot de passe. Si l’on prend l’exemple de la commande « rm » qui sert à supprimer des fichiers et dossiers, cela donne la règle suivante :
tutobox ALL=(ALL) NOPASSWD: /bin/rm
Ainsi, l’utilisateur tutobox devra spécifier son mot de passe s’il exécute une commande via « sudo », sauf s’il appelle la commande « rm » correspondante au binaire « /bin/rm ». Pour un groupe, cela fonctionne de la même façon.
S’il y a plusieurs commandes que vous souhaitez autoriser sans mot de passe, utilisez cette syntaxe :
tutobox ALL=(ALL) NOPASSWD: /bin/rm, /bin/php
On pourrait aller plus loin en spécifiant une commande complète, avec le chemin du fichier à supprimer, par exemple. Ceci pour montrer que l’on peut restreindre précisément.
3. Conclusion
Grâce à cet article de la boîte à tutoriels informatique, vous êtes capable d’exécuter une commande sudo sans mot de passe sur votre serveur Linux. Attention, à utiliser quand il n’est pas possible de faire autrement, et avec parcimonie.
Ressources :