在/ var / run中写入PID文件有什么权限

Ubuntu的

触摸:不能触摸`/var/run/test.pid':权限被拒绝

我正在启动start-stop-daemon并且喜欢在/ var / run中写入PID文件start-stop-daemon作为my-program-user运行

/ var / run设置是drwxr-xr-x 9根

我喜欢避免将我的程序用户放在根组中。

默认情况下,只能以有效用户ID为0的用户身份(即以root身份)写入/ var / run。 这是有原因的,所以无论你做什么,都不要去改变/ var / run的权限…而是以root身份 / var / run目录创build一个目录。

# mkdir /var/run/mydaemon

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

# chown myuser:myuser /var/run/mydaemon

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

您可以随时以相关用户的身份运行testing来testing此function。

 mkdir /var/run/mydaemon chown myuser:myuser /var/run/mydaemon 

这是行不通的,因为它会在下一次重启时丢失( /var/run是Ubuntu上的tmpfs)。

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

你可以试试这个 创build一个目录/ var / run / test /,然后将该目录的权限更改为与程序运行时相同的用户。 “chown / var / run / test /”。 现在在您的应用程序中将PID文件的位置更改为/var/run/test/test.pid。 这应该让你的工作。

那么在/ var / run上使用“sticky”位呢?

chmod + t / var / run?

可能弄乱一些其他的应用程序,但它似乎是另一种解决scheme。

不过我现在要坚持创build一个单独的/ var / run文件夹。

/etc/permissions中的条目是永久的。 在那里做一个条目,使目录的所有权和权限永久。

为了避免将程序用户放入根组,请允许他人写入权限:

 # chmod 757