ubuntu – 在init脚本中切换用户?

这是我在Ubuntu工作站上的初始化脚本.我需要以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”和“p”的服务“foo”表示生产

这是init脚本的一部分. init脚本可以作为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
....

相关文章

1.安装过程出现0x00000000指令引用的0x00000000内存该内存不能为written 如果你安装的是inux系统 需要在...
写在全面:如果根据以下教程涉及到只读文件需要更改文件权限才能需修改文件内容,参考我的另一篇博客:...
写在前面:以下步骤中需要在终端输入命令,电脑端查看博客的朋友可以直接复制粘贴到终端,手机端查看的...
ubuntu16.04和18.04更换国内源 写在前面:安装好ubuntu双系统后,默认的软件更新源是国外的,在国内使用...
ubuntu双系统启动时卡死解决办法(在ubuntu16.04和18.04测试无误) 问题描述: 在安装完ubuntu双系统后...
又来造轮子了。。。。。。。。。。。。。。。。 今天使用w3af向文件中写入的时候,发现没有write权限,...