GNU/Linux >> Tutoriels Linux >  >> Linux

Dois-je modifier /etc/crontab ou exécuter crontab -e en tant que root ?

Solution 1 :

Il peut être utile de noter que les tâches dans une crontab personnelle (crontab -e ) sont toujours exécutés en tant que leur propriétaire, où /etc/crontab contient un <user> obligatoire supplémentaire permettant à un administrateur de configurer le travail pour qu'il s'exécute en tant qu'utilisateur non root.

La modification de la crontab 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 jobs dans un seul fichier mais :

Personnellement, je privilégie une troisième option :pour chaque tâche planifiée déposez soit

  • un fichier en /etc/cron.d/ avec un extrait cron
  • un exécutable (script) dans le /etc/cron.[hourly |daily |weekly |monthly] correspondant répertoire.

C'est plus facile à scripter (vous pouvez simplement créer/écraser/supprimer de tels fichiers et vous n'avez pas à vous soucier 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 paquets sont déjà faire quand même.

Travaux/scripts en /etc/cron.[hourly |daily |weekly |monthly] sont toujours exécutés en tant que root, où les extraits cron dans /etc/cron.d/ autoriser à la fois la définition d'un horaire personnalisé et l'exécution en tant qu'utilisateur différent avec le même <user> obligatoire champ trouvé dans /etc/crontab .

Solution 2 :

Au mieux de mes souvenirs, crontab -e a l'avantage supplémentaire de vérifier la syntaxe crontab avant de l'installer, et de générer une erreur 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.

Solution 3 :

C'est vraiment une question de style, il y a une raison pour laquelle plusieurs méthodes sont proposées par le système d'exploitation. Soyez simplement 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 sans avoir affaire au 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.

Solution 4 :

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 @rackandboneman l'a déclaré, 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 crontab commande.


Linux
  1. Comment récupérer à partir d'une entrée racine supprimée dans les fichiers /etc/shadow et/ou /etc/passwd dans CentOS / RHEL 6

  2. Comment empêcher un utilisateur non root de créer une entrée crontab

  3. Exécutez la commande shell dans jenkins en tant qu'utilisateur root ?

  4. Quand dois-je utiliser /dev/shm/ et quand dois-je utiliser /tmp/?

  5. unix:///var/run/supervisor.sock aucun fichier de ce type

Comprendre le fichier /etc/passwd

La bonne façon de modifier les fichiers /etc/passwd et /etc/group sous Linux

Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

Comment modifier les fichiers de configuration ?

Qu'est-ce que le fichier /etc/passwd sous Linux ?

Les sites Web doivent-ils vivre dans /var/ ou /usr/ selon l'utilisation recommandée ?