Configurando permissões separadas para alias usando a diretiva Directory

1

Estou tentando configurar um alias com permissões diferentes da raiz, como

www.restricted.com - um usuário

www.restricted.com/alias - outro usuário

Isso é possível?

Eu configurei o alias em httpd.conf em um diretório separado (não subdiretório) com sua própria entrada <directory> e configuração de autenticação separada. No entanto, recebo duas solicitações de senha ao tentar acessar / alias, para ambas as seções. Não tenho certeza se é por causa de um erro da minha parte ou por design.

Exemplo:

<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>

Como a raiz do host virtual e o alias estão localizados em diretórios separados no servidor, acredito que as diretivas <Directory> sejam mais apropriadas para uso do que <Location> .

    
por grojo 15.03.2011 / 18:28

2 respostas

2

Eu prefiro usar as diretivas <Location> para restringir o acesso a locais diferentes.

Você pode usar a diretiva Solicitar ID de usuário para permitir acesso apenas a determinadas Comercial. Veja o exemplo fornecido nesse link. Aqui está outro exemplo, que é levantado da minha própria configuração.

Na realidade, o 'AuthUserFile' pode ser compartilhado entre os dois locais, já que o AuthUserFile somente lida com Autenticação, não Autorização .

# 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>
    
por 15.03.2011 / 19:01
1

O uso de diretivas Directory aplica as permissões na estrutura de diretório físico; isso se destina a evitar concessões de privilégios não intencionais.

A maneira de fazer isso funcionar da maneira que você quer é usar a diretiva Location ; isso aplicará as configurações de permissões somente no caminho virtual http que você especificar com a diretiva.

    
por 15.03.2011 / 18:35