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

В соответствии с документами PHP в безопасном режиме на safe_mode_gid:

По умолчанию безопасный режим выполняет сравнение UID при открытии файлов. Если вы хотите уменьшить сравнение GID, включите safe_mode_gid. Использовать ли проверку UID (FALSE) или GID (TRUE) при доступе к файлу.

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

11.08.2008 15:12:53
4 ОТВЕТА

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

1
11.08.2008 15:30:23

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

2
11.08.2008 16:05:07

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

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

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

2
28.08.2008 01:46:35

Большинство ответов не совсем точные или подробные ... Не забудьте safe_modeпроверить, совпадает ли владелец сценария с владельцем файла, к которому вы хотите получить доступ. Это не имеет ничего общего с 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значения, чтобы избежать этого.

НТН

1
3.12.2015 21:50:23