这是我在Ubuntu工作站上拥有的Init脚本。我需要以root用户以外的其他用户身份运行命令,但是我只是无法理解应该如何执行。 sudo -u
或su newuser
似乎都无效。
剧本:
respawn
console none
start on runlevel [2345]
stop on runlevel [06]
script
su "anotherUser" -c ./myCommand
end script
最佳答案
我用这个:
su -l $MUSER -c "myCommand args..."
更新:由于对此答案感兴趣,因此我在这里解释了使用它的方式。
我们以普通的Linux用户而不是root用户的身份运行服务器。用户名包含三个部分:
服务,客户,舞台
这样,我们可以在一个Linux操作系统中为多个客户运行多种服务。
示例:foo_bar_p客户“bar”的服务“foo”,“p”表示生产
这是初始化脚本的一部分。初始化脚本可以以root或foo_bar_p用户身份执行:
# /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 1
fi
# OK, now I am foo_bar_p
cd
. $HOME/.bashrc
....
关于ubuntu - 在初始化脚本中切换用户?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8940771/