Montar uma partição samba compartilhamento compartilha Linux x Linux

mount -t cifs -o username=foo,password=bar //192.168.0.50/arquivos /mnt/win

Observe que via cifs não é possível o uso de nome netbios com ocorria com o smbfs. Por isso você deve usar o endereço IP – a não ser que consiga resolver o ip via dns ou via /etc/hosts.

Outra possibilidade bacana para desktops Linux é a montagem de compartilhamentos na inicialização. Para isso edite o /etc/fstab e insira a linha:

//ip_da_maquina/nome_compartilhamento /ponto_de_montagem cifs defaults,user=nome_usuário,password=senha 0 0

Montagem permanente dos compartilhamentos

A forma mais prática de acessar os compartilhamentos do Samba em clientes Linux é utilizar clientes gráficos como o Smb4K (do KDE) e o módulo de acesso a compartilhamentos do Nautilus (disponível no menu “Locais > Rede”):

Apesar disso, o Samba possui também um cliente de modo texto, o smbclient, usado via terminal. É possível também montar os compartilhamentos diretamente, funcionalidade que equivale à opção “mapear unidade de rede” disponível nos clientes Windows.

Para que os compartilhamentos sejam montados durante o boot, é necessário adicionar as entradas apropriadas no arquivo “/etc/fstab”. Dessa forma, os compartilhamentos são montados automaticamente durante o boot e ficam acessíveis de forma permanente nas pastas especificadas por você. Esta é uma opção interessante em muitos ambientes, já que é mais fácil para os usuários simplesmente acessarem os arquivos através 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. Começando do básico, você pode listar os compartilhamentos disponíveis em um servidor da rede usando o comando:

$ smbclient -L 192.168.1.254 -U gdh

Veja que o comando especifica o endereço do servidor (você pode usar também o nome na rede Windows) e a conta de usuário que será usado para abrir a conexão. Depois de fornecer a senha, você obtém uma lista dos compartilhamentos disponíveis, 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 máquina, dentro da rede Windows, quanto seu endereço 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 diretório qualquer dentro de outro diretório do sistema. A opção “-t” serve para especificar o sistema de arquivos, neste caso o “smbfs”, usado para acessar compartilhamentos Windows. Note que a localização do compartilhamento é fornecida numa sintaxe muito similar à que usaríamos para mapear um compartilhamento no Windows, com a sintaxe “barra barra servidor barra compartilhamento”. A única diferença é que aqui usamos barras “normais” ao invés de barras invertidas.

Só para efeito de comparação, ao mapear o mesmo compartilhamento em uma máquina Windows, teríamos:

O problema com o comando anterior é que ele só funciona realmente ao montar compartilhamentos do Windows 95, 98 e ME, que não possuem senhas. No Windows 2000, XP e Vista (com exceção das estações com o simple sharing ativado), sem falar dos próprios 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, é necessário incluir a opção “-o username=usuario” (tudo junto, sem espaços), especificando o login que será usado, como em:

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

É possível também 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, opção inválida, superbloco inválido em //servidor/arquivos, faltando página de código ou outro erro
Em alguns casos informações úteis são encontradas no syslog – tente “dmesg | tail” ou algo do tipo

Significa que o cliente Samba e/ou o suporte ao sistema de arquivos smbfs não está instalado na estação. Nesse caso, instale o pacote “smbfs” usando o gerenciador de pacotes, como em:

# apt-get install smbfs

Este problema é muito reportado por usuários do Ubuntu, já que o pacote não vinha instalado por padrão 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 diferença é que você define uma pasta onde ele será montado, ao invés de acessá-lo através de uma letra, como “E:” ou “Z:”.

Uma peculiaridade do mount é que os arquivos dentro da pasta montada passarão por padrão a ser propriedade do root. Isso não altera as permissões de acesso dos arquivos no servidor (a mudança é apenas local), mas impede que seu login de usuário consiga alterar os arquivos, mesmo que as permissões de acesso do Samba digam o contrário.

Para evitar isso é necessário adicionar a opção “uid=”, especificando o login de usuário (na máquina local) correto, como em:

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

A opção “uid=” é interpretada localmente. O login especificado não é repassado ao servidor Samba, de forma que você pode usar qualquer conta de usuário local. Ele serve apenas para corrigir as permissões de acesso, de forma que você possa alterar os arquivos normalmente usando seu login de usuário.

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 parâmetros 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 necessário, você pode também indicar o grupo, junto com o usuário local, usando a opção “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 configuração 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 parâmetro útil que pode ser incluído é a opção “users”, que permite que você consiga montar e desmontar o compartilhamento usando seu login de usuário, sem precisar usar a conta de root. Para isso, adicione o parâmetro “user”, antes do “username=” (sem espaços), 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 diretório, como em “umount /mnt/smb” e “mount /mnt/smb”. A principal observação é que o smbmnt (o comando responsável pela montagem) só aceita fazer a montagem em uma pasta de propriedade do usuário, por isso é necessário ajustar as permissões da pasta usando o comando chown, como em:

# chown gdh:gdh /mnt/smb

O “0 0” incluído sempre no final da linha é um parâmetro passado ao sistema, que diz que ele não deve verificar o sistema de arquivos usando o fsck durante a inicialização, já que aqui estamos montando um compartilhamento de rede e não uma partição.

Embora não seja muito recomendável do ponto de vista da segurança, também é possível escancarar as permissões, fazendo com que qualquer usuário logado no cliente Linux tenha acesso completo a todos os arquivos. Para isso, você usaria o parâmetro “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, também é fortemente recomendável manter as permissões de leitura do arquivo em “600”, de forma que apenas o root tenha permissão para ver seu conteúdo. Para isso, use o comando:

# chmod 600 /etc/fstab

É possível montar diversos compartilhamentos, adicionando uma linha para cada um. Não existe limitação para o número máximo 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 estação, o boot do cliente vai demorar muito mais que o normal e o usuário verá o erro relacionado à montagem do compartilhamento, o que não é muito elegante, nem muito bom para sua reputação 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 segurança, já que alguém que conseguisse obter acesso ao arquivo, obteria automaticamente as senhas dos compartilhamentos.

Uma opção é usar um arquivo externo para armazenar as senhas. Ele pode ser armazenado tanto dentro do diretório /home/root, quanto dentro do home do usuário do sistema que tem acesso ao compartilhamento. Você pode também usar diversos arquivos de senha, um para cada compartilhamento que precisa ser montado.

Para criar os arquivos de senha, use os três 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 usuário, 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 usuário “joao”, apenas o root tenha acesso ao arquivo, evitando acidentes.

Você pode também criar o arquivo usando um editor de textos qualquer e ajustar as permissões 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 localização do arquivo, ao invés de colocar o usuário 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 vários compartilhamentos, que são 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 usuário e senha.

Concluindo, uma limitação importante do smbfs é que ele suporta, por default, transferências de arquivos de no máximo 2 GB. O sintoma do problema é que as transferências começam 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 não consegue concluir a transferência:

Esta na verdade não é uma limitação do Samba, mas sim do protocolo SMB, que é usado por default pelo smbfs. A solução para o problema é adicionar a opção “lfs” (a sigla é abreviação de “large file support” e, como o nome sugere, ativa o suporte a arquivos de mais de 2 GB, que está disponível no protocolo CIFS) no comando de montagem, ou entre as opções 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 opção lfs elimina qualquer limitação com relação ao tamanho dos arquivos por parte do Samba, mas você ainda poderá ter problemas ao copiar arquivos grandes para máquinas com HDs formatados em FAT32, sistema que suporta arquivos de no máximo 4 GB. A solução nesses casos é (no caso das máquinas Windows) converter as partições para NTFS. No caso das máquinas Linux, não existem restrições, já que o EXT3 suporta arquivos de até 2 TB.

Deixe um comentário