Linux

nginx - 具有使用者權限的使用者目錄

  • December 30, 2014

我想要做的是讓通常的伺服器執行這樣的使用者文件:

http://users.example.com/~user1/stuff.php

它將儲存在某處/home/user1/www或類似的地方,但以該使用者的權限執行。因此,目錄中的腳本/home/user1/www無法訪問目錄中的文件/文件夾/home/user2/www(除非 UNIX 權限允許)。

閱讀了一個使用虛擬主機的解決方案,並為每個虛擬主機創建了一個新池,但對於數百名使用者來說,這可能會很重。有什麼解決方法嗎?

請注意,我在 Raspberry Pi 中執行 nginx,所以這只是一個家庭項目,沒什麼大不了的。

由於 nginx 不直接執行 php,而是將請求轉發到 php 應用程序,因此您關心 php 二進製文件的執行方式。我假設您正在執行 php-fpm,但總體構想並不特定於 php-fpm。

php-fpm的配置頁面顯示了可以設置的指令。我們對usergroup參數感興趣,因為它們控制 php 實例將作為什麼使用者和組執行(因此腳本將作為什麼權限執行)。該chroot指令也可能對創建安全系統感興趣(您可能希望將每個使用者限制為僅在 中可用的文件/home/user1/www,而不是目錄層次結構中更高的文件)。

如您所見,它們是基於每個池設置的。

因此,您可以創建多個池,每個使用者一個,並讓每個池在該使用者和組下執行。您也可以 chroot 到該使用者的 webroot。這是您連結的解決方案。

但是由於您必須為每個使用者設置一個新的 php-fpm 池,所以這不是您可以按需執行的操作。相反,將創建 php-fpm 池作為使用者創建過程的一部分。

引用自:https://unix.stackexchange.com/questions/176534