bash - 为什么在 USERNAME 设置为其他内容时服务以 root 身份运行
问题描述
我正在使用 Upstart 为我的 Python 应用程序设置 Linux 服务。这是conf
/etc/init/ 中的文件
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
变量都不会更改进程运行的上下文。请查看SuperUser 中的解决方案。
推荐阅读
- r - 闪亮的 DTedit,根据第二个 DTedit 表中的 rows_selected 状态显示或隐藏插入/新按钮
- c++ - 为什么使用自定义比较器交换相同类型的标准库容器时会发生此错误?
- ionic-framework - 创建自定义 Android 插件:java.lang.NullPointerException(无错误消息)
- c# - 如何使用 System.Reflection 确定属性是否是我定义的类之一
- html - 使用 awk 命令创建 html 页面
- sql - 尝试通过 Access-VBA 代码更新 Excel-Table。错误:找不到数据库对象“Ware”
- database - 这个 DynamoDb 查询“查询条件缺少关键架构元素”有什么问题
- javascript - 我无法发送指定消息
- ruby-on-rails - 我想批准提出的意见。Ruby On Rails
- python - 堆栈和队列亚马逊面试问题