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 ?