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

Hoe kan ik een cron job uitvoeren als een specifieke gebruiker?

Ik wil een cron job uitvoeren als een specifieke gebruiker op mijn machine. Hoe kan ik aangeven als welke gebruiker een crontaak moet worden uitgevoerd?

De cron jobs zullen op een server draaien (die op Ubuntu 10.0.4 draait). De ‘gebruikers’ zijn gebruikers die speciaal zijn aangemaakt om specifieke server taken uit te voeren. Deze ‘gebruikers’ hebben het volgende gemeen:

  • Kunnen niet inloggen op het systeem
  • Hebben beperkte toegang tot specifieke mappen/bestanden

Antwoorden (4)

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

Ervan uitgaande dat je niet gewoon kan inloggen en het toevoegen aan de crontab van die gebruiker, zet een bestand in /etc/cron.d. Het moet geformatteerd zijn als een normale cronjob, maar met een extra veld. Voor het uit te voeren commando en na de timing, zet je de gebruiker. Je zou in staat moeten zijn om al voorbeelden te vinden op je systeem.

Voorbeeld:

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

Als root, om de cron van user1 te bewerken:

crontab -u user1 -e

Je kunt je commando ook starten met:

su user1 -c foo bar

Maar vaak beperken de scripts zelf hun toegang als ze als root gestart worden.

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

Ik ben hier al een paar weken naar op zoek en dit werkte eindelijk…

Maak je script aan als user1

ssh user1@ipaddress
nano hourly-event.sh

voer een of ander commando in

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

maak het uitvoerbaar

chmod 755 hourly-event.sh

bewerk de crontab voor user1

sudo crontab -u user1 -e

zet een regel onderaan die naar je script(s) wijst

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

exit - wijzigingen opslaan (het zal een /tmp directory tonen bij het opslaan. … het is ok)

wacht op de minuutwisseling

open je nieuw aangemaakte yay.txt

nano /home/user1/yay.txt

je zou nu een nano venster open moeten hebben met “YAY it works” als de eerste en enige regel als er onderaan je nano venster staat New File… well… i dunno

je kunt ook je nieuwe crontab entry voor user1 controleren op: /var/spool/cron/crontabs/user1

PEACE

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

Soms wil je dat de gebruiker zijn omgeving laadt, vooral als hij “rbenv”, “nvm” gebruikt, net als dit :

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

(hier zal het commando source ~/.bash_profile je Ruby of Node omgeving laden.