Что такое PHP в безопасном режиме GID? - PullRequest
6 голосов
/ 11 августа 2008

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

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

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

Ответы [ 4 ]

2 голосов
/ 11 августа 2008

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

2 голосов
/ 28 августа 2008

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

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

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

1 голос
/ 23 сентября 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...