web-dev-qa-db-fra.com

Comment exécuter les commandes Sudo ... dans cronjobs dans Ubuntu 16.04?

Certaines commandes de terminal ne peuvent être exécutées qu'en tant qu'utilisateur root. Si nous essayons de les exécuter sans Sudo mot-clé, ils échouent avec le Permission denied erreur. Un exemple serait une commande pour créer un répertoire/dossier à certains emplacements.

Je dois exécuter une telle commande dans le cadre d'un travail cron dans Ubuntu 16.04. Normalement, je pouvais exécuter la commande avec le mot clé Sudo dans le terminal et je serais invité à entrer le mot de passe de l'utilisateur root, puis la commande serait exécutée avec succès .

Mais maintenant que je dois entrer cette commande dans le cadre d'un travail cron dans mon fichier crontab, comment procéder? Comment puis-je exécuter une telle commande dans le cadre d'un cronjob?

2
Shy

Il suffit de lancer crontab -e comme racine utilisateur. Ceci exécuterait votre commande avec l'autorisation root et il n'est pas nécessaire d'ajouter Sudo avant celle-ci.

Cependant, vous ne pouvez pas vous connecter avec l'utilisateur root et vous devez effectuer votre travail en tant que travail cron. Vous devez spécifier le chemin complet dans le fichier cron:

 $ * * * * * /usr/bin/Sudo /your/command

Vous pouvez également ajouter NOPASSWD devant votre commande dans le fichier /etc/sudoers pour exécuter la commande en tant que racine mais sans mot de passe.

4
Ali Ghasempour

Une autre option consiste à la placer dans la crontab globale du système sous /etc/crontab (ou dans un fichier dans /etc/cron.d), où vous pouvez spécifier l'utilisateur auquel chaque tâche est exécutée:

* * * * * root mkdir /foo/bar
2
fkraiem