Назад | Перейти на главную страницу

Setting separate permissions for alias using <directory> директива</directory>

Я пытаюсь настроить псевдоним с разрешениями, отличными от root, например

www.restricted.com - один пользователь

www.restricted.com/alias - другой пользователь

Это возможно?

Я установил псевдоним в httpd.conf в отдельном каталоге (а не в подкаталоге) с собственным <directory> запись и отдельная настройка авторизации. Однако я получаю два запросы пароля при попытке доступа / псевдонима для обоих разделов. Я не уверен, из-за моей ли ошибки или намеренно.

Пример:

<VirtualHost *:443>
        ServerName www.restricted.com
        DocumentRoot /var/www/site/main/

        <Directory /var/www/site/main/>

                AuthUserFile /var/www/site/.htpasswd
                AuthGroupFile /dev/null
                AuthName "main site"
                AuthType Basic
                Require user joe
        </Directory>

        Alias /alias /var/www/site/subsite/
        <Directory /var/www/site/subsite/>

                AuthUserFile /var/www/site/.htpasswd
                AuthGroupFile /dev/null
                AuthName "subsite"
                AuthType Basic
                Require user admin 
        </Directory>
</VirtualHost>

Поскольку корень виртуального хоста и псевдоним находятся в разных каталогах на сервере, я думаю, что <Directory> директивы более подходят для использования, чем <Location>.

Я предпочитаю использовать <Location> директивы для ограничения доступа к разным локациям.

Вы можете использовать Требовать идентификатор пользователя директива, разрешающая доступ только определенным пользователям. См. Пример по этой ссылке. Вот еще один пример, взятый из моей собственной конфигурации.

На самом деле AuthUserFile может использоваться в обоих местоположениях, поскольку AuthUserFile обрабатывает только Аутентификация, а не авторизация.

# This will allow access to / for 'user1'
<Location />
AuthName "Access allowed for user1"
AuthType Basic
AuthUserFile /etc/httpd/htpasswd.user1
Require user user1
</Location>

# This will allow access to /alias for 'user2'
Alias /alias/ /web/alias/
<Location /alias/>
AuthName "Access only allowed for user2"
AuthUserFile /etc/httpd/htpasswd.user2
Require user user2
</Location>

С помощью Directory директивы применяют разрешения к физической структуре каталогов; это предназначено для предотвращения непреднамеренного предоставления привилегий.

Способ заставить это работать так, как вы хотите, - использовать Location вместо этого директива; это применит настройки разрешений только к виртуальному пути http, который вы укажете в директиве.