Модуль 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".
Примеры конфигурации
Требование владения файлом
Рассмотрим многопользовательскую систему с веб-сервером Apache, где каждый пользователь имеет свои файлы в ~/public_html/private. Предположим, что существует база данных AuthDBMUserFile, содержащая все имена веб-пользователей, и эти имена соответствуют именам пользователей в системе, которые фактически владеют файлами на сервере. Тогда приведенный ниже фрагмент позволит только пользователю получить доступ к своим файлам. Пользователь jones не сможет получить доступ к файлам в /home/smith/public_html/private, если они не принадлежат jones, а не smith.
<Directory "/home/*/public_html/private">
AuthType Basic
AuthName MyPrivateFiles
AuthBasicProvider dbm
AuthDBMUserFile "/usr/local/apache2/etc/.htdbm-all"
Require file-owner
</Directory> Требование принадлежности к группе файла
Рассмотрим систему, аналогичную описанной выше, но с пользователями, которые совместно используют свои файлы проекта в ~/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