我正在尝试设置一个共享托管环境,其中用户可以对一个或多个文件夹进行 SFTP 访问。考虑以下场景:
/var/www/
包含多个代表域的目录。用户可以基于 ACL 添加、修改或删除目录中的文件,因此用户john
可以完全访问/var/www/domain1.com
和 ,/var/www/domain2.org
但不能/var/www/domain3.de
。当然,同时 Web 服务器必须能够读取所有目录中的文件。
我不完全明白如何确保一切安全,
- 所有用户都被限制在
/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 池实例的适当用户和组是什么?