如何在启动时以非 root 用户身份运行服务,而无需输入密码?

如何在启动时以非 root 用户身份运行服务,而无需输入密码?

我有一个进程,我想在主机启动时启动它。我希望该进程以非 root 用户身份运行。而且当它启动时,我不一定会在 tty 上输入密码。这是我的systemd服务文件:

[Unit]
Description=Nethermind Node
Documentation=https://docs.nethermind.io
After=network.target

[Service]
User=nethermind
Group=nethermind
EnvironmentFile=/data/nethermind/.env
WorkingDirectory=/data/nethermind
ExecStart=/usr/bin/nethermind --datadir /data/nethermind
Restart=on-failure
LimitNOFILE=1000000

[Install]
WantedBy=default.target

nethermind用户存在,是 sudoers 组的成员,并且目前有密码。当用户没有密码时,我也测试过这一点。

当我启动服务(service以 root 身份运行)时得到的结果如下:

$ sudo service nethermind start
$ journalctl -u nethermind -f
Aug 24 03:20:45 stake sudo[1725]: pam_unix(sudo:auth): conversation failed
Aug 24 03:20:45 stake nethermind[1725]: sudo: a password is required
Aug 24 03:20:45 stake sudo[1725]: pam_unix(sudo:auth): auth could not identify password for [nethermind]
Aug 24 03:20:45 stake systemd[1]: nethermind.service: Main process exited, code=exited, status=1/FAILURE
Aug 24 03:20:45 stake systemd[1]: nethermind.service: Failed with result 'exit-code'.
Aug 24 03:20:45 stake systemd[1]: nethermind.service: Scheduled restart job, restart counter is at 5.
Aug 24 03:20:45 stake systemd[1]: Stopped Nethermind Node.
Aug 24 03:20:45 stake systemd[1]: nethermind.service: Start request repeated too quickly.
Aug 24 03:20:45 stake systemd[1]: nethermind.service: Failed with result 'exit-code'.
Aug 24 03:20:45 stake systemd[1]: Failed to start Nethermind Node.

这是否意味着可执行文件正在尝试对自身执行 sudo 操作?对我来说,在这种情况下我需要为用户输入密码,这是有道理的nethermind,但我希望它以非交互方式运行。

这可能吗?

答案1

问题是由于这个错误在 Nethermind 中。usr/bin/nethermind实际上只是包装器,并且包装器尝试 sudo。

为了解决这个问题,只需直接运行“真正的” Nethermind 可执行文件:

/usr/share/nethermind/Nethermind.Runner --datadir ...

答案2

/sbin/runuser您可能想在服务文件中尝试命令。我将其用于 ssh 隧道。所以它会像这样。

ExecStart=/sbin/runuser -l nethermind -c "/usr/bin/nethermind --datadir /data/nethermind"

然后您可以编辑/etc/sudoers文件以让nethermind用户nethermind无需密码即可运行命令。

nethermind ALL=(ALL:ALL) NOPASSWD: /usr/bin/nethermind

那么您可能需要/usr/bin/sudoExecStart服务文件中列出这些内容。

相关内容