domingo, 9 de agosto de 2015

System Daily: Integrando o Owncloud com Samba


Nesses dias durante um projeto onde nossa equipe local necessitava de um fluxo de compartilhamento de informações com uma equipe que estava em campo em outro estado do país, sentimos a necessidade de uma ferramenta que nos auxiliasse nessa troca de arquivos em tempo real independente do local. Foi aí que nos veio a ideia de subir um servidor de cloud para compartilhar com nosso agentes de campo. Subimos o Owncloud como serviço, abrimos o acesso externo e fizemos o ajuste de DNS para facilitar o acesso via browser do pessoal.

Você pode conferir como subir o Owncloud clicando aqui. 

Instalando as dependências: 
# sudo apt-get install apache2 php5 php5-json php-xml php-mbstring php5-zip php5-gd php5-sqlite curl libcurl3 libcurl3-dev php5-curl php-pdo mp3info mysql-server

Caso você nunca tenha instalado nenhuma base SQL antes, ele vai solicitar a senha de root do banco durante a instalação.

Baixe o pacote do Owncloud

# wget https://download.owncloud.org/community/owncloud-8.1.0.tar.bz2

 Mova para o seu diretório source do apache. No meu caso ele está localizado no diretório /var/www/html/, mas em muitos casos ele pode se encontrar na parta /var/www

# mv owncloud-8.1.0.tar.bz2 /var/www/html/

Descompacte o arquivo

# tar xvf owncloud-8.1.0.tar.bz2

como root, dê permissão total para a pasta em modo recursivo para que o software consiga completar a instalação

 # chmod 777 owncloud/ -R

Subimos ele com o MySQL para suportar de forma mais otimizada o sincronismo de arquivos.
É só seguir os passos e é batata. Rapidão.

# mysql -u root -p
# mysql> create database owncloud;
# mysql> quit;

Agora é só acessar http://IP-DO-SERVIDOR/owncloud e prosseguir com a instalação definindo um usuaŕio e senha administrador para o Owncloud. No final da instalação o resultado será esse:



Legal, metade do problema resolvido.

Agora como nossa equipe iria acessar os arquivos enviados da melhor forma?
Instalando o client do Owncloud em todas as máquinas da TI? Não.
Tendo em vista que são muitos computadores aqui dentro iriamos obrigar o Owncloud a sincronizar os mesmos arquivos em muitos clientes diferentes com exatamente a mesma coisa e colocar nossa banda de internet no chão toda vez que alguém sincronizasse algum arquivo. Totalmente inviável nessa situação.

A solução foi simples: Criar um compartilhamento SAMBA no diretório root do Owncloud, assim todos poderiam acessar share, pegar e colocar informações de forma mais rápida e eficiente.



Tendo em vista que o servidor em questão estava em um ambiente Debian 7 Wheezy foi fácil

# sudo apt-get install samba

O Owncloud por padrão cria seu storage de arquivos na pasta

/var/www/html/owncloud/data/USUARIO/files/

ou

/var/www/owncloud/data/USUARIO/files/

Dependendo da sua versão ou configuração do apache.

neste exemplo estarei utilizando o usuário admin para simular a situação.

Logo o storage estaria no diretório /var/www/html/owncloud/data/admin/files


Agora vamos criar o compartilhamento para o owncloud.

Criamos o backup do arquivo de configuração principal do Samba

Você pode aprender a configurar melhor o samba clicando aqui


# mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
E agora criamos o diretório
# nano /etc/samba/smb.conf

No novo arquivo vamos colar o conteúdo

#CONFIGURAÇÃO SAMBA
#CONFIGURE E ADAPTE A SUA NECESSIDADE                                                  
[global]
        workgroup = SEU DOMÍNIO
        netbios name = localhost
        server string = localhost
        map to guest = Bad User
        interfaces = IP DO SERVIDOR
        security = share
        log file = /var/log/samba.log
        log level=2
        max log size = 10000
        load printers = No
        local master = No
        domain master = No
        dns proxy = No
        idmap config * : backend = tdb


[Owncloud]
        #CAMINHO PARA O COMPARTILHAMENTO
        path = /var/www/html/owncloud/data/admin/files
        guest ok = Yes
        vfs objects = recycle:keeptree=True
        #ARQUIVOS E DIRETÓRIOS SÃO CRIADOS COM PERMISSÃO 777
        create mask = 777
        directory mask = 777 


Substitua o "Admin" pelo seu usuário criado no Owncloud, altere o restante dos parâmetros, salve e boa.



Reinicie o Samba:
# sudo service samba restart


Legal, em tese tudo deu certo. Vamos acessar o compartilhamento do servidor pra ver
Acessando o diretório \\IP-DO-SERVIDOR ou smb://IP-DO-SERVIDOR no meu gerenciador de arquivos fiz o teste do diretório owncloud para ver se estava tudo ok

.

Permissão negada, ok... Tentei resolver dando chmod 777 /var/www/html/owncloud -R e funcionou. Por um tempo, 5 minutinhos depois o Owncloud executava uma rotina na qual voltava as permissões do diretório Data para 700, não importando quantas vezes eu tentasse. Não descobri (ainda) qual função executa essa mudança de permissão, mas bolei um jeito de dar um "Bypass" nela criando uma crontab para dar chmod 777 a cada um minuto dentro da pasta root do owncloud. Gambiarra, eu sei, mas funciona. Quem puder ajudar, fique a vontade para me ajudar nos comentários.

Como root acesse a tabela de crontabs

# crontab -e

e adicione o seguinte cron no final do arquivo

* * * * * chmod 777 /var/www/html/owncloud -R 



Esta string cria uma crontab que vai dar um chmod 777 na pasta /var/www/html/owncloud a cada minuto. Vamos tentar acessá-la agora pra ver.



Prontinho, temos o Owncloud integrado ao Samba.


:)

SOBRE O AUTOR

Matheus Fidelis

http://msfidelis.github.io/

Power Ranger, Piloto de Helicópteros e Astronauta da NASA. Desenvolvedor Web PHP com foco em Backend e POO, Linux SysAdmin DevOps e Entusiasta Python. Criou esse site pra contribuir com a comunidade com coisas que aprende dentro de um setor maluco de TI :)

2 comentários:

  1. E aí brother, curti seu tuto.. Mas uma dúvida, o fato de não instalar o client do OWNCLOUD em todas as máquinas é pq ele sincronizaria todos os arquivos da pasta? Coisas que talvez algum outro usuario não precise? Como ficou a questão de acesso externo para os agentes que trabalham em outro estado? Mais uma coisa, se criasse um usuario para todos no OWNCLOUD e acessasse via browser colocando usuario e senha não funcionaria com a mesma agilidade? No aguardo. absss

    ResponderExcluir
    Respostas
    1. Bom dia, Rafael. Antes de mais nada, obrigado pelo comentário!!

      O fato de não optamos pela instalação dos clientes internos se deve ao fato de isso nos obrigar a baixar 15x o mesmo arquivo durante cada sincronização. Deixando o compartilhamento, ele só iria baixar uma vez, no servidor, e todo mundo teria o acesso.

      O acesso externo ficou via browser mesmo por praticidade. Configuramos uma porta no firewall pra cair direto na interface web do servidor do owncloud dentro da empresa.

      E sim, a agilidade em tese seria a mesma, mas nesse caso te recomendo a não utilizar a instalação padrão com o Sqlite. Pra ficar mais performático te recomendo seguir esse tutorial e fazer com o MySQL
      Espero ter ajudado!!!

      Excluir

 
Nanoshots | Open Source Security, Linux e Tutoriais © 2015 - Designed by Templateism.com