Je mets en place des tâches de maintenance système régulières qui doivent s'exécuter en tant que root. Je prévois d'utiliser la saveur de cron fournie avec Ubuntu 14.04 LTS par défaut.
Je vois l'administrateur précédent (qui a depuis quitté l'entreprise) éditer directement/etc/crontab. Cependant, je comprends qu'une autre approche possible serait d'utiliser crontab -e
en tant que root. Y a-t-il des arguments convaincants pour utiliser l'un ou l'autre, ou est-ce une préférence?
Il peut être utile de noter que les travaux dans une crontab personnelle (crontab -e
) sont toujours exécutés en tant que propriétaire, où /etc/crontab
contient un champ supplémentaire obligatoire <user>
permettant un admin pour configurer le travail pour qu'il s'exécute en tant qu'utilisateur non root.
La modification de la crontab du système ou la configuration d'une crontab personnelle pour root sont probablement un peu plus portables, non spécifiques à certaines distributions Linux et sans doute plus pratiques pour une personne à maintenir, avec tous les travaux dans un seul fichier mais:
Personnellement, je préfère un troisième option: pour chaque tâche planifiée, soit
/etc/cron.d/
avec un extrait cron/etc/cron.[hourly |daily |weekly |monthly]
approprié.C'est plus facile à scripter (vous pouvez simplement créer/écraser/supprimer de tels fichiers et vous n'avez pas à vous occuper du contenu d'un seul fichier crontab) et cela fonctionne bien avec les outils de gestion de configuration et c'est ce que les gestionnaires de packages sont déjà faire de toute façon.
Les travaux/scripts dans /etc/cron.[hourly |daily |weekly |monthly]
sont toujours exécutés en tant que root, où les extraits cron dans /etc/cron.d/
permettent à la fois de définir un calendrier personnalisé et de s'exécuter en tant qu'utilisateur différent avec le même _ <user>
champ trouvé dans /etc/crontab
.
Du mieux que je me souvienne, crontab -e
a l'avantage supplémentaire de vérifier la syntaxe crontab avant de l'installer, et d'errer et de restaurer la précédente si vous faites une erreur. De cette façon, tout ce qui fonctionnait auparavant ne s'arrêtera pas soudainement si vous vous trompez de syntaxe. Je pense que la meilleure pratique consiste à utiliser les utilitaires, comme exécuter visudo
plutôt que de modifier /etc/sudoers
directement.
C'est vraiment une question de style, il y a une raison pour laquelle plusieurs méthodes sont proposées par l'OS. Soyez juste cohérent et ne mélangez pas si vous ne voulez pas confondre quelqu'un d'autre (ou vous-même après un certain temps de ne pas traiter avec le système) - s'il est difficile de voir quelles tâches sont réellement planifiées sur l'ensemble de l'hôte, cela a tendance pour finir en mauvaises surprises.
Afin d'être sûr d'ajouter un travail cron qui nécessite des droits d'utilisateur spécifiques, j'utilise personnellement la commande suivante:
# crontab -u <user> -e
Vous pouvez également ajouter Sudo
.
Comme l'a indiqué @rackandboneman, il n'est pas nécessaire de jouer avec les fichiers /etc/cron.d/. Si le problème concerne les tâches cron de l'utilisateur, utilisez les fonctionnalités de la commande crontab
.