Sur une machine particulière, j'ai souvent besoin d'exécuter des sudo
commandes de temps en temps. Je peux très bien entrer le mot de passe sudo
dans la plupart des cas.
Cependant, il y a trois sudo
commandes que je veux exécuter sans entrer de 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 sudo
?
Réponses:
Utilisez la
NOPASSWD
directiveVous pouvez utiliser la
NOPASSWD
directive dans votre/etc/sudoers
fichier .Si votre utilisateur est appelé
user
et votre hôte est appelé,host
vous pouvez ajouter ces lignes à/etc/sudoers
:Cela permettra à l'utilisateur
user
d'exécuter les commandes souhaitéeshost
sans entrer de mot de passe. Toutes les autressudo
commandes ed nécessitent toujours un mot de passe.Les commandes spécifiées dans le
sudoers
fichier doivent être entièrement qualifiées (c'est-à-dire en utilisant le chemin absolu de la commande à exécuter), comme décrit dans lasudoers
page 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'utilisateuruser
peut exécuter n'importe quelle commande du répertoire/home/someuser/bin/
:Remarque: utilisez toujours la commande
visudo
pour éditer lesudoers
fichier 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 lesudoers
fichier.visudo
va enregistrer votre fichier modifié à un emplacement temporaire et ne remplacera le vraisudoers
fichier si le fichier modifié peut être analysé sans erreurs.Utiliser
/etc/sudoers.d
au lieu de modifier/etc/sudoers
Au lieu de modifier le
/etc/sudoers
fichier, vous pouvez ajouter les deux lignes à un nouveau fichier, par/etc/sudoers.d
exemple/etc/sudoers.d/shutdown
. C’est un moyen élégant de séparer les différentes modifications apportées auxsudo
droits et de laisser lesudoers
fichier original intact pour faciliter les mises à niveau.Remarque: à nouveau, vous devez utiliser la commande
visudo
pour modifier le fichier afin de vous assurer de ne pas vous verrouiller hors du système:Cela garantit également automatiquement que le propriétaire et les autorisations du nouveau fichier sont définis correctement.
Si
sudoers
est foiréSi vous n'avez pas l'habitude
visudo
d'éditer vos fichiers et que vous avez ensuite accidentellement foiré/etc/sudoers
ou foiré un fichier,/etc/sudoers.d
vous serez bloquésudo
.La solution pourrait être de réparer les fichiers en utilisant
pkexec
une alternative àsudo
.Pour réparer
/etc/sudoers
:Pour réparer
/etc/sudoers.d/shutdown
:Si la propriété et / ou les autorisations sont incorrectes pour un
sudoers
fichier quelconque , le fichier sera ignoré, desudo
sorte que vous risquez également de vous retrouver bloqué dans cette situation. Encore une fois, vous pouvez utiliserpkexec
pour résoudre ce problème.Les autorisations correctes devraient être comme ceci:
Utilisez
pkexec
comme ceci pour corriger la propriété et les autorisations :la source
user
autre manière,sudo
aucune autre commande ne peut être utilisée par cet utilisateur. Regardezman sudo
etman sudoers
.mgd ALL=(root) NOPASSWD: /var/root/test
. Je suis utilisateurmgd
etALL
signifie "de tous les hôtes" ./var/root/test
est un simple « Bonjour tout le monde » script shell avec des autorisations:-rwx------ 1 root wheel 27 12 Jun 09:54 /var/root/test
. Je n'ai apporté aucune autre modification au système.host
contient le fichier sudoers?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 ne fasse quelque chose de fou.
Utiliser visudo !!
Ajoutez les lignes suivantes à la configuration:
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.
la source