Quantcast
Channel: Switch user in a init script? - Stack Overflow
Viewing all articles
Browse latest Browse all 4

Answer by guettli for Switch user in a init script?

$
0
0

I use this:

su -l $MUSER -c "myCommand args..."

Update: Since there is interest in this answer, I explain the way I use it here.

We run servers as normal linux users, not root. The username contains three parts:

service, customer, stage

This way we can run several services for several customers in one linux OS.

Example: foo_bar_p Service "foo" of customer "bar" and "p" means production

Here is the part of the init script. The init script can be executed as root or as foo_bar_p user:

# /etc/init.d/foo_bar_p-celeryd# scriptname contains linux username  SCRIPT_NAME=`basename "$0"`SYSTEM=${SCRIPT_NAME%*-celeryd}U=`id -nu`if [ ! $U == $SYSTEM ]; then    if [ $U == "root" ]; then        # use "-l (login)" to delete the environment variables of the calling shell.        exec su -l $SYSTEM -c "$0 $@"    fi    echo "Script must be run from $SYSTEM or root. You are '$U'"    rc_exit 1fi# OK, now I am foo_bar_pcd. $HOME/.bashrc....

Viewing all articles
Browse latest Browse all 4

Trending Articles