2008-08-11 4 views
6

Согласно PHP Safe Mode Docs на safe_mode_gid:Что такое безопасный режим PHP GID?

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

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

ответ

1

Безопасный режим Проверка UID используется для предотвращения доступа пользователей к файлам других народов. GID используется для предотвращения доступа группы пользователей к другим файлам GROUPS.

2

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

2

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

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

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

1

Большинство ответов не совсем так или подробный .. Не забывайте, что 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) Безразлично 't соответствует владельцу папки (apache).

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

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

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

HTH

Смежные вопросы