web-dev-qa-db-fra.com

Comment exécuter un travail cron à l'aide de la commande Sudo

Est-il possible d'exécuter un travail cron qui nécessite la commande Sudo ?

Comme:

 Sudo rm somefile
114
sayem siam

Je ne vais pas entrer dans combien c'est une mauvaise idée; Pour faire simple, exécuter Sudoin dans crontab nécessite que votre mot de passe soit stocké quelque part en texte brut.

C'est une mauvaise idée.


Voici la méthode recommandée pour exécuter des tâches administratives via cron. Puisque vous n'avez pas vraiment besoin d'écrire Sudo dans la crontab, si vous modifiez la crontab de root.

Utilisez la crontab de root

Exécutez la commande suivante:

Sudo crontab -e

Ceci ouvre la liste des tâches de root. Sudo n'est pas nécessaire d'exécuter votre commande dans ce contexte, car elle sera invoquée comme root de toute façon.

Par conséquent, vous ajouterez simplement ce qui suit au fichier crontab de root.

@hourly rm somefile

Maintenant, si vous absolument voulez prendre des risques avec votre mot de passe, ce qui suit va exécuter votre commande à partir de votre propre crontab, et entrez votre mot de passe automatiquement lorsque vous y êtes invité par Sudo.

Encore une fois, ce n'est pas recommandé.


Dans votre propre crontab, écrivez votre commande comme suit:

@hourly echo "password" | Sudo -S rm somefile

L’inconvénient évident est que, si jamais quelqu'un accédait à votre crontab, votre mot de passe serait lisible en texte brut.

Vous ne devriez pas faire ça.

229
SirCharlo

Si vous mettez le script à partir de l’un des répertoires cron (/etc/cron.*), vous n’avez pas besoin d’utiliser Sudo car il s’exécute en tant que root.

Si vous utilisez crontab, vous voudrez utiliser crontab de root. Cela l'exécutera en tant que root et n'aura pas besoin de Sudo.

Sudo crontab -e
31
tgm4883

Exécuter la commande suivante dans le terminal

Sudo visudo

Ajout de la ligne suivante à la fin du fichier:

vidyadhar  ALL= NOPASSWD: /bin/rm

Dans l'exemple ci-dessus, vidyadhar est le nom d'utilisateur et il ne vous demandera pas de mot de passe si vous exécutez la commande rm via vidyadhar.

3
Vidyadhar