在ExecStart中使用sudo(systemd)

时间:2016-04-30 20:25:31

标签: node.js express digital-ocean production systemd

我正在尝试在端口80上使用node.js站点(我正在使用Digital Ocean)。我使用systemd和服务文件

这样做
...
ExecStart=/usr/bin/nodejs /var/www/bin/app.js
...

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

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

干杯,迈克

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:4)

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

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

...
ExecStart=/usr/bin/sudo /usr/bin/nodejs /var/www/bin/app.js
...