Разрешения на доступ к файлам для среды общего хостинга

Разрешения на доступ к файлам для среды общего хостинга

Я пытаюсь настроить среду общего хостинга, где пользователям предоставляется доступ 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?

Связанный контент