Un truc à la cron

Tout le monde connaît cron. Non ? Bon, c’est pas grave.

Rapi­de­ment, c’est un dæmon qui permet d’exé­cu­ter pério­dique­ment des commandes. Ces commandes sont stockées dans ce qu’on appelle des cron­tabs et sont exécu­tées avec les droits de la personne à qui appar­tient la cron­tab. Par exemple, c’est idéal pour un script de sauve­garde.

Seule­ment ça ne fonc­tionne pas toujours comme il faudrait ! J’ai eu le problème hier au boulot : un script qui fonc­tion­nait parfai­te­ment en ligne de commande ne fonc­tion­nait pas quand il était lancé par cron.

Le problème est que cron utilise bien les droits du proprié­taire de la cron­tab mais pas ses variables d’en­vi­ron­ne­ment. Pour remettre votre script d’aplomb, il faut utili­ser la commande su en lui passant votre script en argu­ment. Appe­lez donc votre script avec :

su user -c "script et arguments && exit"

Bien sûr, si votre cron­tab appar­tient à root, il est inutile de spéci­fier l’uti­li­sa­teur.

Atten­tion, ne vous amusez pas à mettre un autre utili­sa­teur que le proprié­taire de la table (sauf si c’est root), sinon votre script restera bloqué sur la demande de mot de passe de l’uti­li­sa­teur.

Me soutenir sur Tipeee Me soutenir sur Liberapay

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *