Utilisez la directive NOPASSWD
Vous pouvez utiliser la directive NOPASSWD
dans votre fichier /etc/sudoers
.
Si votre utilisateur est appelé user
et que votre hôte s'appelle host
, vous pouvez ajouter ces lignes à /etc/sudoers
:
user host = (root) NOPASSWD: /sbin/shutdown
user host = (root) NOPASSWD: /sbin/reboot
Cela permettra à l'utilisateur user
d'exécuter les commandes souhaitées sur host
sans entrer de mot de passe. Toutes les autres commandes sudo
nécessiteront toujours un mot de passe.
Les commandes spécifiées dans le fichier sudoers
doivent être pleinement qualifiées (c'est-à-dire en utilisant le chemin absolu de la commande à exécuter) comme décrit dans les sudoers
man page . Fournir un chemin relatif est considéré comme une erreur de syntaxe.
Si la commande se termine par le caractère /
final et pointe vers un répertoire, l'utilisateur pourra exécuter n'importe quelle commande dans ce répertoire (mais pas dans les sous-répertoires). Dans l'exemple suivant, l'utilisateur user
peut exécuter n'importe quelle commande du répertoire /home/someuser/bin/
:
user host = (root) NOPASSWD: /home/someuser/bin/
Remarque: utilisez toujours la commande visudo
pour éditer le fichier sudoers
pour vous assurer de ne pas vous verrouiller hors du système - juste au cas où vous écrivez accidentellement quelque chose de incorrect dans le fichier sudoers
. visudo
enregistrera votre fichier modifié dans un emplacement temporaire et seulement remplacera le fichier réel sudoers
si le fichier modifié peut être analysé sans erreur.
Utiliser /etc/sudoers.d
au lieu de modifier /etc/sudoers
Au lieu de modifier le fichier /etc/sudoers
, vous pouvez ajouter les deux lignes à un nouveau fichier dans /etc/sudoers.d
e.g. /etc/sudoers.d/shutdown
. Il s'agit d'une manière élégante de séparer les différentes modifications apportées aux droits sudo
et de ne pas modifier le fichier sudoers
d'origine pour faciliter les mises à niveau.
Remarque: Encore une fois, vous devez utiliser la commande visudo
pour 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 sudoers
est endommagé
Si vous n’avez pas utilisé visudo
pour éditer vos fichiers puis accidentellement égaré /etc/sudoers
ou falsifié un fichier dans /etc/sudoers.d
, alors vous serez exclu de sudo
.
La solution pourrait être de réparer les fichiers en utilisant pkexec
. est une alternative à sudo
.
Pour corriger /etc/sudoers
:
pkexec visudo
Pour corriger /etc/sudoers.d/shutdown
:
pkexec visudo -f /etc/sudoers.d/shutdown
Si la propriété et / ou les autorisations sont incorrectes pour un fichier sudoers
, le fichier sera ignoré par sudo
. Vous pourriez donc vous retrouver dans cette situation. Encore une fois, vous pouvez utiliser pkexec
pour résoudre ce problème.
Les autorisations correctes doivent être comme ceci:
$ ls -l /etc/sudoers.d/shutdown
-r--r----- 1 root root 86 Jul 16 15:37 /etc/sudoers.d/shutdown
Utilisez pkexec
comme ceci pour corriger la propriété et les autorisations :
pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown