在ExecStart中使用sudo(systemd)

Mik*_*ike 6 production node.js express systemd digital-ocean

我想在端口80上使用node.js站点(我正在使用Digital Ocean).我使用systemd和服务文件这样做

...
ExecStart=/usr/bin/nodejs /var/www/bin/app.js
...
Run Code Online (Sandbox Code Playgroud)

在localhost上,如果我使用sudo启动网站,这在端口80上工作正常,但不是没有sudo.显然,您需要以root身份运行1024以下的端口.

如何在ExecStart中允许sudo?或者我在这里完全错误的方式,如果是这样,我如何在端口80上获得快速应用程序?

干杯,迈克

nas*_*san 7

Systemd ExecStart=默认情况下以root身份启动可执行文件。

但是,如果您已指定User=Group=在您的服务文件中覆盖该默认设置,并且仍然需要运行需要执行的可执行文件,则sudo在命令前添加到您sudo所在位置的绝对路径:

...
ExecStart=/usr/bin/sudo /usr/bin/nodejs /var/www/bin/app.js
...
Run Code Online (Sandbox Code Playgroud)


Umu*_*mut 6

Systemd ExecStart=默认以root身份启动可执行文件.这意味着如果您尚未指定User =或Group=在我们的服务文件中,则您的二进制文件将启动特权.

您可以通过启动id或whoami程序来验证这一点.例如:ExecStart=/usr/bin/idExecStart=/usr/bin/whoami(注意程序的路径可能与您不同)