Si vous avez suffisamment accès au script et pris des précautions raisonnables, exécuter quelque chose à partir de root crontab n'est généralement pas un risque pour la sécurité.
Mais n'exécutez pas un script en tant que root qu'un utilisateur non root peut modifier ou écraser. Cela s'applique aux travaux exécutés à partir de cron ainsi que de manière interactive.
Si ce script comprend d'autres fichiers, la même chose s'applique également à eux.
En cas de doute, utilisez toujours le principe du moindre privilège. Si vous n'êtes toujours pas sûr, vous pouvez toujours poser des questions spécifiques sur les forums et dans IRC.
Il y a (presque) toujours un moyen d'exécuter quelque chose en tant qu'utilisateur non root. Si tout le reste échoue, l'utilisation de sudo pour limiter un utilisateur à des commandes spécifiques limite également le risque de faire du mal.
Donc, avec l'exemple que vous avez donné de sauvegarde de / etc / apache2 / sites-available, ce fichier est par défaut lisible par n'importe qui, ce qui implique qu'il s'agit d'un accès à la destination accessible en écriture uniquement par root.
Vous pouvez résoudre ce problème en
- créer un groupe appelé backupadmins (par exemple)
- définissez le groupe sur le répertoire de destination sur backupadmins
- ajouter un utilisateur appelé backupuser (par exemple)
- ajoutez l'utilisateur backupuser aux administrateurs de sauvegarde de groupe.
- rendre le répertoire accessible en écriture par le groupe backupadmins
- exécutez la tâche cron à partir de la crontab de backupuser.
Cela dépend de ce que font les scripts. S'ils sont en train de sauvegarder des trucs, il est probablement très bien qu'ils soient root - si un utilisateur malveillant écrase ces scripts, vous avez probablement de plus gros problèmes de toute façon.
S'ils font des choses stupides comme exécuter des fichiers trouvés dans des répertoires, ou tout ce qui pourrait être influencé par le contenu des répertoires Web, alors vous devrez probablement chercher des alternatives.
la source
Partout dans le monde, des millions de tâches cron sont exécutées en tant que root tous les jours (ou quelle que soit la période définie).
L'important est que les autorisations appropriées soient définies. Si vous exécutez quelque chose qui est accessible en écriture à tout le monde, un utilisateur ou un processus malveillant pourrait changer ce qu'il fait.
Les tâches Cron sont généralement gérées par le propriétaire de la crontab. Un utilisateur crontab peut être
/var/spool/cron/crontabs/username
par exemple. Cronjobs qui sont/etc/crontab
,/etc/cron.d/
ou/etc/cron.hourly
(quotidienne, hebdomadaire, mensuelle) seront gérés par la racine. Il est important que la propriété et les autorisations soient également correctes pour ces fichiers crontab.la source