Automatically re-start script as root
April 17th, 2008 by Mitch Frazier in
If you use sudo you can automatically re-start scripts that need to be run as root by adding a check at the beginning of the script and executing sudo if the script is not running as root:
if [[ $UID -ne 0 ]]; then
sudo -p 'Restarting as root, password: ' bash $0 "$@"
exit $?
fi
The inclusion of "bash" in the sudo command is to avoid problems if the script does not have its execute bit set. The "exit $?" causes the shell to exit with the status from the script instance that sudo runs.
__________________________Mitch Frazier is the System Administrator at Linux Journal.
Subscribe now!
Breaking News
| Charter Trades Privacy for Pocketbook | 18 hours 14 min ago |
| SSL Glitch Unlocks Debian, Ubuntu, & Others | 1 day 17 hours ago |
| MySpace Cashes in Spam to the Tune of $234 Million | 1 day 19 hours ago |
| Google Shoos the Trustbusters Away | 2 days 16 hours ago |
Featured Video
Linux Journal Gadget Guy, Shawn Powers, takes us through installing Ubuntu on a machine running Windows with the Wubi installer.
Delicious
Digg
Reddit
Newsvine
Technorati






Thanks Mitch!
On April 18th, 2008 FredR says:
Ever have one of those moments where you read something and it acts as a catalyst to remind you of something else?
This article reminded me that I had a service, that no matter what, would run as root, and I wanted it to run as the "nobody" user. That service is MRTG (and it's actually an older version from 2003 I've been using for a while). It makes me nervous because the daemon will just stop after a while.
It comes out it wasn't parsing the command line options correctly (I had -user=nobody instead of --user=nobody) and I was putting the process in the background with the `&' symbol instead of the --daemon option.
My mrtg is now correctly, (after all these years), running as "nobody" again.
My experience is almost irrelevant because of the fact that, as a perl script there are conventions within it to force the daemon to be ran as a particular user, in the script itself.
__________________________-- FLR or flrichar is a superfan of Linux Journal and can be found goofing around on the LJ IRC Channel