Я пытаюсь настроить среду общего хостинга, где пользователям предоставляется доступ 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
на jail /var/www/
, разрешить им аутентификацию по паролю и добавить ForceCommand internal-sftp
. Затем я бы установил списки контроля доступа по умолчанию рекурсивно для папок внутри, /var/www/
чтобы нужные пользователи имели доступ к нужным каталогам. Но что мне установить в качестве владельца пользователя и группы для папок? Нужно ли мне настраивать umask? Каковы соответствующие пользователь и группа для соответствующего экземпляра пула PHP-FPM?