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?
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.
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