Модуль Apache mod_authz_owner
| Описание: | Авторизация на основе владения файлом |
|---|---|
| Статус: | Расширение |
| Идентификатор модуля: | authz_owner_module |
| Исходный файл: | mod_authz_owner.c |
| Совместимость: | Доступен в Apache 2.1 и более поздних версиях |
Краткое описание
Этот модуль разрешает доступ к файлам, сравнивая идентификатор пользователя, используемый для HTTP-аутентификации (веб-идентификатор пользователя), с владельцем или группой запрашиваемого файла в файловой системе. Переданное имя пользователя и пароль должны быть предварительно проверены модулем аутентификации, например mod_auth_basic или mod_auth_digest. mod_authz_owner распознаёт два аргумента директивы Require: file-owner и file-group, описанные ниже:
file-owner- Переданное веб-имя пользователя должно совпадать с системным именем владельца запрашиваемого файла. То есть, если операционная система сообщает, что запрашиваемый файл принадлежит
jones, то имя пользователя, используемое для доступа к нему через веб, также должно бытьjones. file-group- Имя системной группы, которой принадлежит файл, должно присутствовать в базе данных групп, предоставляемой, например,
mod_authz_groupfileилиmod_authz_dbm, а веб-имя пользователя должно входить в эту группу. Например, если операционная система сообщает, что запрашиваемый файл принадлежит системной группеaccounts, группаaccountsдолжна присутствовать в базе данных групп, а веб-имя пользователя, указанное в запросе, должно входить в эту группу.
Примечание
Если mod_authz_owner используется для авторизации ресурса, который фактически отсутствует в файловой системе (то есть виртуального ресурса), доступ будет запрещён.
В частности, авторизация никогда не будет предоставлена для ресурсов «MultiViews» с согласованием содержимого.
Примеры конфигурации
Require file-owner
Рассмотрим многопользовательскую систему, на которой работает веб-сервер Apache, и у каждого пользователя есть собственные файлы в ~/public_html/private. Предположим, что существует единая база данных AuthDBMUserFile со списком веб-имён пользователей, и эти имена совпадают с системными именами пользователей, которым фактически принадлежат файлы на сервере. В таком случае следующий блок конфигурации разрешит каждому пользователю доступ только к собственным файлам. Пользователь jones не сможет получить доступ к файлам в /home/smith/public_html/private, если они принадлежат не smith, а jones.
<Directory "/home/*/public_html/private">
AuthType Basic
AuthName MyPrivateFiles
AuthBasicProvider dbm
AuthDBMUserFile "/usr/local/apache2/etc/.htdbm-all"
Require file-owner
</Directory> Require file-group
Рассмотрим систему, подобную описанной выше, но с некоторыми пользователями, которые совместно используют файлы проектов в ~/public_html/project-foo. Файлы принадлежат системной группе foo, а единая база данных AuthDBMGroupFile содержит все веб-имена пользователей и сведения об их членстве в группах; то есть они должны как минимум входить в группу с именем foo. Поэтому, если jones и smith оба входят в группу foo, им обоим будет разрешён доступ к каталогам project-foo друг друга.
<Directory "/home/*/public_html/project-foo">
AuthType Basic
AuthName "Project Foo Files"
AuthBasicProvider dbm
# combined user/group database
AuthDBMUserFile "/usr/local/apache2/etc/.htdbm-all"
AuthDBMGroupFile "/usr/local/apache2/etc/.htdbm-all"
Satisfy All
Require file-group
</Directory>
© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/mod/mod_authz_owner.html