Slexy.org is shutting down and stopped accepting new Pastes on May 4th, 2021.
Existing Pastes will stop being available on or after May 10th, 2021.
Author: cgr Language: text
Description: Not specified Timestamp: 2017-06-28 16:52:38 +0000
View raw paste Reply
How to run a cron job using the sudo command


up vote
73
down vote
favorite
25
Is it possible to run a cron job which needs the sudo command?

Like:

 sudo rm somefile
cron
shareimprove this question
edited Jan 10 '14 at 17:57

Peter Mortensen
1,03421015
asked Aug 9 '12 at 17:51

sayem siam
471155
               
Welcome Sayem Siam, Have a look at the answers to this question askubuntu.com/questions/2368/how-do-i-setup-cron-job. as I think your question has been asked before here on AU stephenmyall Aug 9 '12 at 17:56
1              
I am trying to execute sudo which needs password but how can i giv password from cron file sayem siam Aug 9 '12 at 17:59
2              
@sayemsiam you don't need to put sudo, just edit the root crontab. Braiam Dec 6 '13 at 12:21
add a comment
3 Answers
active oldest votes
up vote
149
down vote
accepted
I won't get into how much this is a bad idea; simply put, running sudoin crontab requires your password to be stored somewhere in plaintext.

It's a bad idea.

The following is the preferred method of running administrative tasks through cron. Since you don't really need to write sudo in the crontab, if you are modifying root's crontab.

Use root's crontab

Run the following command:

sudo crontab -e
This opens up root's crontab. sudo is not necessary to run your command in this context, since it'll be invoked as root anyway.

Therefore, you would simply append the following to root's crontab.

@hourly rm somefile
Now, if you absolutely want to be unsafe and take risks with your password, the following will run your command from your own crontab, and enter your password automatically when prompted by sudo.

Again, this is not recommended.

In your own crontab, write your command like so:

@hourly echo "password" | sudo -S rm somefile
The obvious disadvantage here is that, should anyone ever access your crontab, your password will be readable in plaintext.

You shouldn't do this.

shareimprove this answer
edited Dec 6 '13 at 12:22

Braiam
43.6k16108174
answered Aug 9 '12 at 18:03

SirCharlo
23.5k75067
               
I got it, thanks a lot sayem siam Aug 9 '12 at 18:11
1              
Glad it works! Just be wary of any security holes you leave behind.. They might come back later to haunt you. SirCharlo Aug 9 '12 at 18:15
1              
@SirCharlo Why use root's user crontab instead of the systemwide crontab /etc/crontab? Eliah Kagan Aug 10 '12 at 3:47
1              
@Elijah why not? SirCharlo Aug 11 '12 at 4:43
add a comment

up vote
18
down vote
If you are putting the script from one of the cron directories (/etc/cron.*) then you don't need to use sudo as that is running as root.

If you are using crontab, then you will want to use root's crontab. This will run it as root, and also not need sudo.

sudo crontab -e
shareimprove this answer
answered Aug 9 '12 at 18:02

tgm4883
6,10922033
               
I would also place the command in /etc/cron.hourly/something. That's what these directories are for. John S Gruber Aug 23 '12 at 15:37
2              
No. You could put it in /etc/cron.SOMETHING/SCRIPT, but I wouldn't do both. Both would give roughly the same function, although using crontab you would have a bit more power over how often/when things run. tgm4883 Aug 23 '12 at 17:40
               
I should have made clear that I meant that as an alternative. Thanks. John S Gruber Aug 23 '12 at 17:43
add a comment
up vote
0
down vote
Run following command in terminal

sudo visudo
Added the following line to the end of the file:

vidyadhar  ALL= NOPASSWD: /bin/rm
In the above example vidyadhar is the username and it will not ask for password if you are running rm command through vidyadhar.

 
View raw paste Reply