Luke Asked: 2016-10-03 03:41:01 +0800 CST2016-10-03 03:41:01 +0800 CST 2016-10-03 03:41:01 +0800 CST 将 Systemd 服务配置为以 root 访问权限运行 772 我在 Raspbian Jessie 上使用 Systemd 设置了 node.js 应用程序形式的服务,它使用自己的用户帐户。但是,我发现该服务没有正确运行,因为它没有必要的权限。我安装的其中一个节点模块需要 root 访问权限。如果我使用 sudo 手动运行应用程序,一切正常。 有没有办法告诉 systemd 用 sudo 运行服务? linux service daemon systemd 4 个回答 Voted Best Answer HBruijn 2016-10-03T04:00:35+08:002016-10-03T04:00:35+08:00 告诉 systemd 运行服务sudo? sudo与它无关。 通常,您指示 systemd 以特定用户/组的身份运行服务,并在单元文件的部分中使用User=andGroup=指令。[Service] 将它们设置为 root(或删除它们,因为默认以 root 身份运行)。 Mark Stosberg 2018-05-02T05:38:21+08:002018-05-02T05:38:21+08:00 需要明确的是,systemd系统服务默认以 root 身份运行,但默认行为与使用User=root. 正如在衍生进程中的环境变量中所述,这些变量仅在设置时才User=设置: $USER, $LOGNAME, $HOME, $SHELL 我进行了测试以确认这一发现。因此,如果您想以需要上述变量之一的 root 身份运行 systemd 服务,则需要设置User=root. daino3 2018-10-25T18:34:29+08:002018-10-25T18:34:29+08:00 一个临时解决方案,但让它在紧要关头工作: /usr/bin/sudo /bin/bash -lc 'bundle exec rails server -e demo -p 80' 可以与在 systemd 单元文件中具有 sudo 权限的用户一起运行,如下所示: [Unit] Description=Rails Webserver After=syslog.target [Service] Type=simple User=ubuntu WorkingDirectory=/var/www/webserver ExecStart=/usr/bin/sudo /bin/bash -lc 'bundle exec rails server -e demo -p 80' Restart=always KillSignal=SIGQUIT [Install] WantedBy=multi-user.target Umut 2016-10-04T04:16:38+08:002016-10-04T04:16:38+08:00 在这种情况下,以系统用户身份运行它,默认情况下,服务以 root 身份运行。
sudo
与它无关。通常,您指示 systemd 以特定用户/组的身份运行服务,并在单元文件的部分中使用
User=
andGroup=
指令。[Service]
将它们设置为 root(或删除它们,因为默认以 root 身份运行)。
需要明确的是,
systemd
系统服务默认以 root 身份运行,但默认行为与使用User=root
.正如在衍生进程中的环境变量中所述,这些变量仅在设置时才
User=
设置:我进行了测试以确认这一发现。因此,如果您想以需要上述变量之一的 root 身份运行 systemd 服务,则需要设置
User=root
.一个临时解决方案,但让它在紧要关头工作:
可以与在 systemd 单元文件中具有 sudo 权限的用户一起运行,如下所示:
在这种情况下,以系统用户身份运行它,默认情况下,服务以 root 身份运行。