我正在嘗試設定一個共享託管環境,其中用戶可以透過 SFTP 存取一個或多個資料夾。考慮以下場景:
/var/www/
包含幾個代表域的目錄。使用者可以根據ACL新增、修改或刪除目錄中的文件,因此使用者可以對和john
擁有完全存取權限,但不能存取.當然,同時網頁伺服器必須能夠讀取所有目錄中的檔案。/var/www/domain1.com
/var/www/domain2.org
/var/www/domain3.de
我不完全理解的是如何以這樣的方式保護一切,
- 所有使用者都被監禁
/var/www/
並且只能看到他們被允許查看的網域(子資料夾) - Apache 使用者
www-data
對所有資料夾僅有讀取權限 - PHP 對某些資料夾具有寫入權限,例如使用者上傳資料夾或日誌資料夾
/var/www/domain/
- 透過 SFTP 上傳的新檔案會自動獲得正確的權限,並且使用者能夠指定 PHP 可寫入的資料夾,而其他共用主機使用者無法存取
對於 PHP,我指的是 PHP-FPM 實例,每個網域都是單獨的條目,pool.d
而且使用者可以自由配置。
到目前為止,我的想法是添加一個名為 的群組sftp
,並將sshd
屬於該群組的用戶配置sftp
為監獄/var/www/
,允許對他們進行密碼身份驗證並添加ForceCommand internal-sftp
.然後,我會為內部資料夾遞歸設定預設 ACL,/var/www/
以便正確的使用者可以存取正確的目錄。但是我該如何設定資料夾的擁有者使用者和群組呢?我需要調整 umask 嗎?對應 PHP-FPM 池實例的適當使用者和群組是什麼?