为什么在 USERNAME 设置为其他名称时服务以 root 身份运行

Why does service runs as root while USERNAME is set to something else

我正在使用 Upstart 为我的 Python 应用设置 Linux 服务。这是 /etc/init/

中的 conf 文件
description "AAE client app"

start on runlevel [2345]
stop on runlevel [!2345]

respawn

env PATH=/home/ec2-user/aae_client/env/bin
env PROGRAM_NAME="aae"
env USERNAME="ec2-user"

# Main script to be run
script
    echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Ready to run..." >> /var/log/$PROGRAM_NAME.sys.log

    export HOME="/home/ec2-user"
    echo $$ > /var/run/$PROGRAM_NAME.pid

    cd /home/ec2-user/aae_client
    exec python -m app.run >> /var/log/$PROGRAM_NAME.sys.log 2>&1
end script

我已经将 USERNAME 设置为 ec2-user。然而,当我 运行 服务时,它显示它是 root 的 运行。显然其他变量如 PATH 设置正确。为什么在指定 USERNAME 时它仍然 运行 为 root?

更改 USERNAME 甚至规范 USER 变量不会更改进程 运行 所在的上下文。看看 solutions over at SuperUser.