J'ai besoin qu'un nouvel utilisateur puisse exécuter Sudo
sans demande de mot de passe, car cet utilisateur a dans crontab
un .sh
qui utilise Sudo
pour certaines commandes.
J'ai créé un nouvel utilisateur sur mon serveur Ubuntu 16.04 x64
adduser my-user Sudo
gpasswd -a my-user Sudo
Puis, en utilisant visuo
j’ai ajouté cette ligne, basée sur cette question
my-user ALL=(ALL) NOPASSWD : ALL
Puis redémarré
Après le redémarrage, je me suis connecté avec my-user
et j'ai essayé de supprimer Sudo, mais le mot de passe Sudo m'a été demandé.
NOTE: J'ai ajouté la crontab utilisant crontab -e my-user
donc je suppose que mon script est exécuté sous la forme my-user
. En fait, le script crontabbed se bloque en me signalant dans le journal une demande de mot de passe Sudo
. J'ai vraiment besoin d'exécuter le script de cette manière pour pouvoir créer un fichier avec my-suer
en tant que propriétaire.
Dites-moi si certaines étapes/lignes n'étaient pas nécessaires et comment rendre my-user
capable d'exécuter Sudo
sans demande de mot de passe.
Merci
PS: J'ai vu cette question , mais je ne parviens pas à le faire fonctionner. J'ai donc besoin d'une explication plus précise, car ma situation est différente: j'utilise un script crontab et j'en ai besoin. ne demande pas de mot de passe Sudo
Parfois, l’exécution d’un processus à partir de la racine crontab
de la racine peut entraîner des problèmes de propriété de fichier initiale et de mode rwx
; ceux-ci peuvent ne pas être conservés correctement.
Dans tout les cas:
1) pour créer un nouvel utilisateur, restez simple:
_ $ Sudo deluser my-user # if "my-user" is a regular user
$ adduser my-user
$ Sudo gpasswd -a my-user Sudo
_
2) pour inclure une nouvelle entrée avec une balise NOPASSWD
dans sudoers ou dans un fichier (par exemple, _/etc/sudoers.d/60_my-user_rules
_), fixez les deux points à la balise, c’est-à-dire NOPASSWD:
=
Je ne l'avais jamais vu auparavant avec un espace intercalé et votre règle devient:
_ my-user my-Host = NOPASSWD: /full/path/to/cmd [parameter1 [| parameter2 [| ...]]]
_
L'ajout de _(ALL)
_ avant le _NOPASSWD:
_ est facultatif, car la règle par défaut est _(ALL:ALL)
_ de toute façon. Cependant, vous souhaiterez peut-être non seulement exécuter votre cmd/script avec le privilège root, mais également l'exécuter en tant qu'utilisateur donné (_spec-user
_) ou en tant que membre d'un groupe donné (_spec-group
_), ou des deux. Dans ce cas, la règle devient:
_ my-user my-Host = ([spec-user][:spec-group]) NOPASSWD: /full/path/to/cmd [parameter1 [| parameter2 [| ...]]]
_
Cela limitera votre disposition Sudo sans mot de passe à un utilisateur, un hôte et une commande. Vous pouvez renforcer cette règle en spécifiant le ou les paramètres facultatifs associés à cette commande. Dans ce cas, la règle ne s’appliquera que pour ce ou ces paramètres exacts.
Pour les scripts, vous pouvez renforcer cette règle en veillant à ce qu’elle ne s’applique que si le script est non modifié de quelque manière que ce soit. C'est un moyen d'éviter le détournement de script. Cela se fait via cmd-aliasing et en spécifiant les sommes SHA dans _/etc/sudoers.d/60_my-user_rules
_.
HTH. Veuillez signaler si vous rencontrez des problèmes avec cette réponse.