Compartilhando Com o Samba Na Linha de Comando

Embed Size (px)

Citation preview

Montagem permanente dos compartilhamentos no sambaA forma mais prtica de acessar os compartilhamentos do Samba em clientes Linux utilizar clientes grficos como o Smb4K (do KDE) e o mdulo de acesso a compartilhamentos do Nautilus (disponvel no menu "Locais > Rede"):

Apesar disso, o Samba possui tambm um cliente de modo texto, o smbclient, usado via terminal. possvel tambm montar os compartilhamentos diretamente, funcionalidade que equivale opo "mapear unidade de rede" disponvel nos clientes Windows. Para que os compartilhamentos sejam montados durante o boot, necessrio adicionar as entradas apropriadas no arquivo "/etc/fstab". Dessa forma, os compartilhamentos so montados automaticamente durante o boot e ficam acessveis de forma permanente nas pastas especificadas por voc. Esta uma opo interessante em muitos ambientes, j que mais fcil para os usurios simplesmente acessarem os arquivos atravs de uma pasta, do que terem que montar o compartilhamento usando o Smb4K ou o Nautilus. O primeiro passo aprender a sintaxe da montagem dos compartilhamentos via linha de comando, j que as entradas do fstab utilizam os mesmos argumentos. Comeando do bsico, voc pode listar os compartilhamentos disponveis em um servidor da rede usando o comando:

$ smbclient -L 192.168.1.254 -U gdh

Veja que o comando especifica o endereo do servidor (voc pode usar tambm o nome na rede Windows) e a conta de usurio que ser usado para abrir a conexo. Depois de fornecer a senha, voc obtm uma lista dos compartilhamentos disponveis, como em:

E230 Printer print$ Disk Drivers de impressao para os clientes Windows arquivos Disk projetos Disk backup Disk IPC$ IPC IPC Service (Samba PDC)

O exemplo mais simples para montar um dos compartilhamentos via linha de comando seria:

# mount -t smbfs //servidor/arquivos /mnt/smb

Aqui, estou montando o compartilhamento "arquivos" na pasta "/mnt/smb" (que deve ser previamente criada usando o comando mkdir). O "servidor" pode tanto ser o nome da mquina, dentro da rede Windows, quanto seu endereo IP. Como em outros comandos de montagem, voc precisa executar o comando como root. O comando mount um dos comandos mais tradicionais do Linux, que permite "mapear" um diretrio qualquer dentro de outro diretrio do sistema. A opo "-t" serve para especificar o sistema de arquivos, neste caso o "smbfs", usado para acessar compartilhamentos Windows. Note que a localizao do compartilhamento fornecida numa sintaxe muito similar que usaramos para mapear um compartilhamento no Windows, com a sintaxe "barra barra servidor barra compartilhamento". A nica diferena que aqui usamos barras "normais" ao invs de barras invertidas. S para efeito de comparao, ao mapear o mesmo compartilhamento em uma mquina Windows, teramos:

O problema com o comando anterior que ele s funciona realmente ao montar compartilhamentos do Windows 95, 98 e ME, que no possuem senhas. No Windows 2000, XP e Vista (com exceo das estaes com o simple sharing ativado), sem falar dos prprios servidores Linux rodando o Samba, voc vai receber uma mensagem de acesso negado, j que neles voc precisa se autenticar para obter acesso aos compartilhamentos. Para isso, necessrio incluir a opo "-o username=usuario" (tudo junto, sem espaos), especificando o login que ser usado, como em:

# mount -t smbfs //servidor/arquivos /mnt/smb -o username=gdh

possvel tambm especificar a senha diretamente no comando, o que permite us-lo em scripts:

# mount -t smbfs //servidor/arquivos /mnt/smb -o username=gdh,password=1234

Se, ao executar o comando, voc receber um erro similar a: mount: tipo de sistema de arquivos incorreto, opo invlida, superbloco invlido em //servidor/arquivos, faltando pgina de cdigo ou outro erro Em alguns casos informaes teis so encontradas no syslog - tente "dmesg | tail" ou algo do tipo Significa que o cliente Samba e/ou o suporte ao sistema de arquivos smbfs no est instalado na estao. Nesse caso, instale o pacote "smbfs" usando o gerenciador de pacotes, como em:

# apt-get install smbfs

Este problema muito reportado por usurios do Ubuntu, j que o pacote no vinha instalado por padro no Edgy, no Feisty e no Gutsy. Continuando, depois de montado o compartilhamento, os arquivos podem ser acessados normalmente, usando o Konqueror, Nautilus ou outro gerenciador de arquivos. muito similar ao acessar um compartilhamento mapeado no Windows, a principal diferena que voc define uma pasta onde ele ser montado, ao invs de acess-lo atravs de uma letra, como "E:" ou "Z:". Uma peculiaridade do mount que os arquivos dentro da pasta montada passaro por padro a ser propriedade do root. Isso no altera as permisses de acesso dos arquivos no servidor (a mudana apenas local), mas impede que seu login de usurio consiga alterar os arquivos, mesmo que as permisses de acesso do Samba digam o contrrio. Para evitar isso necessrio adicionar a opo "uid=", especificando o login de usurio (na mquina local) correto, como em:

# mount -t smbfs //servidor/arquivos /mnt/smb -o username=gdh,password=1234,uid=gdh

A opo "uid=" interpretada localmente. O login especificado no repassado ao servidor Samba, de forma que voc pode usar qualquer conta de usurio local. Ele serve apenas para corrigir as permisses de acesso, de forma que voc possa alterar os arquivos normalmente usando seu login de usurio. O passo seguinte tornar a montagem permanente, j que usando o comando mount ela perdida ao reiniciar o micro. Para isso, inserimos uma nova linha no final do arquivo "/etc/fstab". A ordem dos parmetros fica um pouco diferente, mas voc notar que os argumentos continuam os mesmos que usamos no comando anterior:

//servidor/arquivos /mnt/smb smbfs username=gdh,password=1234,uid=gdh 0 0

Caso necessrio, voc pode tambm indicar o grupo, junto com o usurio local, usando a opo "gid=", como em:

//servidor/arquivos /mnt/smb smbfs username=gdh,password=1234,uid=gdh,gid=users 0 0

O fstab um dos principais arquivos de configurao do sistema, por isso sempre importante ter cuidado ao edit-lo. Apenas adicione a nova linha, sem alterar as anteriores e lembre-se sempre de deixar uma linha em branco no final do arquivo. Um parmetro til que pode ser includo a opo "users", que permite que voc consiga montar e desmontar o compartilhamento usando seu login de usurio, sem precisar usar a conta de root. Para isso, adicione o parmetro "user", antes do "username=" (sem espaos), como em:

//servidor/arquivos /mnt/smb smbfs users,username=gdh,password=1234,uid=gdh 0 0

A montagem e desmontagem neste caso feita indicando apenas o diretrio, como em "umount /mnt/smb" e "mount /mnt/smb". A principal observao que o smbmnt (o comando responsvel pela montagem) s aceita fazer a montagem em uma pasta de propriedade do usurio, por isso necessrio ajustar as permisses da pasta usando o comando chown, como em:

# chown gdh:gdh /mnt/smb

O "0 0" includo sempre no final da linha um parmetro passado ao sistema, que diz que ele no deve verificar o sistema de arquivos usando o fsck durante a inicializao, j que aqui estamos montando um compartilhamento de rede e no uma partio. Embora no seja muito recomendvel do ponto de vista da segurana, tambm possvel escancarar as permisses, fazendo com que qualquer usurio logado no cliente Linux tenha acesso completo a todos os arquivos. Para isso, voc usaria o parmetro "smbpasswd,fmask=777,dmask=777", como em

//servidor/arquivos /mnt/smb smbfs users,username=gdh,password=1234 smbpasswd,fmask=777,dmask=777 0 0

(tudo em uma nica linha) Como estamos adicionando as senhas dos compartilhamentos dentro do arquivo, tambm fortemente recomendvel manter as permisses de leitura do arquivo em "600", de forma que apenas o root tenha permisso para ver seu contedo. Para isso, use o comando:

# chmod 600 /etc/fstab

possvel montar diversos compartilhamentos, adicionando uma linha para cada um. No existe limitao para o nmero mximo de compartilhamentos que podem ser adicionados, mas voc deve ter cuidado de adicionar apenas compartilhamentos de servidores que ficam ligados continuamente. Se o servidor estiver desligado durante o boot da estao, o boot do cliente vai demorar muito mais que o normal e o usurio ver o erro relacionado montagem do compartilhamento, o que no muito elegante, nem muito bom para sua reputao como administrador. :)

Nos exemplos anteriores, especificamos as senhas de montagem dos compartilhamentos diretamente no arquivo "/etc/fstab". Mesmo protegendo o arquivo com o "chmod 600", muita gente afirma que isso um problema grave de segurana, j que algum que conseguisse obter acesso ao arquivo, obteria automaticamente as senhas dos compartilhamentos. Uma opo usar um arquivo externo para armazenar as senhas. Ele pode ser armazenado tanto dentro do diretrio /home/root, quanto dentro do home do usurio do sistema que tem acesso ao compartilhamento. Voc pode tambm usar diversos arquivos de senha, um para cada compartilhamento que precisa ser montado. Para criar os arquivos de senha, use os trs comandos abaixo, ainda como root:

# echo "username=gdh" > /home/gdh/.smbpasswd # echo "password=1234" >> /home/gdh/.smbpasswd # chmod 600 /home/gdh/.smbpasswd

Usado desta forma, o comando echo permite criar arquivos de texto e adicionar novas linhas. O primeiro comando cria o arquivo, adicionando a linha com o nome do usurio, enquanto o segundo adiciona a linha com a senha. Se por acaso o arquivo j existir, ele subescrito. Como o arquivo foi criado pelo root, o comando "chmod 600" usado no final faz com que, mesmo colocado dentro do home do usurio "joao", apenas o root tenha acesso ao arquivo, evitando acidentes. Voc pode tambm criar o arquivo usando um editor de textos qualquer e ajustar as permisses manualmente. Neste caso, bastaria adicionar as duas linhas:

username=gdh password=1234

Com o arquivo criado, voc pode modificar a(s) linha(s) no fstab, especificando a localizao do arquivo, ao invs de colocar o usurio e senha diretamente, como em:

//servidor/arquivos /mnt/smb smbfs users,credentials=/home/gdh/.smbpasswd 0 0

ou:

//servidor/arquivos /mnt/smb smbfs users,credentials=/home/gdh/.smbpasswd smbpasswd,uid=gdh,gid=gdh 0 0

(tudo em uma nica linha) Ao montar vrios compartilhamentos, que so acessados usando o mesmo login e senha, voc pode especificar o mesmo arquivo em todas as linhas, mas, no caso de diversos compartilhamentos, montados usando credenciais diferentes, voc deve criar arquivos separados para cada um e especificar o arquivo correto dentro da linha de montagem de cada compartilhamento. Voc pode criar quantos arquivos de senha diferentes quiser, mas cada arquivo deve conter um nico usurio e senha. Concluindo, uma limitao importante do smbfs que ele suporta, por default, transferncias de arquivos de no mximo 2 GB. O sintoma do problema que as transferncias comeam normalmente, mas param ao chegar aos 2 GB, com um erro "file size limit exceeded" ou outra mensagem de erro qualquer, gerada quando o gerenciador de arquivos no consegue concluir a transferncia:

Esta na verdade no uma limitao do Samba, mas sim do protocolo SMB, que usado por default pelo smbfs. A soluo para o problema adicionar a opo "lfs" (a sigla abreviao de "large file support" e, como o nome sugere, ativa o suporte a arquivos de mais de 2 GB, que est disponvel no protocolo CIFS) no comando de montagem, ou entre as opes especificadas na linha do fstab. como em:

# mount -t smbfs //servidor/arquivos /mnt/smb -o lfs,username=gdh,password=1234,uid=gdh

ou:

//servidor/arquivos /mnt/smb smbfs lfs,users,username=gdh,password=1234 smbpasswd,fmask=777,dmask=777 0 0

(tudo em uma nica linha) importante notar que a opo lfs elimina qualquer limitao com relao ao tamanho dos arquivos por parte do Samba, mas voc ainda poder ter problemas ao copiar arquivos grandes para mquinas com HDs formatados em FAT32, sistema que suporta arquivos de no mximo 4 GB. A soluo nesses casos (no caso das mquinas Windows) converter as parties para NTFS. No caso das mquinas Linux, no existem restries, j que o EXT3 suporta arquivos de at 2 TB.