Как я могу принудить пользователя: групповое владение новыми файлами, написанными www-данными apache?
В качестве любезности мы размещаем файлы веб-сайтов наших клиентов. Каждый клиент имеет свою собственную учетную запись Linux, и файлы веб-сайта обслуживаются из /home/user/public_html.
Все файлы клиентов имеют право собственности на user:user
, Разрешения для учетных записей - 755, и это позволяет им загружать и управлять файлами через SSH, и Apache также может обслуживать файлы, поскольку у него есть доступ на чтение через разрешения "всем остальным". При такой настройке пользователи могут не беспокоиться о том, что другие пользователи могут изменять свои файлы.
Проблема возникает с Wordpress, Drupal или другой CMS, где программное обеспечение отвечает за самообновление, а управление файлами осуществляется через интерфейс веб-сайта (например, Media Library Wordpress).
Для этого пользователь или группа должны иметь права на запись. Многие решения в сети рекомендуют следующую настройку прав собственности и прав доступа к веб-файлам и каталогам, которые необходимо регулярно обновлять / модифицировать:
владение: пользователь:www-data permissions: 775 пользователь становится членом группы www-data
При такой настройке происходят две нежелательные вещи. Во-первых, поскольку они принадлежат к одной группе, пользователи теперь могут получать доступ к учетным записям других пользователей и, случайно или нет, изменять удаление или загружать файлы, что представляет небольшую угрозу безопасности, особенно если пользователь загружает плагин или модуль с вредоносным ПО. код.
Во-вторых, после загрузки изображения через интерфейс, например, этот файл теперь принадлежит www-data:www-data
и пользователь больше не может управлять этими файлами через ssh / ftp.
Есть ли способ заставить www-данные уважать право собственности на файлы, чтобы пользователь всегда был пользователем? Как правильно настроить Apache в многопользовательской среде, где Apache требуется доступ для записи, но я избегаю этих проблем с разрешениями и безопасностью?