When I execute shell, but it is carried out by cron "sudo: sorry, you must have a tty to run sudo" appears. but how should this have dealt?

link|improve this question

39% accept rate
feedback

3 Answers

up vote 1 down vote accepted

You don't need sudo to run programs as other users in cron (at least with the system crontab).

Just change the user field from root to the target user.

If you really want su does work in cron.

link|improve this answer
Nice!! I get It!, but "you must have a tty to run sudo" what ? what's tty? – freddiefujiwra May 27 '09 at 2:24
2  
Historically, tty is "teletype". Really the error means that sudo can only be run from an interactive shell. For example, a shell receiving its input from a teletype. – Kevin Beck May 27 '09 at 3:45
feedback

You can also simply reconfigure sudo to not require a tty by:

Editing (as root) the file

/etc/sudoers

And commenting out the line that says:

Defaults requiretty
link|improve this answer
feedback

You can add NOPASSWD: to the relevant entry in the sudoers file to stop it asking for a password, which I think will help.

You're better off running it from the crontab of the desired user in the first place, and avoiding the need for sudo.

To edit fred's crontab:

su - fred
crontab -e
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.