Что такое GID безопасного режима PHP?

Согласно Документы по безопасному режиму PHP на safe_mode_gid:

By default, Safe Mode does a UID compare check when opening files. If you want to relax this to a GID compare, then turn on safe_mode_gid. Whether to use UID (FALSE) or GID (TRUE) checking upon file access.

В чем разница между проверкой UID (идентификатора пользователя) и проверкой GID (идентификатора группы) для сценария PHP, работающего на веб-сервере?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
8
0
4 562
4

Ответы 4

Проверка UID в безопасном режиме используется для предотвращения доступа пользователей к файлам других людей. GID используется для предотвращения доступа ГРУППЫ пользователей к другим файлам ГРУПП.

Это просто даст вам немного больше гибкости в настройке вашего веб-сервера. Используя safe_mode_gid, вы должны иметь возможность запускать отдельные процессы PHP / httpd для каждого пользователя в вашей системе, но дать каждому процессу возможность читать некоторые общие файлы, если все они выполняются как одна и та же группа (GID) и общие файлы. принадлежат этой группе.

Например, имя пользователя и группа веб-сервера - apache: www,

если вы установите для проверки UID, процесс php будет иметь доступ только к любому файлу, принадлежащему пользователю апач. Поэтому, если у вас есть другой веб-сервер, работающий в вашей системе, например tomcat с именем пользователя и группой кот: www, любые файлы, созданные процессом tomcat, не будут доступны для php, потому что он принадлежит пользователю Кот.

Но если вы вместо этого используете проверку GID, файлы, созданные процессом tomcat, будут доступны для чтения процессом php, потому что они принадлежат той же группе www

Большинство ответов не совсем верны или подробны ... Не забывайте, что safe_mode проверяет, совпадает ли владелец SCRIPT с владельцем файла, к которому вы хотите получить доступ. Это не имеет ничего общего с httpd user: group.

Например, ваш httpd может работать как apache:daemon, ваш скрипт принадлежит some_user:users, а файл, который вы хотите записать в some_other_user:users.

Если вы не активируете safe_mode_gid, скрипт не сможет получить доступ к файлу, потому что пользователи не совпадают.

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

Создание папки выполнено успешно, поскольку родительская папка принадлежит тому же пользователю, что и сценарий, создавший ее (скорее всего, она была загружена пользователем some_user).

НО, созданная папка теперь принадлежит пользователю httpd, скажем apache:daemon

Если safe_mode активен, вы не сможете создать файл внутри этой папки, потому что владелец скрипта (some_user) не совпадает с владельцем папки (apache).

Даже если вы активируете safe_mode_gid, это не сработает, потому что группа сценариев - это «пользователи», а группа папок - «демон».

Лучшее решение - установить одну и ту же группу для пользователей ftp и httpd. Не забывайте, что вам необходимо разрешить доступ для записи группе в «доступной для записи» папке, и это менее безопасно, потому что, поскольку все ваши пользователи находятся в одной группе, процесс httpd может получить доступ к файлам других пользователей после активации safe_mode_gid. .

Фактически вы должны объединить safe_mode_gid + open_basedir и установить домашний адрес пользователя как значение open_basedire, чтобы избежать этого.

HTH

Другие вопросы по теме