{"id":384,"date":"2012-10-01T13:21:19","date_gmt":"2012-10-01T16:21:19","guid":{"rendered":"http:\/\/blog.abratel.com.br\/?p=384"},"modified":"2012-10-01T16:28:15","modified_gmt":"2012-10-01T19:28:15","slug":"montar-uma-particao-samba-compartilhamento-compartilha-linux-x-linux","status":"publish","type":"post","link":"https:\/\/blog.abratel.com.br\/?p=384","title":{"rendered":"Montar uma parti\u00e7\u00e3o samba compartilhamento compartilha Linux x Linux"},"content":{"rendered":"<p> mount -t cifs -o username=foo,password=bar \/\/192.168.0.50\/arquivos \/mnt\/win <\/p>\n<p>Observe que via cifs n\u00e3o \u00e9 poss\u00edvel o uso de nome netbios com ocorria com o smbfs. Por isso voc\u00ea deve usar o endere\u00e7o IP &#8211; a n\u00e3o ser que consiga resolver o ip via dns ou via \/etc\/hosts. <\/p>\n<p>Outra possibilidade bacana para desktops Linux \u00e9 a montagem de compartilhamentos na inicializa\u00e7\u00e3o. Para isso edite o \/etc\/fstab e insira a linha: <\/p>\n<p>\/\/ip_da_maquina\/nome_compartilhamento     \/ponto_de_montagem      cifs    defaults,user=nome_usu\u00e1rio,password=senha     0   0<\/p>\n<p>Montagem permanente dos compartilhamentos<\/p>\n<p>A forma mais pr\u00e1tica de acessar os compartilhamentos do Samba em clientes Linux \u00e9 utilizar clientes gr\u00e1ficos como o Smb4K (do KDE) e o m\u00f3dulo de acesso a compartilhamentos do Nautilus (dispon\u00edvel no menu &#8220;Locais > Rede&#8221;):<\/p>\n<p>Apesar disso, o Samba possui tamb\u00e9m um cliente de modo texto, o smbclient, usado via terminal. \u00c9 poss\u00edvel tamb\u00e9m montar os compartilhamentos diretamente, funcionalidade que equivale \u00e0 op\u00e7\u00e3o &#8220;mapear unidade de rede&#8221; dispon\u00edvel nos clientes Windows.<\/p>\n<p>Para que os compartilhamentos sejam montados durante o boot, \u00e9 necess\u00e1rio adicionar as entradas apropriadas no arquivo &#8220;\/etc\/fstab&#8221;. Dessa forma, os compartilhamentos s\u00e3o montados automaticamente durante o boot e ficam acess\u00edveis de forma permanente nas pastas especificadas por voc\u00ea. Esta \u00e9 uma op\u00e7\u00e3o interessante em muitos ambientes, j\u00e1 que \u00e9 mais f\u00e1cil para os usu\u00e1rios simplesmente acessarem os arquivos atrav\u00e9s de uma pasta, do que terem que montar o compartilhamento usando o Smb4K ou o Nautilus.<\/p>\n<p>O primeiro passo \u00e9 aprender a sintaxe da montagem dos compartilhamentos via linha de comando, j\u00e1 que as entradas do fstab utilizam os mesmos argumentos. Come\u00e7ando do b\u00e1sico, voc\u00ea pode listar os compartilhamentos dispon\u00edveis em um servidor da rede usando o comando:<\/p>\n<p>$ smbclient -L 192.168.1.254 -U gdh<\/p>\n<p>Veja que o comando especifica o endere\u00e7o do servidor (voc\u00ea pode usar tamb\u00e9m o nome na rede Windows) e a conta de usu\u00e1rio que ser\u00e1 usado para abrir a conex\u00e3o. Depois de fornecer a senha, voc\u00ea obt\u00e9m uma lista dos compartilhamentos dispon\u00edveis, como em:<\/p>\n<p>E230 Printer<br \/>\nprint$ Disk Drivers de impressao para os clientes Windows<br \/>\narquivos Disk<br \/>\nprojetos Disk<br \/>\nbackup Disk<br \/>\nIPC$ IPC IPC Service (Samba PDC)<\/p>\n<p>O exemplo mais simples para montar um dos compartilhamentos via linha de comando seria:<\/p>\n<p># mount -t smbfs \/\/servidor\/arquivos \/mnt\/smb<\/p>\n<p>Aqui, estou montando o compartilhamento &#8220;arquivos&#8221; na pasta &#8220;\/mnt\/smb&#8221; (que deve ser previamente criada usando o comando mkdir). O &#8220;servidor&#8221; pode tanto ser o nome da m\u00e1quina, dentro da rede Windows, quanto seu endere\u00e7o IP. Como em outros comandos de montagem, voc\u00ea precisa executar o comando como root.<\/p>\n<p>O comando mount \u00e9 um dos comandos mais tradicionais do Linux, que permite &#8220;mapear&#8221; um diret\u00f3rio qualquer dentro de outro diret\u00f3rio do sistema. A op\u00e7\u00e3o &#8220;-t&#8221; serve para especificar o sistema de arquivos, neste caso o &#8220;smbfs&#8221;, usado para acessar compartilhamentos Windows. Note que a localiza\u00e7\u00e3o do compartilhamento \u00e9 fornecida numa sintaxe muito similar \u00e0 que usar\u00edamos para mapear um compartilhamento no Windows, com a sintaxe &#8220;barra barra servidor barra compartilhamento&#8221;. A \u00fanica diferen\u00e7a \u00e9 que aqui usamos barras &#8220;normais&#8221; ao inv\u00e9s de barras invertidas.<\/p>\n<p>S\u00f3 para efeito de compara\u00e7\u00e3o, ao mapear o mesmo compartilhamento em uma m\u00e1quina Windows, ter\u00edamos:<\/p>\n<p>O problema com o comando anterior \u00e9 que ele s\u00f3 funciona realmente ao montar compartilhamentos do Windows 95, 98 e ME, que n\u00e3o possuem senhas. No Windows 2000, XP e Vista (com exce\u00e7\u00e3o das esta\u00e7\u00f5es com o simple sharing ativado), sem falar dos pr\u00f3prios servidores Linux rodando o Samba, voc\u00ea vai receber uma mensagem de acesso negado, j\u00e1 que neles voc\u00ea precisa se autenticar para obter acesso aos compartilhamentos. Para isso, \u00e9 necess\u00e1rio incluir a op\u00e7\u00e3o &#8220;-o username=usuario&#8221; (tudo junto, sem espa\u00e7os), especificando o login que ser\u00e1 usado, como em:<\/p>\n<p># mount -t smbfs \/\/servidor\/arquivos \/mnt\/smb -o username=gdh<\/p>\n<p>\u00c9 poss\u00edvel tamb\u00e9m especificar a senha diretamente no comando, o que permite us\u00e1-lo em scripts:<\/p>\n<p># mount -t smbfs \/\/servidor\/arquivos \/mnt\/smb -o username=gdh,password=1234<\/p>\n<p>Se, ao executar o comando, voc\u00ea receber um erro similar a:<\/p>\n<p>mount: tipo de sistema de arquivos incorreto, op\u00e7\u00e3o inv\u00e1lida, superbloco inv\u00e1lido em \/\/servidor\/arquivos, faltando p\u00e1gina de c\u00f3digo ou outro erro<br \/>\nEm alguns casos informa\u00e7\u00f5es \u00fateis s\u00e3o encontradas no syslog &#8211; tente &#8220;dmesg | tail&#8221; ou algo do tipo<\/p>\n<p>Significa que o cliente Samba e\/ou o suporte ao sistema de arquivos smbfs n\u00e3o est\u00e1 instalado na esta\u00e7\u00e3o. Nesse caso, instale o pacote &#8220;smbfs&#8221; usando o gerenciador de pacotes, como em:<\/p>\n<p># apt-get install smbfs<\/p>\n<p>Este problema \u00e9 muito reportado por usu\u00e1rios do Ubuntu, j\u00e1 que o pacote n\u00e3o vinha instalado por padr\u00e3o no Edgy, no Feisty e no Gutsy.<\/p>\n<p>Continuando, depois de montado o compartilhamento, os arquivos podem ser acessados normalmente, usando o Konqueror, Nautilus ou outro gerenciador de arquivos. \u00c9 muito similar ao acessar um compartilhamento mapeado no Windows, a principal diferen\u00e7a \u00e9 que voc\u00ea define uma pasta onde ele ser\u00e1 montado, ao inv\u00e9s de acess\u00e1-lo atrav\u00e9s de uma letra, como &#8220;E:&#8221; ou &#8220;Z:&#8221;.<\/p>\n<p>Uma peculiaridade do mount \u00e9 que os arquivos dentro da pasta montada passar\u00e3o por padr\u00e3o a ser propriedade do root. Isso n\u00e3o altera as permiss\u00f5es de acesso dos arquivos no servidor (a mudan\u00e7a \u00e9 apenas local), mas impede que seu login de usu\u00e1rio consiga alterar os arquivos, mesmo que as permiss\u00f5es de acesso do Samba digam o contr\u00e1rio.<\/p>\n<p>Para evitar isso \u00e9 necess\u00e1rio adicionar a op\u00e7\u00e3o &#8220;uid=&#8221;, especificando o login de usu\u00e1rio (na m\u00e1quina local) correto, como em:<\/p>\n<p># mount -t smbfs \/\/servidor\/arquivos \/mnt\/smb -o username=gdh,password=1234,uid=gdh<\/p>\n<p>A op\u00e7\u00e3o &#8220;uid=&#8221; \u00e9 interpretada localmente. O login especificado n\u00e3o \u00e9 repassado ao servidor Samba, de forma que voc\u00ea pode usar qualquer conta de usu\u00e1rio local. Ele serve apenas para corrigir as permiss\u00f5es de acesso, de forma que voc\u00ea possa alterar os arquivos normalmente usando seu login de usu\u00e1rio.<\/p>\n<p>O passo seguinte \u00e9 tornar a montagem permanente, j\u00e1 que usando o comando mount ela \u00e9 perdida ao reiniciar o micro. Para isso, inserimos uma nova linha no final do arquivo &#8220;\/etc\/fstab&#8221;. A ordem dos par\u00e2metros fica um pouco diferente, mas voc\u00ea notar\u00e1 que os argumentos continuam os mesmos que usamos no comando anterior:<\/p>\n<p>\/\/servidor\/arquivos \/mnt\/smb smbfs username=gdh,password=1234,uid=gdh 0 0<\/p>\n<p>Caso necess\u00e1rio, voc\u00ea pode tamb\u00e9m indicar o grupo, junto com o usu\u00e1rio local, usando a op\u00e7\u00e3o &#8220;gid=&#8221;, como em:<\/p>\n<p>\/\/servidor\/arquivos \/mnt\/smb smbfs username=gdh,password=1234,uid=gdh,gid=users 0 0<\/p>\n<p>O fstab \u00e9 um dos principais arquivos de configura\u00e7\u00e3o do sistema, por isso \u00e9 sempre importante ter cuidado ao edit\u00e1-lo. Apenas adicione a nova linha, sem alterar as anteriores e lembre-se sempre de deixar uma linha em branco no final do arquivo.<\/p>\n<p>Um par\u00e2metro \u00fatil que pode ser inclu\u00eddo \u00e9 a op\u00e7\u00e3o &#8220;users&#8221;, que permite que voc\u00ea consiga montar e desmontar o compartilhamento usando seu login de usu\u00e1rio, sem precisar usar a conta de root. Para isso, adicione o par\u00e2metro &#8220;user&#8221;, antes do &#8220;username=&#8221; (sem espa\u00e7os), como em:<\/p>\n<p>\/\/servidor\/arquivos \/mnt\/smb smbfs users,username=gdh,password=1234,uid=gdh 0 0<\/p>\n<p>A montagem e desmontagem neste caso \u00e9 feita indicando apenas o diret\u00f3rio, como em &#8220;umount \/mnt\/smb&#8221; e &#8220;mount \/mnt\/smb&#8221;. A principal observa\u00e7\u00e3o \u00e9 que o smbmnt (o comando respons\u00e1vel pela montagem) s\u00f3 aceita fazer a montagem em uma pasta de propriedade do usu\u00e1rio, por isso \u00e9 necess\u00e1rio ajustar as permiss\u00f5es da pasta usando o comando chown, como em:<\/p>\n<p># chown gdh:gdh \/mnt\/smb<\/p>\n<p>O &#8220;0 0&#8221; inclu\u00eddo sempre no final da linha \u00e9 um par\u00e2metro passado ao sistema, que diz que ele n\u00e3o deve verificar o sistema de arquivos usando o fsck durante a inicializa\u00e7\u00e3o, j\u00e1 que aqui estamos montando um compartilhamento de rede e n\u00e3o uma parti\u00e7\u00e3o.<\/p>\n<p>Embora n\u00e3o seja muito recomend\u00e1vel do ponto de vista da seguran\u00e7a, tamb\u00e9m \u00e9 poss\u00edvel escancarar as permiss\u00f5es, fazendo com que qualquer usu\u00e1rio logado no cliente Linux tenha acesso completo a todos os arquivos. Para isso, voc\u00ea usaria o par\u00e2metro &#8220;smbpasswd,fmask=777,dmask=777&#8221;, como em<\/p>\n<p>\/\/servidor\/arquivos \/mnt\/smb smbfs users,username=gdh,password=1234<br \/>\nsmbpasswd,fmask=777,dmask=777 0 0<\/p>\n<p>(tudo em uma \u00fanica linha)<\/p>\n<p>Como estamos adicionando as senhas dos compartilhamentos dentro do arquivo, tamb\u00e9m \u00e9 fortemente recomend\u00e1vel manter as permiss\u00f5es de leitura do arquivo em &#8220;600&#8221;, de forma que apenas o root tenha permiss\u00e3o para ver seu conte\u00fado. Para isso, use o comando:<\/p>\n<p># chmod 600 \/etc\/fstab<\/p>\n<p>\u00c9 poss\u00edvel montar diversos compartilhamentos, adicionando uma linha para cada um. N\u00e3o existe limita\u00e7\u00e3o para o n\u00famero m\u00e1ximo de compartilhamentos que podem ser adicionados, mas voc\u00ea deve ter cuidado de adicionar apenas compartilhamentos de servidores que ficam ligados continuamente. Se o servidor estiver desligado durante o boot da esta\u00e7\u00e3o, o boot do cliente vai demorar muito mais que o normal e o usu\u00e1rio ver\u00e1 o erro relacionado \u00e0 montagem do compartilhamento, o que n\u00e3o \u00e9 muito elegante, nem muito bom para sua reputa\u00e7\u00e3o como administrador. :)<\/p>\n<p>Nos exemplos anteriores, especificamos as senhas de montagem dos compartilhamentos diretamente no arquivo &#8220;\/etc\/fstab&#8221;. Mesmo protegendo o arquivo com o &#8220;chmod 600&#8221;, muita gente afirma que isso \u00e9 um problema grave de seguran\u00e7a, j\u00e1 que algu\u00e9m que conseguisse obter acesso ao arquivo, obteria automaticamente as senhas dos compartilhamentos.<\/p>\n<p>Uma op\u00e7\u00e3o \u00e9 usar um arquivo externo para armazenar as senhas. Ele pode ser armazenado tanto dentro do diret\u00f3rio \/home\/root, quanto dentro do home do usu\u00e1rio do sistema que tem acesso ao compartilhamento. Voc\u00ea pode tamb\u00e9m usar diversos arquivos de senha, um para cada compartilhamento que precisa ser montado.<\/p>\n<p>Para criar os arquivos de senha, use os tr\u00eas comandos abaixo, ainda como root:<\/p>\n<p># echo &#8220;username=gdh&#8221; > \/home\/gdh\/.smbpasswd<br \/>\n# echo &#8220;password=1234&#8221; >> \/home\/gdh\/.smbpasswd<br \/>\n# chmod 600 \/home\/gdh\/.smbpasswd<\/p>\n<p>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\u00e1rio, enquanto o segundo adiciona a linha com a senha. Se por acaso o arquivo j\u00e1 existir, ele \u00e9 subescrito.<\/p>\n<p>Como o arquivo foi criado pelo root, o comando &#8220;chmod 600&#8221; usado no final faz com que, mesmo colocado dentro do home do usu\u00e1rio &#8220;joao&#8221;, apenas o root tenha acesso ao arquivo, evitando acidentes.<\/p>\n<p>Voc\u00ea pode tamb\u00e9m criar o arquivo usando um editor de textos qualquer e ajustar as permiss\u00f5es manualmente. Neste caso, bastaria adicionar as duas linhas:<\/p>\n<p>username=gdh<br \/>\npassword=1234<\/p>\n<p>Com o arquivo criado, voc\u00ea pode modificar a(s) linha(s) no fstab, especificando a localiza\u00e7\u00e3o do arquivo, ao inv\u00e9s de colocar o usu\u00e1rio e senha diretamente, como em:<\/p>\n<p>\/\/servidor\/arquivos \/mnt\/smb smbfs users,credentials=\/home\/gdh\/.smbpasswd 0 0<\/p>\n<p>ou:<br \/>\n\/\/servidor\/arquivos \/mnt\/smb smbfs users,credentials=\/home\/gdh\/.smbpasswd<br \/>\nsmbpasswd,uid=gdh,gid=gdh 0 0<\/p>\n<p>(tudo em uma \u00fanica linha)<\/p>\n<p>Ao montar v\u00e1rios compartilhamentos, que s\u00e3o acessados usando o mesmo login e senha, voc\u00ea pode especificar o mesmo arquivo em todas as linhas, mas, no caso de diversos compartilhamentos, montados usando credenciais diferentes, voc\u00ea deve criar arquivos separados para cada um e especificar o arquivo correto dentro da linha de montagem de cada compartilhamento. Voc\u00ea pode criar quantos arquivos de senha diferentes quiser, mas cada arquivo deve conter um \u00fanico usu\u00e1rio e senha.<\/p>\n<p>Concluindo, uma limita\u00e7\u00e3o importante do smbfs \u00e9 que ele suporta, por default, transfer\u00eancias de arquivos de no m\u00e1ximo 2 GB. O sintoma do problema \u00e9 que as transfer\u00eancias come\u00e7am normalmente, mas param ao chegar aos 2 GB, com um erro &#8220;file size limit exceeded&#8221; ou outra mensagem de erro qualquer, gerada quando o gerenciador de arquivos n\u00e3o consegue concluir a transfer\u00eancia:<\/p>\n<p>Esta na verdade n\u00e3o \u00e9 uma limita\u00e7\u00e3o do Samba, mas sim do protocolo SMB, que \u00e9 usado por default pelo smbfs. A solu\u00e7\u00e3o para o problema \u00e9 adicionar a op\u00e7\u00e3o &#8220;lfs&#8221; (a sigla \u00e9 abrevia\u00e7\u00e3o de &#8220;large file support&#8221; e, como o nome sugere, ativa o suporte a arquivos de mais de 2 GB, que est\u00e1 dispon\u00edvel no protocolo CIFS) no comando de montagem, ou entre as op\u00e7\u00f5es especificadas na linha do fstab. como em:<\/p>\n<p># mount -t smbfs \/\/servidor\/arquivos \/mnt\/smb -o lfs,username=gdh,password=1234,uid=gdh<\/p>\n<p>ou:<br \/>\n\/\/servidor\/arquivos \/mnt\/smb smbfs lfs,users,username=gdh,password=1234<br \/>\nsmbpasswd,fmask=777,dmask=777 0 0<\/p>\n<p>(tudo em uma \u00fanica linha)<\/p>\n<p>\u00c9 importante notar que a op\u00e7\u00e3o lfs elimina qualquer limita\u00e7\u00e3o com rela\u00e7\u00e3o ao tamanho dos arquivos por parte do Samba, mas voc\u00ea ainda poder\u00e1 ter problemas ao copiar arquivos grandes para m\u00e1quinas com HDs formatados em FAT32, sistema que suporta arquivos de no m\u00e1ximo 4 GB. A solu\u00e7\u00e3o nesses casos \u00e9 (no caso das m\u00e1quinas Windows) converter as parti\u00e7\u00f5es para NTFS. No caso das m\u00e1quinas Linux, n\u00e3o existem restri\u00e7\u00f5es, j\u00e1 que o EXT3 suporta arquivos de at\u00e9 2 TB.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>mount -t cifs -o username=foo,password=bar \/\/192.168.0.50\/arquivos \/mnt\/win Observe que via cifs n\u00e3o \u00e9 poss\u00edvel o uso de nome netbios com ocorria com o smbfs. Por isso voc\u00ea deve usar o endere\u00e7o IP &#8211; a n\u00e3o ser que consiga resolver o ip via dns ou via&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts\/384"}],"collection":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=384"}],"version-history":[{"count":0,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts\/384\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=384"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=384"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=384"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}