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 an Associate Editor for Linux Journal and the Web Editor for linuxjournal.com.
Special Magazine Offer -- Free Gift with Subscription
Receive a free digital copy of Linux Journal's System Administration Special Edition as well as instant online access to current and past issues. CLICK HERE for offer
Linux Journal: delivering readers the advice and inspiration they need to get the most out of their Linux systems since 1994.
Subscribe now!
The Latest
Newsletter
Tech Tip Videos
- Jul-01-09
- Jun-29-09
Recently Popular
From the Magazine
July 2009, #183
News Flash: Linux Kernel 3.0 to include an on-the-go Expresso machine interface! Ok, maybe not, but Linux is definitely going mobile, from phones to e-readers. Find out more inside about Android, the Kindle 2, the Western Digital MyBook II, The Bug, and Indamixx (a portable recording studio). And if you've gone mobile and you been wanting more Emacs in your life then check out Conkeror.
To compliment the mobile we've got the stationary: parsing command line options with getopt, checking your Ruby code with metric_fu, and building a secure Squid proxy. How is this stationary you ask? What can we say? It's not. We just wanted to see if anybody actually read this part of the page :) .
All this and more, and all you have to do is get your hot sweaty hands on the latest copy of Linux Journal.
Delicious
Digg
StumbleUpon
Reddit
Facebook








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 goofs around in the LJ IRC Channel
Post new comment