J'ai besoin qu'un nouvel utilisateur puisse exécuter sudo
sans aucune 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é en utilisant my-user
et j'ai essayé de faire sudo clear, mais il me demande le mot de passe sudo.
REMARQUE :J'ai ajouté le crontab en utilisant crontab -e my-user
donc je suppose que mon script est exécuté en tant que my-user
. En fait, le script crontabbed plante en me signalant dans le journal un sudo
demande de mot de passe. 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.
Veuillez me dire si certaines étapes/lignes n'étaient pas nécessaires et comment rendre my-user
pour exécuter sudo
sans demande de mot de passe.
Merci
PS :j'ai vu cette question, mais je n'arrive pas à la faire fonctionner donc j'ai besoin d'une explication plus précise, car ma situation est différente :j'exécute un script crontab et j'en ai besoin ne demande pas de mot de passe sudo
Réponse acceptée :
Exécution parfois d'un processus à partir du crontab
de root peut causer des problèmes avec la propriété initiale du fichier et rwx
mode; ceux-ci peuvent ne pas être correctement conservés.
Dans tous 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 un NOPASSWD
tag dans sudoers ou dans un fichier (par exemple /etc/sudoers.d/60_my-user_rules
), faites coller les deux-points à la balise, c'est-à-dire NOPASSWD:
Je ne l'ai jamais vu auparavant avec des espaces intercalés et votre règle devient :
my-user my-host = NOPASSWD: /full/path/to/cmd [parameter1 [| parameter2 [| ...]]]
Ajout de (ALL)
avant le NOPASSWD:
est facultatif car la règle par défaut est (ALL:ALL)
en tous cas. Cependant, vous pouvez 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 les 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 en fait 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(s) paramètre(s) facultatif(s) à cette commande. Dans ce cas, la règle ne s'appliquera qu'à ce(s) paramètre(s) exact(s).
Pour les scripts, vous pouvez encore renforcer cette règle en vous assurant qu'elle ne s'applique que si le script n'a pas été 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.
En relation :Sauvegarde complète de l'iPhone sans iTunes ?