web-dev-qa-db-fra.com

Comment exécuter un travail cron en tant qu'utilisateur spécifique?

Je souhaite exécuter un travail cron en tant qu'utilisateur spécifique sur ma machine. Comment puis-je spécifier l'utilisateur dans lequel un travail cron doit être exécuté?.

Les tâches cron seront exécutées sur un serveur (fonctionnant sous Ubuntu 10.0.4). Les «utilisateurs» sont des utilisateurs créés spécifiquement pour effectuer des tâches spécifiques côté serveur. Ces "utilisateurs" ont en commun:

  • Impossible de se connecter au système
  • Avoir un accès restreint à des dossiers/fichiers spécifiques
64
morpheous

En supposant que vous ne pouvez pas simplement vous connecter et l'ajouter à la crontab de cet utilisateur, mettez un fichier dans /etc/cron.d. Il devrait être formaté comme un travail normal, mais avec un champ supplémentaire. Avant la commande à exécuter et après le minutage, mettez l'utilisateur. Vous devriez pouvoir trouver des exemples déjà sur votre système.

Exemple:

#<timing>   <user> <command>
11 * * * *  root   /usr/lib/command
75
Daenyth

En tant que root, pour éditer le cron de user1:

crontab -u user1 -e

Vous pouvez également démarrer votre commande avec:

su user1 -c foo bar

Mais souvent, les scripts eux-mêmes réduisent leur propre accès lorsqu'ils sont démarrés en tant que root.

40
Eric Darchis

Je cherche cela depuis quelques semaines et cela a finalement fonctionné ...

Créez votre script en tant qu'utilisateur1

ssh user1@ipaddress
nano hourly-event.sh

entrer une commande

#!/bin/bash
echo "YAY it works" > /home/user1/yay.txt

le rendre exécutable

chmod 755 hourly-event.sh

éditer la crontab pour user1

Sudo crontab -u user1 -e

mettre une ligne en bas pointant vers votre (vos) script (s)

# m h  dom mon dow   command
*   *   *   *   *    bash ./hourly-event.sh

exit - sauvegarde des modifications (il affichera un répertoire/tmp lors de la sauvegarde ... tout va bien)

attendez le tour de la minute

ouvrez votre nouveau yay.txt

nano /home/user1/yay.txt

vous devriez maintenant avoir une nano fenêtre ouverte avec "YAY ça marche" comme première et unique ligne si le bas de votre nano fenêtre indique New File ... eh bien ... je ne sais pas

vous pouvez également vérifier votre entrée récemment crontab pour user1 à l’adresse:/var/spool/cron/crontabs/user1

PAIX

1
user220364

Parfois, vous voudrez peut-être que l'utilisateur charge son environnement, surtout s'il utilise "rbenv", "nvm", comme ceci:

0 0 * * * source ~/.bash_profile && cd /opt/app/current && bundle exec Ruby ...

(ici la commande source ~/.bash_profile chargera votre environnement Ruby ou Node.

0