当不允许在 /var/run 中写入时,在哪里创建 AF_LOCAL/AF_UNIX 套接字文件?

当不允许在 /var/run 中写入时,在哪里创建 AF_LOCAL/AF_UNIX 套接字文件?

FSH 表示套接字和 pid 文件应该转到/var/run 但是,出于安全目的,只有 root 可以在此位置创建文件和子目录。

一个常见的解决方案是创建一个脚本子目录/var/run并对其进行 chmod ...但是当您无权访问 root 用户时该怎么办?

如果我没有 root 访问权限,我应该把 .socket (和 .pid)放在哪里?

答案1

在基于 systemd 的系统(例如 Arch Linux 和(最新的)Debian)上,服务需要通过向系统/run添加配置文件来告诉 systemd 它们想要一个目录。tmpfiles.d

默认情况下,这些存储在中/usr/lib/tmpfiles.d,但可以添加本地添加内容来/etc/tmpfiles.d覆盖默认值。

tmpfiles.d 工具可用于创建和清空目录、创建文件、符号链接、设备节点、套接字等。

例如:

# cat /usr/lib/tmpfiles.d/php-fpm.conf
d /run/php-fpm 755 root root

这指定创建一个目录/run/php-fpm,模式为 0755,所有者为 root,组为 root。该目录将在系统启动时或每次systemd-tmpfiles-setup服务重新启动。您也可以systemd-tmpfiles手动运行。

还有许多其他选项可用;检查tmpfiles.d 文档了解详细信息。

相关内容