Habilitando servidor webdav usando Apache no Ubuntu Linux
Ferramentas: Ubuntu 9.04, apache2, ldap
WebDav é um tipo se serviço que permite a download e upload de arquivos de um servidor
de uma forma bastante transparente. É um padrão aberto e multiplataforma especificado na RFC 4510.
Permite o mapeamento de uma URL como se fosse um diretório local.
Esse artigo irá explicar como criar um servidor WebDav usando o servidor Web Apache 2 na distribuição Ubuntu Linux.
Esse artigo presume que você tenha conhecimento da instalar e configuração de servidor apache, no caso via pacotes debian,
porém se você souber extrair as informações aqui contidas poderá instalá-lo das outras diversas formas possíveis,
os locais de diretórios aqui abordados são do padrão debian-ubuntu.
1. PRIMEIRAS CONFIGURAÇÕES
Instale o apache e suas dependencias.
Iremos adicionar um novo host virtual, na porta 8080 para efetuar nossos testes, assegure-se que outra aplicação não está utilizando essa porta, senão escolha outra. Para criar um novo VirtualHost basta adicionar no arquivo “/etc/apache2/ports.conf” as seguintes linhas:
NameVirtualHost *:8080 Listen 8080
2. CONFIGURANDO O WEBDAV
Os diretórios a seguir são somente para organizar melhor a aplicação, você pode cria-los como desejar.
Crie a pasta /var/webdav/ e crie dentro as seguintes pastas:
*htdocs/ : será o local onde os arquivos serão inseridos, será o dav público;
*htdocs/basic/ : para exemplificar a autenticação basic;
*htdocs/digest/ : para exemplificar a autenticação digest;
*htdocs/ldap/ : para exemplificar a autenticação ldap;
*htdocs/ldap_grupo/ : para exemplificar o uso de ldap e grupos;
*config/ : pasta criada para conter o arquivo de senhas caso seja o caso, será visto depois.
altere o dono da pasta htdocs para www-data
sudo chown www-data /var/webdav/htdocs/
Agora é necessario adicionar o módulo de webdav, execute o comando a seguir (Apache2 deverá estar instalado):
# a2enmod dav # a2enmod dav_fs
Esse comando simplesmente criará um link dos módulos desejados de /etc/apache/mod-avaliable/… para /etc/apache/mod-enable/…
Agora criaremos o seguinte arquivo “/etc/apache/site-enabled/webdav” com o conteúdo a seguir:
<VirtualHost *:8080>
DocumentRoot /var/webdav/htdocs/
<Directory /var/webdav/htdocs/>
DAV On
</Directory>
</VirtualHost>
Agora reinicie o servidor e teste o endereço http://localhost:8080
# /etc/init.d/apache2 restart
3. ACESSANDO WEBDAV NO UBUNTU USANDO NAUTILUS
Para utilizar uma url webdav no linux você pode utilizar o Nautilus, para isso faça os seguintes passos:
*Abri um navegador de arquivos (nautilus)
*Clique em arquivo > conectar ao servidor…
*Selecione Webdav, e informe as configurações do nosso servidor (localhost|8080)
4. AUTENTICAÇÃO POR ARQUIVO: BASIC
Uma das formas de restringir o acesso ao nosso servidor webdav é criar um arquivo de senhas.
Adicione os módulos necessários executando o comando:
# a2enmod auth_basic # a2enmod auth_file
Agora iremos criar um arquivo de usuários e senhas.
Execute o comando a seguir, onde teste é o nome do usuário que você deseja criar:
# htpasswd -c /var/webdav/config/passwd_basic.dav teste
O parametro “-c” significa create, caso o arquivo já exista irá ser substituido.
Agora modificaremos novamente o arquivo “/etc/apache/site-enabled/webdav” e adicionaremos dentro de <VirtualHost…>:
Alias /basic /var/webdav/htdocs/basic <Location /basic> AuthType Basic AuthName webdav AuthBasicProvider file AuthUserFile /var/webdav/config/passwd_basic.dav Require valid-user </Location>
Reinicie o servidor e teste.
5. AUTENTICAÇÂO POR ARQUIVO: DIGEST
A autenticação Digest é bastante similar à Basic, a diferença está somente na forma com que o password é enviado ao servidor,
no formato MD5 que o torna mais seguro para transmissão via internet e também que esse obedece o realm especificado em AuthName.
Adicione os módulos necessários executando o comando:
# a2enmod auth_digest
Execute o comando a seguir, onde webdav é o nome do realm e teste o nome do usuário que você deseja criar:
# sudo htdigest -c /var/webdav/config/passwd_digest.dav webdav teste
Vamos ao “/etc/apache/site-enabled/webdav” e adicionamos dentro de <VirtualHost…>:
Alias /digest /var/webdav/htdocs/digest <Location /digest> AuthType Digest AuthName webdav AuthUserFile /var/webdav/config/passwd_digest.dav Require valid-user </Location>
6. AUTENTICACAO EM SERVICO LDAP
Adicione os módulos necessários executando o comando:
# a2enmod ldap # a2enmod authnz_ldap
Adicionaremos em “/etc/apache/site-enabled/webdav” dentro de <VirtualHost…>:
Alias /ldap /var/webdav/htdocs/ldap <Location /ldap> AuthType Basic AuthBasicProvider ldap AuthName webdav AuthLDAPURL "ldaps://ldap.servidor.com:636/ou=EMPRESA,dc=pr,dc=gov,dc=br" </Location>
7. AUTENTICACAO EM SERVICO LDAP
Adicionaremos em “/etc/apache/site-enabled/webdav” dentro de <VirtualHost…>:
Alias /ldap_grupo /var/webdav/htdocs/ldap_grupo <Location /ldap_grupo> Order deny,allow Deny from All AuthType Basic AuthBasicProvider ldap AuthName webdav AuthzLDAPAuthoritative on AuthLDAPURL ldaps://ldap.servidor:636/ou=EMPRESA,dc=pr,dc=gov,dc=br?uid?sub Require valid-user AuthLDAPGroupAttribute memberUid AuthLDAPGroupAttributeIsDN off Require ldap-group cn=nome-do-grupo,ou=EMPRESA,dc=pr,dc=gov,dc=br satisfy any </Location>
8. WARNINGS
O warning “client used wrong authentication scheme: /basic”, parece ser normal quando temos multiplas validações em um mesmo domínio, acredito ser um bug do navegador ou uma associação ao realm.
9. CONCLUSÃO
Configurar um webdav no apache é bastante simples e pode ser bastante útil.
O resultado final do arquivo “/etc/apache/site-enabled/webdav” é:
#Para ignorar certificados SSL inválidos
LDAPVerifyServerCert off
<VirtualHost *:8080>
ServerAdmin medianeira@gmail.com
DocumentRoot /var/webdav/htdocs/
<Directory /var/webdav/htdocs/>
DAV On
</Directory>
Alias /basic /var/webdav/htdocs/basic
<Location /basic>
AuthType Basic
AuthName webdav
AuthBasicProvider file
AuthUserFile /var/webdav/config/passwd_basic.dav
Require valid-user
</Location>
Alias /digest /var/webdav/htdocs/digest
<Location /digest>
AuthType Digest
AuthName webdav
AuthUserFile /var/webdav/config/passwd_digest.dav
Require valid-user
</Location>
Alias /ldap /var/webdav/htdocs/ldap
<Location /ldap>
AuthType Basic
AuthBasicProvider ldap
AuthName webdav
AuthLDAPURL "ldaps://ldap.servidor.com:636/ou=EMPRESA,dc=pr,dc=gov,dc=br"
</Location>
Alias /ldap_grupo /var/webdav/htdocs/ldap_grupo
<Location /ldap_grupo>
Order deny,allow
Deny from All
AuthType Basic
AuthBasicProvider ldap
AuthName webdav
AuthzLDAPAuthoritative on
AuthLDAPURL ldaps://ldap.servidor.com:636/ou=EMPRESA,dc=pr,dc=gov,dc=br?uid?sub
Require valid-user
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN off
Require ldap-group cn=nome-do-grupo,ou=EMPRESA,dc=pr,dc=gov,dc=br
satisfy any
</Location>
</VirtualHost>
Referências:
http://httpd.apache.org/docs/2.2/howto/auth.html
http://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html
Nenhum trackbacks ainda.