I have a script running under a non-root user which, under certain conditions, should restart apache httpd.
What would be the simplest way for me to allow the user to do that?
I'm using Ubuntu Server 8.04 LTS.
If you want to not have to type in a password before you do this, use the following:
After this, the 'username' user can execute
Long answer: You'll likely want to setup a separate user for this if you haven't already, and then configure the /etc/sudoers file to allow a user or group to execute the command you want.
For example, to allow the user 'ben' to execute all commands as root prompting for a password, you would do the following:
To allow 'ben' to execute only one command (like say,
If you are running a script as a user and don't want to prompt for a password, you'll want to use the 'NOPASSWD' option like so:
You can do the same thing for groups by prefixing group names with a percentage sign, like so:
Short answer: sudo.
The call would look similar to the following:
Easiest is to use
You can also accomplish this by writing a wrapper to apache2ctl, assigning group ownership to a web administration group and setting the suid bit. This is a less general solution than visudo, but allows custom limitations on user abilities and error checking.
I wrote this tool for my own needs and have shared it on github: https://github.com/josiahjohnston/ltd_apache2ctl