sexta-feira, 1 de fevereiro de 2013

Criando uma pasta compartilhada na rede pelo samba




Com o uso de um roteador wireless muito comum hoje em dia, fica muito fácil compartilhar uma pasta do seu computador, impressora e internet com outros computadores, celulares e tablets da sua casa sem a necessidade de usar cabos físicos de rede, criando assim uma pequena rede doméstica.
Tudo que for colocando nesta pasta poderá ser acessado por qualquer computador, celular ou tablet destes que o mesmo possua wi-fi, sendo muito útil para buscar arquivos nesta pasta. 
A várias maneiras de configurar uma pasta remota utilizado programas gráfico bem fácil de usar para esta finalidade; mais caso você não tenha um programa para fazer isto no Linux, vou descrever aqui uma maneira mais genérica que serve para todas as distros e versões.

Requisitos é ter o servidor samba instalado e ativo.

Faça uma copia de segurança dos arquivos /etc/nsswitch.conf e /etc/samba/smb.conf para nsswitch.conf.bkp e smb.conf.bkp respectivamente.
Exemplo:
# cp smb.conf smb.conf.bkp


IMPORTANTE
Sempre faça backups dos seus arquivos de configurações do sistema quando você for fazer qualquer alteração nos mesmos.

Primeiro vamos editar o arquivo /etc/nsswitch.conf usando um editor de texto ASCII puro

# leafpad /etc/nsswitch.conf

Localize a linha hosts: e altera a mesma para que fique conforme abaixo:
hosts: files dns wins

Esta modificação da linha hosts é necessário para que o Linux localize computadores pelo nome de hostname.

Segundo editar o arquivo /etc/samba/smb.conf

Provavelmente poderá ter um monte de linhas com opções padrão, mas ser você nunca configurou uma pasta remota antes, direta ou indiretamente no seu computador pessoal, você pode apagar todo o conteúdo existente tranquilamente simplificando a configuração e deste que você fez o backup sugerido deste arquivo que está na pasta /etc/samba.


[global]
server string = Servidor Samba do netbook
workgroup = casa
security = share

[partilha]
path = /mnt/partilha
writeable = yes
guest ok = yes

Onde:
[global] é um seção especial, tudo que for aplicado aqui será o comportamento geral do samba.
server string = É um descrição do seu computador, use no final o nome do seu computador.
workgroup = grupo de trabalho, pode ser qualquer nome que queira, não é obrigatório.
security = tipo de compartilhamento, o modo share é sem restrições de acesso, ou seja não precisa de senha para acessar o compartilhamento.
[partilha] é o nome do compartilhamento, você pode colocar qualquer nome, como sala, pessoal etc.. mas pra ficar organizado, coloque o nome final do caminho da pasta compartilhada, que no exemplo é partilha (/mnt/partilha) ficando fácil de saber, caso você crie mais compartilhamentos.
path = aqui vai o caminho completo da pasta no Linux, a ser compartilhada.
writeable e guest ok são permissões de acesso para o compartilhamento

Nota importante

No nome do compartilhamento, aquele que fica entre as [ ] não pode haver caracteres acentuados ou espaço em branco entre nomes, devendo ser apenas um único nome por inteiro sem espaços. Somente na linha path é que pode haver caracteres acentuados e espaços nos nomes exatamente como está no seu sistema.


Teceiro é criar as pastas

Agora vamos criar as pastas:
# mkdir -p /mnt/samba
# mkdir -p /mnt/partilha

Mudar as permissões destas pastas:
# chmod 777 /mnt/samba
# chmod 777 /mnt/partilha

Descrição das pastas:

Onde a pasta /mnt/samba será sempre utilizada como ponto de montagem, para você montar qualquer pasta remota de outro computador que tenha uma pasta compartilhada remotamente podendo ser um computador Linux ou Windows, devendo a mesma ficar sempre vazia no seu computador .

A pasta /mnt/partilha é a onde você colocará todos os arquivos que você deseja que todos possam acessar remotamente compartilhando assim vídeos, músicas, fotos etc.. na sua rede doméstica com outros computadores ou dispositivos moveis e no qual todos os usuários cadastrado no sistema poderão utilizar a mesma devido as permissões e por que está fora do seu HOME, caso você divida o seu computador com outros membros da família.
Agora é necessário reiniciar o servidor samba
# service smbd restart

IMPORTANTE:
O método para reiniciar varia conforme a distro que você usa, sendo o método citado acima o utilizado nas distros ubuntu e derivados, caso não seja este e você não sabe qual reinicie o computador.

Usando

Para saber qual é o nome do seu computador digite o comando hostname em uma janela de terminal.

Como descobrir os nomes das pastas compartilhadas de um computador da sua rede ?

Para descobrir os nomes das pastas compartilhadas de computadores Linux e Windows use o comando smbclient.
Sintaxe: smbclient -L hostname (substitua o hostname pelo nome do computador desejado)

$ smbclient -L mesa (Ao surgir um prompt password, ser o compartilhamento não tem senha pasta apenas teclar Enter)

Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.6]

Sharename       Type      Comment
---------              ----      -------
arquivos         Disk      
publico           Disk 
partilha           Disk
IPC$              IPC       IPC Service (Servidor Samba do mesa)
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.6]

Server                Comment
---------                -------
MESA                 Servidor Samba do mesa

Workgroup            Master
---------                   -------
WORKGROUP      MESA



Onde o computador mesa está compartilhando as pastas publico, arquivos e partilha.

Acessando a pasta remota

Em uma janela de terminal de sua preferencia faça:
# mount //mesa/partilha /mnt/samba

Onde mesa é o nome do computador (hostname) que você deseja acessar, partilha é o nome do compartilhamento samba que nos levará ao caminho completo configurado na linha path do arquivo smb.conf deste computador (se for um computador com Linux) e /mnt/samba é o caminho do ponto de montagem no seu computador que deve ser uma pasta vazia.
Ao surgir um prompt Password, apenas tecle Enter, caso não haja restrições ao compartilhamento.

Agora use o seu gerenciador de arquivos gráfico para acessar a pasta /mnt/samba.

Para desmontar o compartilhamento faça:
# umount /mnt/samba

Para facilitar a listagem e montagem de compartilhamentos, faça download do meu script em zenity, não precisando decorar os comandos de uso.
Para instalar o script como root faça: tar -xzvf zsamba2.01.tgz -C /

Depois no arquivo /etc/sudoers coloque a linha:
usuário ALL=NOPASSWD:/bin/mount, /bin/umount



Substitua usuário pelo seu nome de usuário do login com poder de administrador (usado nas distros ubuntu e derivadas)

No menu de programas terá um atalho no grupo Internet com o nome de Zsamba 2.0.
Para compartilhamentos sem senha, basta teclar Enter ao surgir a caixa de login do usuário e de password. 








4 comentários:

  1. Muito bom mesmo, parabéns pela iniciativa.

    ResponderExcluir
  2. Tem como fazer tudo isso sem usar terminal?

    ResponderExcluir
  3. Existe uma forma bem prática usando o gerenciador de arquivos Thunar que faz parte do desktop Xfce4. Os procedimentos citados aqui são similares em outros ambientes gráficos e gerenciadores de arquivos deste que o mesmo possua suporte a rede.


    No Thunar basta clicar no ícone Rede na lateral esquerda, onde aparecerá os nomes de todos os computadores da sua rede que compartilham pasta remota, dê um clique duplo nos nomes dos computadores para acessar as pastas remotas (somente usando o mouse para isto sem digitar nada)

    Outra forma no Thunar é ir no menu Ver/Seletor de localização e marque Estilo barra de ferramentas, onde agora no lugar de abas da janela do Thunar irá aparecer uma barra de url para digitação de caminho, então
    digite smb:// e tecle Enter onde irá aparecer o nome do grupo de trabalho da sua rede; de um duplo clique nele é será listado todos os computadores da sua rede que estão dentro deste grupo, clique no computador e compartilhamento desejado.

    Também pode digitar direto smb://hostname ou IP direto para já listar todos os compartilhamento do computador desejado.

    ResponderExcluir