Filesystems
不允許在 /var/run 中寫入時在哪裡創建 AF_LOCAL/AF_UNIX 套接字文件?
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 文件以獲取完整的詳細資訊。