Maneira simples de acessar compartilhamentos Windows em um servidor Linux.
Imagine a seguinte situação:
- Você tem uma infraestrutura com Active Directory da Microsoft ou LDAP, com pastas compartilhadas na rede, tudo funcionando de boa;
- Você também tem um servidor web (apache ou nginx) rodando tranquilamente, servindo sua intranet ou site na internet…;
- Aí alguém chega pra você e fala:
– Sabe essa pasta compartilhada do setor XXX, então, precisamos colocar esses arquivos disponíveis TAMBÉM na Web (intranet ou internet).
– Ah, mas esses arquivos devem continuar sendo acessível normalmente pelo compartilhamento do Windows.
- Aí alguém chega pra você e fala:
Isso é bem fácil de resolver, basta utilizar o cliente CIFS de sistemas de arquivos do Windows.
1° passo
Criar um ponto de montagem no servidor web. Usualmente utilizamos o /mnt, mas fica a critério de suas necessidades. No nosso exemplo, vamos criar esse ponto de montagem direto na pasta DocumentRoot de nosso servidor, que roda Apache e posteriormente definir o usuário apache como dono do diretório criado.
[root@server ~]# mkdir /var/www/html/arquivos [root@server ~]# chown apache:apache /var/www/html/arquivos/ -R
2º passo
Criar um arquivo com as credenciais de acesso do Active Directory à pasta compartilhada. Vamos criar dentro do home do usuário Root:
[root@server ~]# vim /root/.shared_credencial
Insira essas informações, tão como informados:
username=nome_usuario_ad password=senha_usuario_ad domain=dominio.de.seu.ad
3º passo
Editar o fstab, inserindo o ponto de montagem para a pasta /var/www/html/arquivos, passando as credencias de acesso que foram registradas em /root/.shared_credencial.
[root@server ~]# vim /etc/fstab
Inserir a seguinte linha no final do arquivo, substituindo o IP do servidor de arquivos e o caminho da pasta compartilhada do exemplo dado (192.168.0.10/SETORX/arquivos) pelas informações de seu compartilhamento windows.
//192.168.0.10/SETORX/arquivos /var/www/html/arquivos/ cifs credentials=/root/.shared_credencial,iocharset=utf8,sec=ntlm,nobootwait,uid=apache,gid=apache 0 0
Observação: se você criar pastas com espaços no /var/www/html/ você precisa utilizar o símbolo %40 para informar o espaço em branco entre as palavras, na hora de referenciá-las no FSTAB, veja esse exemplo real:
# Rio Branco # Pasta no servidor de arquivos: cidades/RBR # Pasta no servidor web: /var/www/html/Rio Branco //192.168.0.10/cidades/RBR /var/www/html/Rio\040Branco cifs credentials=/root/.shared_credencial,iocharset=utf8,sec=ntlm,nobootwait,uid=apache,gid=apache 0 0
Se a pasta tiver acento, é necessário incluir a o parâmetro lang=utf8:
# Tarauacá # Pasta no servidor de arquivos: cidades/TRQ # Pasta no servidor web: /var/www/html/Tarauacá //192.168.0.10/cidades/TRQ /var/www/html/Tarauacá cifs credentials=/root/.shared_credencial,iocharset=utf8,sec=ntlm, lang=utf8, nobootwait,uid=apache,gid=apache 0 0
4º passo
Se você fizer uma nova entrada no fstab, ela não será montada automaticamente. Portanto, você deve recarregar/atualizar as entradas. Uma reinicialização no Linux fará isso, mas essa não é uma maneira amigável. Uma maneira rápida de recarregar novas entradas em /etc/fstab é usar o comando mount:
[root@server ~]# mount -a
Após isso, se você acessar a pasta montada, irá ter acesso aos arquivos compartilhados e como foi montado dentro do DocumentRoot do apache, os mesmos também estarão acessíveis na Web.
[root@server ~]# ls /var/www/html/arquivos/ http://192.168.0.10/arquivos/