非root用户的单位(用于命令启动/停止/启用/禁用)

时间:2012-04-18 09:08:58

标签: linux startup fedora16 systemd

我想在启动时通过systemd(操作系统是Fedora Core 16)从一些非root用户(例如michael)执行我的脚本。

我不需要root权限 - 我只想在启动时和关机时在systemd中的某些单位运行。我不想为此启用root用户。我只想使用systemd单位语法的强大功能来启动和观察我的进程(当然没有root访问权限)。有可能吗?

我在文档中找不到任何帮助。我只在systemd(1) -> DIRECTORIES -> "User unit directories"找到了

$ pkg-config systemd --variable=systemduserunitdir
/usr/lib/systemd/user

但是/usr/lib/systemd/user是:

  

drwxr-XR-X。 2根root

我无法想象如何将此目录用作非root用户...

2 个答案:

答案 0 :(得分:3)

This Arch Linux document may help.

  

systemd为用户提供了运行systemd实例的能力   管理他们的会话和服务。这允许用户启动,停止,   启用和禁用在某些目录中找到的单位   systemd由用户运行。这对守护进程和其他方便   通常作为root或special之外的用户运行的服务   用户,例如mpd。

他们建议通过xinit启动系统--user实例,但我想你想要启动用户服务,无论用户是否登录。

我通常会通过在我的crontab中添加@reboot行来实现这一点。

From Wikipedia

  

如果需要启动服务器,@reboot会很有用   特定用户下的守护程序,用户无权访问   配置init以启动程序。

也许你可以通过@reboot !!!

启动systemd --user

答案 1 :(得分:2)

为“ michael”创建一个用户systemd单位文件。

这是确保用户systemd进程在启动而不是登录时启动的魔力:

loginctl enable-linger michael

Full details