2010-08-02 11:50:25 +0000 2010-08-02 11:50:25 +0000
68
68

Comment gérer un cron job en tant qu'utilisateur spécifique ?

Je voudrais exécuter un cron job en tant qu'utilisateur spécifique sur ma machine. Comment puis-je spécifier l'utilisateur sous lequel une tâche cron doit être exécutée ?

Les tâches cron seront exécutées sur un serveur (fonctionnant sous Ubuntu 10.0.4). Les “utilisateurs” sont des utilisateurs qui ont été créés spécifiquement pour effectuer des tâches spécifiques sur le serveur. Ces “utilisateurs” ont en commun les points suivants :

  • Ne peuvent pas se connecter au système
  • Ont un accès restreint à des dossiers/fichiers spécifiques

Réponses (4)

80
80
80
2010-08-02 11:52:46 +0000

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

Exemple:

#<timing> <user> <command>
11 * * * * root /usr/lib/command
41
41
41
2010-08-02 11:58:55 +0000

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

crontab -u user1 -e

Vous pouvez également commencer votre commande par

su user1 -c foo bar

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

1
1
1
2013-04-27 16:49:38 +0000

Je l'ai cherché pendant quelques semaines et ça a finalement marché…

Créez votre script en tant qu'utilisateur1

ssh user1@ipaddress
nano hourly-event.sh

entrez une commande

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

rendez le exécutable

chmod 755 hourly-event.sh

éditez la crontab pour l'utilisateur1

sudo crontab -u user1 -e

mettez une ligne en bas pointant sur votre (vos) script(s)

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

exit - l'enregistrement des modifications (un répertoire /tmp s'affiche lors de l'enregistrement. … c'est bon)

attendez le tournant de la minute

ouvrez votre nouveau fichier yay.txt

nano /home/user1/yay.txt

vous devriez maintenant avoir une fenêtre nano ouverte avec “YAY it works” comme première et seule ligne si le bas de votre fenêtre nano dit New File… et bien… i dunno

vous pouvez aussi vérifier votre nouvelle entrée crontab pour user1 at : /var/spool/cron/crontabs/user1

PEACE

0
0
0
2018-11-18 10:05:38 +0000

Parfois vous pouvez vouloir que l'utilisateur charge son environnement, en particulier en utilisant “rbenv”, “nvm”, juste comme ceci :

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

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