Назад | Перейти на главную страницу

Под каким пользователем должны работать NGinx и PHP?

Разрешения - это то, что меня некоторое время смущало с Linux. Итак, в данный момент мои экземпляры NGinx и PHP-FPM работают с пользователем и группой:

www-data

Это стандарт? У меня проблемы, когда я сталкиваюсь с загрузкой файлов.

пример, файл будет загружен как с пользовательскими, так и с групповыми www-данными. Теперь, из-за того, как я установил разрешения (0440) в своем веб-приложении, я не могу войти через ssh с моей обычной учетной записью, чтобы загрузить эти файлы. Это не может быть изменено.

Я думал изменить свои экземпляры nginx и php, чтобы сохранить группу, но изменить их, чтобы они запускались под моим именем пользователя.

Как здесь правильно обрабатывать разрешения? Спасибо.

Вот как это работает: когда вы входите в систему через FTP / SSH и загружаете файлы, они создаются с вашими разрешениями. Вероятно, ваш корневой каталог доступен для записи (0777), что небезопасно - каждый пользователь в системе может что-то там написать. PHP работает с разными правами пользователя (они указаны в конфигурации PHP-FPM, а не в конфигурации nginx), и, поскольку каталог доступен для записи всем, пользователь PHP (www-data) также может писать туда. Но владельцем этого файла является www-data, а не ваша учетная запись. Это две разные учетные записи на уровне разрешений файловой системы.

Я предлагаю вам создать выделенного пользователя с минимально возможными привилегиями, который будет владеть корневым веб-каталогом и будет использоваться для загрузки по FTP / SSH И запускать php. Вам следует изменить конфигурацию PHP-FPM, в разделе worker есть запись пользователя и конфигурация NGINX, чтобы вы могли сделать файлы своего веб-сайта нечитаемыми и более безопасными.

Не запускайте PHP с привилегированным пользователем (возможности sudo, права записи вне docroot), это может привести к нарушению безопасности сервера.

В www-data пользователь и группа вполне стандартные. Это может быть www или web в других системах, но идея та же: запускать веб-службы с выделенной учетной записью. Таким образом, когда ваш веб-сервер скомпрометирован, злоумышленник сможет получить доступ только к файлам, предоставленным этой учетной записи.

Если пользователь должен управлять веб-службами, вы должны добавить пользователя в соответствующую группу (www-data) или разрешить ему использовать su (или sudo) для соответствующего пользователя (все еще www-data).

Я стараюсь избегать того, чтобы сценарии выполнения nginx / php принадлежали как www-data по соображениям безопасности.