在 /var/run 中写入 PID 文件需要什么权限?

s58*_*804 57 ubuntu permissions root pid

在 Ubuntu 上:

touch: cannot touch `/var/run/test.pid': Permission denied
Run Code Online (Sandbox Code Playgroud)

我正在启动 start-stop-daemon 并且喜欢将 PID 文件写入 /var/run start-stop-daemon is run as my-program-user

/var/run setting is drwxr-xr-x  9 root  root
Run Code Online (Sandbox Code Playgroud)

我喜欢避免将 my-program-user 放在根组中。

小智 84

默认情况下,您只能以有效用户 ID 为 0 的用户(即 root 用户)的身份写入 /var/run。这是有充分理由的,所以无论您做什么,都不要去更改 /var/run 的权限...相反,以 root 身份/var/run创建一个目录:

# mkdir /var/run/mydaemon

然后将其所有权更改为您希望在其下运行流程的用户/组:

# chown myuser:myuser /var/run/mydaemon

现在指定使用 /var/run/mydaemon 而不是 /var/run。

您始终可以通过以相关用户身份运行测试来对此进行测试。

  • 这不是一个完整的答案,默认情况下 /var/run 在 Ubuntu 上是 tmpfs。每次启动服务器时,都需要重新运行 mkdir 和 chown 命令。 (21认同)
  • 这对我来说很好,但是当我重新启动服务器时,`/var/run/mydaemon` 目录就消失了。 (8认同)

小智 14

mkdir /var/run/mydaemon
chown myuser:myuser /var/run/mydaemon
Run Code Online (Sandbox Code Playgroud)

这将不起作用,因为它会在下次重新启动时丢失(/var/run是 Ubuntu 上的 tmpfs)。

唯一可行的解​​决方案是将 mkdir 和 chmod 作为启动脚本的一部分运行。