如何为应用程序创建服务用户并在启动时从该用户运行它

如何为应用程序创建服务用户并在启动时从该用户运行它

我有一个应用程序,应该在启动时运行。

我为该应用程序创建了系统用户,useradd -r serviceUser并让他成为应用程序目录的所有者。

然后我编写启动脚本并将其添加到自动启动中update-rc myserver.sh defaults

我的脚本/etc/init.d/myserver.sh

#!/bin/sh

start() {
  cd "/my_server_dir/"
  su -c "./myServer" serviceUser
}

if [ "x$1" = "xstart" ]
then
    start
    exit 0
fi

当我以真实登录用户身份运行它时 /etc/init.d/myserver.sh start,提示询问我密码。但我没有设置任何密码。

我认为自己在某些地方是错误的。

答案1

不确定您期望什么,调用时su总是会提示输入密码,除非您以 root 身份运行它(它会在不提示的情况下执行所有操作)或使用 sudo 运行它(它会提示您的用户密码)。

因此,如果您想使用 su -c 来使用该 serviceUser 且不需要 sudo 权限,请运行sudo passwd serviceUser并设置密码。

相关内容