Filesystems

不允許在 /var/run 中寫入時在哪裡創建 AF_LOCAL/AF_UNIX 套接字文件?

  • July 26, 2015

FSH 說 socket 和 pid 文件應該去/var/run 但是,為了安全起見,只有 root 可以在這個位置創建文件和子目錄。

一個常見的解決方案是為其中的腳本創建一個子目錄/var/run並對其進行十個 chmod…但是當您無權訪問 root 使用者時該怎麼辦?

如果我無權訪問 root ,我應該在哪裡放置 .socket (和 .pid)?

在基於 systemd 的系統上,例如 Arch Linux 和(最新的)Debian,服務應該/run通過向系統添加tmpfiles.d配置文件來告訴 systemd 他們想要一個目錄。

預設情況下,這些儲存在 中/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 文件以獲取完整的詳細資訊。

引用自:https://serverfault.com/questions/708597