57 votes

Dois-je éditer /etc/crontab ou lancer crontab -e en tant que root ?

Je suis en train de mettre en place des tâches régulières de maintenance du système qui doivent être exécutées en tant que root. J'envisage d'utiliser la version de cron fournie par défaut avec Ubuntu 14.04 LTS.

Je vois que l'administrateur précédent (qui a depuis quitté la société) a édité /etc/crontab directement. Cependant, je comprends qu'une autre approche possible serait d'utiliser crontab -e comme racine. Existe-t-il des arguments convaincants en faveur de l'une ou l'autre solution, ou s'agit-il d'une question de préférence ?

70voto

snowdude Points 2790

Il peut être utile de noter que les tâches figurant dans une crontab personnelle ( crontab -e ) sont toujours exécutés en tant que leur propriétaire, alors que /etc/crontab contient un élément obligatoire supplémentaire <user> permettant à un administrateur de 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 création d'une crontab personnelle pour root sont probablement un peu plus portables, ne sont pas spécifiques à certaines distributions Linux et sont sans doute plus pratiques pour une personne à maintenir, avec tous les travaux dans un seul fichier mais :

Personnellement, je suis favorable à une troisième option : pour chaque dépôt de tâche programmée, soit

  • un fichier dans /etc/cron.d/ avec un extrait de cron
  • un exécutable (script) dans l'espace de travail correspondant. /etc/cron.[hourly |daily |weekly |monthly] répertoire.

C'est plus facile à script (vous pouvez simplement créer/écraser/supprimer de tels fichiers et vous n'avez pas à vous mêler du contenu d'un seul fichier crontab) et cela fonctionne bien avec les outils de gestion de la configuration et c'est ce que les gestionnaires de paquets font déjà de toute façon.

Jobs/scripts dans /etc/cron.[hourly |daily |weekly |monthly] sont toujours exécutés en tant que root, alors que les snippets cron dans /etc/cron.d/ permet à la fois de définir un programme personnalisé et de fonctionner en tant qu'utilisateur différent avec le même programme obligatoire. <user> trouvé dans le champ /etc/crontab .

16voto

kR105 Points 111

Pour autant que je m'en souvienne, crontab -e a l'avantage supplémentaire de vérifier la syntaxe de la crontab avant de l'installer et, en cas d'erreur, de restaurer la précédente. De cette façon, tout ce qui fonctionnait auparavant ne s'arrêtera pas soudainement si vous vous trompez dans la syntaxe. Je pense que la meilleure pratique est d'utiliser les utilitaires, comme exécuter visudo plutôt que d'éditer /etc/sudoers directement.

3voto

aesnak Points 521

Afin d'être sûr d'ajouter une tâche cron qui nécessite les droits d'un utilisateur spécifique, j'utilise personnellement la commande suivante :

 # crontab -u <user> -e

Vous pouvez ajouter sudo aussi.

Comme l'a indiqué @rackandboneman, il n'est pas nécessaire de modifier les fichiers /etc/cron.d/. S'il s'agit de tâches cron d'un utilisateur, utilisez les fonctionnalités de crontab commande.

2voto

dmh2000 Points 380

Il s'agit en fait d'une question de style, ce n'est pas pour rien que plusieurs méthodes sont proposées par le système d'exploitation. Soyez cohérent et ne mélangez pas les méthodes si vous ne voulez pas embrouiller les autres (ou vous-même après un certain temps d'inactivité du 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 à se terminer par de mauvaises surprises.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X