I would like to run a cron job as a specific user on my machine. How may I specify the user for a cron job to run as?.

I am running on Ubuntu 10.0.4

[Edit]

The cron jobs will be running on a server. The 'users' are users that have been created specifically for carrying out specific server side tasks. These 'users' have the following in common:

  • Cannot log onto the system.
  • Have restricted access to specific folders/files.
link|improve this question

70% accept rate
feedback

2 Answers

up vote 4 down vote accepted

Assuming you can't just log in and add it to that user's crontab, put a file in /etc/cron.d. It should be formatted as a normal cronjob, but with an extra field. Before the command to run and after the timing, put the user. You should be able to find examples already on your system.

link|improve this answer
I think this is the correct answer. I will have to look for some examples and investigate some more. – morpheous Aug 2 '10 at 12:19
1  
Plus one from me, this is the best way to do what you want. More precisely look in /etc/crontab file and you will see, that after the time template and before the command there is "root" written there. This means that "root" runs those commands. Just add your own schedule and instead of "root" use any user. Also, note that if you use per user crontabs (as sugested by Eric D) you may loose the functionality of the system wide crontab (/etc/crontab and /etc/cron.d). – Patkos Csaba Aug 2 '10 at 12:25
feedback

As root, to edit the cron of user1:

crontab -u user1 -e

You can also start your command with:

su user1 -c foo bar

But often, the scripts themselves reduce their own access when started as root.

link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.