配置 Systemd 服务以使用 root 访问权限运行

Luk*_*uke 36 linux daemon service systemd

我在 Raspbian Jessie 上使用 Systemd 设置了 node.js 应用程序形式的服务,它使用自己的用户帐户。但是,我发现该服务无法正常运行,因为它没有必要的权限。我安装的节点模块之一需要 root 访问权限。如果我使用 sudo 手动运行应用程序,一切正常。

有没有办法告诉 systemd 使用 sudo 运行服务?

HBr*_*ijn 43

告诉 systemd 使用sudo?

sudo 与它无关。

通常,您会在单元文件的部分中使用User=andGroup=指令指示 systemd 作为特定用户/组运行服务[Service]

将它们设置为 root(或删除它们,因为以 root 身份运行是默认设置)。

  • 以 root 身份运行与以 `User=root` 运行并不完全相同。看我的回答。 (4认同)
  • 我将其设置为使用特定用户,因为我正在使用指南来配置它。但就我而言,这是不合适的。我删除了它,默认以 root 身份运行,现在一切正常了! (2认同)
  • 哪里可以编辑这个文件? (2认同)

Mar*_*erg 26

需要明确的是,systemd系统服务默认以 root 身份运行,但默认行为与使用User=root.

正如在衍生进程中的环境变量中记录的那样,这些变量仅在设置时才User=设置:

$USER, $LOGNAME, $HOME, $SHELL
Run Code Online (Sandbox Code Playgroud)

我进行了测试以确认这一发现。因此,如果您想以 root 身份运行需要上述变量之一的 systemd 服务,则需要设置User=root.

  • 注意,如果您设置 User=root 您可能还应该设置 Group=root :) https://superuser.com/a/1452367/39364 (4认同)