I'm writing an init script which is supposed to execute a single command as a user different than root. This is how I'm doing it currently:
sudo -u username command
This generally works as expected on Ubuntu/Debian, but on RHEL the script which is executed as the
Is there another way to run the command as another user?
(Note that I can't use lsb init functions as they're not available on RHEL/Centos 5.x.)
On RHEL systems, the
/etc/rc.d/init.d/functions script is intended to provide similar to what you want. If you source that at the top of your init script, all of it's functions become available.
The specific function provided to help with this is
daemon. If you are intending to use it to start a daemon-like program, a simple usage would be:
daemon --user=username command
If that is too heavy-handed for what you need, there is
man runuser for full info; some versions may need
-u prior to the username):
/sbin/runuser username -s /bin/bash -c "command(s) to run as user username"