gpt4 book ai didi

bash - 以非 root 用户身份启动服务

转载 作者:行者123 更新时间:2023-12-04 18:34:24 27 4
gpt4 key购买 nike

有人可以帮助我们了解如何以服务用户的身份正确启动我们的程序服务(例如 marty)。

我们正在使用 init.d 启动我们的进程(java 应用程序),但是当系统启动(Ubuntu 和 Debian)时,因为服务脚本以 root 身份运行,我们遇到了应用程序以 root 身份启动的问题PID文件也是由root创建的,这把事情搞砸了。

我们尝试使用 sudo,但这不是一个很好的解决方案,因为我们不希望 sudo 进程与我们的应用程序作为子进程一起运行,而且我们需要它在可能没有 sudo 的其他系统上工作。请帮忙。

最佳答案

在初始化脚本中,您可以检查调用用户的 $UID。

如果是 root,您可以使用“runuser”运行该服务。如果它是 marty - 直接运行它,如果它是另一个用户 - 例如退出并出现错误。

这是一些示例 bash(未经测试):

start() {
if [ $UID -eq 0 ]; then
runuser -s /bin/bash marty -c "$DAEMON start $DAEMONOPTS"
elif [ "$USER" = "marty" ]; then
$DAEMON start $DAEMONOPTS
else
print "Please run me with root or marty."
exit 2
fi
}

与停止和任何其他需要的功能相同。

如有必要,请随意修改 runuser 命令,例如,您可能不需要 shell。

关于bash - 以非 root 用户身份启动服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28752033/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com