我正在尝试在端口80上使用node.js站点(我正在使用Digital Ocean)。我使用systemd和服务文件
这样做...
ExecStart=/usr/bin/nodejs /var/www/bin/app.js
...
在localhost上,如果我使用sudo启动网站,这在端口80上工作正常,但不是没有sudo。显然,您需要以root身份运行1024以下的端口。
如何在ExecStart中允许sudo?或者我在这里完全错误的方式,如果是这样,我如何在端口80上获得快速应用程序?
干杯,迈克
答案 0 :(得分:5)
Systemd默认以root身份启动ExecStart=
中所述的可执行文件。这意味着如果您未在我们的服务文件中指定User =或Group=
,则您的二进制文件将启动特权。
您可以通过启动ID或whoami程序来验证这一点。例如:ExecStart=/usr/bin/id
或ExecStart=/usr/bin/whoami
(请注意,程序的路径可能与您有所不同)
答案 1 :(得分:4)
默认情况下,Systemd以root身份启动ExecStart=
中所述的可执行文件。
但是,如果您在服务文件中指定了User=
或Group=
来覆盖该默认设置,并且仍然需要运行需要sudo
的可执行文件,请在命令前加上绝对路径到您的sudo
位置:
...
ExecStart=/usr/bin/sudo /usr/bin/nodejs /var/www/bin/app.js
...