Utilisez la NOPASSWDdirective
Vous pouvez utiliser la NOPASSWDdirective dans votre /etc/sudoersfichier .
Si votre utilisateur est appelé useret votre hôte est appelé, hostvous pouvez ajouter ces lignes à /etc/sudoers:
user host = (root) NOPASSWD: /sbin/shutdown
user host = (root) NOPASSWD: /sbin/reboot
Cela permettra à l'utilisateur userd'exécuter les commandes souhaitées hostsans entrer de mot de passe. Toutes les autres sudocommandes ed nécessitent toujours un mot de passe.
Les commandes spécifiées dans le sudoersfichier doivent être entièrement qualifiées (c'est-à-dire en utilisant le chemin absolu de la commande à exécuter), comme décrit dans la sudoerspage de manuel . Fournir un chemin relatif est considéré comme une erreur de syntaxe.
Si la commande se termine par un /caractère de fin et pointe vers un répertoire, l'utilisateur pourra exécuter n'importe quelle commande de ce répertoire (mais pas dans les sous-répertoires qu'il contient). Dans l'exemple suivant, l'utilisateur userpeut exécuter n'importe quelle commande du répertoire /home/someuser/bin/:
user host = (root) NOPASSWD: /home/someuser/bin/
Remarque: utilisez toujours la commande visudopour éditer le sudoersfichier afin de vous assurer de ne pas vous verrouiller hors du système - juste au cas où vous écrivez accidentellement quelque chose d'incorrect dans le sudoersfichier. visudova enregistrer votre fichier modifié à un emplacement temporaire et ne remplacera le vrai sudoersfichier si le fichier modifié peut être analysé sans erreurs.
Utiliser /etc/sudoers.dau lieu de modifier/etc/sudoers
Au lieu de modifier le /etc/sudoersfichier, vous pouvez ajouter les deux lignes à un nouveau fichier, par /etc/sudoers.dexemple /etc/sudoers.d/shutdown. C’est un moyen élégant de séparer les différentes modifications apportées aux sudodroits et de laisser le sudoersfichier original intact pour faciliter les mises à niveau.
Remarque: à nouveau, vous devez utiliser la commande visudopour modifier le fichier afin de vous assurer de ne pas vous verrouiller hors du système:
sudo visudo -f /etc/sudoers.d/shutdown
Cela garantit également automatiquement que le propriétaire et les autorisations du nouveau fichier sont définis correctement.
Si sudoersest foiré
Si vous n'avez pas l'habitude visudod'éditer vos fichiers et que vous avez ensuite accidentellement foiré /etc/sudoersou foiré un fichier, /etc/sudoers.dvous serez bloqué sudo.
La solution pourrait être de réparer les fichiers en utilisant pkexecune alternative à sudo.
Pour réparer /etc/sudoers:
pkexec visudo
Pour réparer /etc/sudoers.d/shutdown:
pkexec visudo -f /etc/sudoers.d/shutdown
Si la propriété et / ou les autorisations sont incorrectes pour un sudoersfichier quelconque , le fichier sera ignoré, de sudosorte que vous risquez également de vous retrouver bloqué dans cette situation. Encore une fois, vous pouvez utiliser pkexecpour résoudre ce problème.
Les autorisations correctes devraient être comme ceci:
$ ls -l /etc/sudoers.d/shutdown
-r--r----- 1 root root 86 Jul 16 15:37 /etc/sudoers.d/shutdown
Utilisez pkexeccomme ceci pour corriger la propriété et les autorisations :
pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown