Sur une machine en particulier, j'ai souvent besoin d'exécuter des commandes Sudo
de temps en temps. Je peux très bien entrer le mot de passe sur Sudo
dans la plupart des cas.
Cependant, il existe trois commandes Sudo
Je veux exécuter sans entrer le mot de passe:
Sudo reboot
Sudo shutdown -r now
Sudo shutdown -P now
Comment puis-je exclure ces commandes de la protection par mot de passe vers Sudo
?
NOPASSWD
Vous pouvez utiliser la directive NOPASSWD
dans votre fichier /etc/sudoers
.
Si votre utilisateur s'appelle user
et votre hôte 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
ed nécessitent 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 la page de manuel sudoers
. 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 de 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
afin de vous assurer de ne pas vous verrouiller hors du système - juste au cas où vous écrivez accidentellement quelque chose d’erreur dans le fichier sudoers
. visudo
enregistrera votre fichier modifié dans un emplacement temporaire et écrasera seulement le fichier réel sudoers
si le fichier modifié peut être analysé sans erreur.
/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
exemple: /etc/sudoers.d/shutdown
. C’est un moyen élégant de séparer les différentes modifications apportées aux droits Sudo
tout en laissant le fichier sudoers
original intact 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 en dehors de la 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.
sudoers
est foiréSi vous n'avez pas utilisé visudo
pour éditer vos fichiers et que vous avez par la suite foiré /etc/sudoers
ou un fichier dans /etc/sudoers.d
, vous ne pourrez plus utiliser Sudo
.
La solution pourrait être de réparer les fichiers en utilisant pkexec
, qui 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
, de sorte que vous risquez également de vous retrouver bloqué dans cette situation. Encore une fois, vous pouvez utiliser pkexec
pour 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 pkexec
comme ceci pour corriger propriété et autorisations :
pkexec chown root:root /etc/sudoers.d/shutdown
pkexec chmod 0440 /etc/sudoers.d/shutdown
Désolé, mais il y a tellement de confusion à propos de cela et de réponses très compliquées, que j’ai le sentiment que je dois faire la part des choses avant que quelqu'un comprenne mal et fasse quelque chose de fou.
tilisation de visudo !!
Ajoutez les lignes suivantes à la configuration:
ALL ALL=NOPASSWD: /sbin/reboot,/sbin/shutdown
Cela permet aux commandes, au redémarrage et à l’arrêt avec tous les paramètres d’être exécutés par n’importe quel utilisateur.
S'il vous plaît stackexchange, donnez simplement des réponses simples et succinctes.