GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment éviter la demande de mot de passe pour Sudo pour les scripts Crontab ?

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 ?
Ubuntu
  1. Comment faire en sorte que sudo se souvienne du mot de passe plus longtemps

  2. Comment changer le délai d'expiration du mot de passe Sudo

  3. Comment réinitialiser le mot de passe pour sudo dans Debian

  4. Comment supprimer l'exigence de mot de passe d'Ubuntu ??

  5. Comment faire pour que sudo demande le mot de passe root ?

Comment spécifier la limite de temps pour une session Sudo dans Ubuntu 20.04 LTS

Comment exécuter des commandes Sudo sans mot de passe

Comment changer le délai d'expiration du mot de passe Sudo dans Ubuntu

Comment installer l'environnement de développement Python 3 pour Ubuntu Linux

Comment configurer Pkexec pour ne pas demander de mot de passe ?

Comment exécuter les commandes sudo sans mot de passe