系统守护程序的PID文件的首选位置以非root用户身份运行

Fli*_*mzy 8 linux security daemon locking pid

我的问题与此问题有关,但有问题的过程是从cron和非root用户运行的.因此,许多用户实际上没有家庭目录(或者他们的家庭目标指向/usr/share/package_name哪个不是PID文件的理想位置).

存储/var/run是有问题的,因为除了root之外,该目录不可写.

我可以使用/tmp,但我想知道这是否是出于安全考虑的理想选择.

我可以安排一个启动脚本来创建一个目录,/var/run其中由相应的用户拥有(我不能在包安装时执行此操作,因为/var通常作为tmpfs挂载,因此不是持久的).

这里的最佳做法是什么?

hek*_*mgl 4

好问题:),我现在也有同样的问题。我不确定这是否是正确的答案,但我希望它有所帮助,并且我也希望得到反馈。

我用 google 搜索了一下,发现将每个用户守护进程注册为 dbus 服务是一个优雅的解决方案。dbus 可以确保服务只运行一次。不需要 pid 文件。

另一个解决方案(我当前的)是在如下目录中创建 PID 文件:

$HOME/.yourdaemon/pid
Run Code Online (Sandbox Code Playgroud)

在你发表评论后我意识到你不能写信回家。我建议研究一下 dbus

更新

我有个主意。如果您使用 /tmp,但正在寻找名为 yourdaemon.pid.UNIQUE_KEY 并由守护程序用户拥有的 pid 文件,该怎么办?这应该可以正常工作。

UNIQUE_KEY应该是随机生成的(首选使用 tempnam,因为它是竞争条件证明)。