Escolar Documentos
Profissional Documentos
Cultura Documentos
Serviço Samba
Samba server e client
Outubro/2017
Prof. Jairo
jairo@uni9.pro.br
professor@jairo.pro.br
http://www.jairo.pro.br/
Este material tem por única intenção reunir um conteúdo acadêmico necessário para auxiliar
no ensino da disciplina "Prática e Administração de Sistemas Operacionais de Redes Livres",
ministrado nos cursos de Tecnologias em Redes de Computadores e Segurança da Informação.
O conteúdo aqui exposto pode ser livremente redistribuído e usado como apoio de aula,
desde que mantenha a sua integridade original.
Qualquer crítica ou sugestão, favor entrar em contato com o Prof. Jairo no endereço
eletrônico "jairo@uni9.pro.br" ou "professor@jairo.pro.br".
Sumário
1 - HISTÓRICO...................................................................................................................................3
2 - NETBIOS........................................................................................................................................3
3 - SAMBA...........................................................................................................................................4
4 - SAMBA SERVER...........................................................................................................................4
5 - SAMBA CLIENT............................................................................................................................5
6 - INSTALAÇÃO DO SAMBA..........................................................................................................5
7 - CONFIGURAÇÃO DO SERVIÇO SAMBA.................................................................................6
8 - TESTAR O ACESSO AO COMPARTILHAMENTO..................................................................11
9 - SAMBA CLIENT..........................................................................................................................12
9.1 - smbclient................................................................................................................................12
9.2 - smbmount..............................................................................................................................14
1 - HISTÓRICO
O nome Samba vem de SMB, Server Message Block, que é um protocolo frequentemente
usado para compartilhamento de arquivos e impressoras em rede. Mas SMB também pode ser usado
para comunicação entre processos1, para comunicar processos em diferentes sistemas.
SMB apareceu no início do IBM-PC, por volta de 1982/1983, quando a IBM desenvolveu
um sistema para comunicação em pequenas LANs. Esse sistema incluiu o que foi chamado de
NetBIOS2.
Modernamente, SMB é conhecido por CIFS, The Common Internet File System Access
Protocol. A Microsoft define CIFS como um dialeto do SMB.
2 - NETBIOS
NetBIOS é um padrão para a transmissão de dados entre computadores em rede, que permite
comunicação entre aplicações clientes e servidoras. NetBIOS provê três serviços básicos:
Porém, NetBIOS é apenas um padrão para encontrar recursos e transmitir bits de dados pela
rede. Então, é necessário um protocolo de alto nível4 para dar uso real ao NetBIOS, e SMB é o
protocolo que envia comandos e dados pela LAN.
SMB sobre NetBIOS usa as portas UDP 137 (serviço de nomes) e 138 (serviço de
datagrama), ou porta TCP 139 (serviço de sessão). A partir do Windows 2000, vem incluído SMB
sem NetBIOS na porta TCP 445, e esse suporte é chamado de Direct Host.
3 - SAMBA
Se a rede for composta apenas por membros da família Windows (ou somente família Unix),
não existe problemas nessa comunicação, pois cada família tem nativamente seus próprios
protocolos. Por exemplo, no Windows tem SMB/CIFS e no Unix tem NFS5, entre outros.
Mas para resolver o problema de redes mistas Windows x Unix se faz necessário o Samba.
Por exemplo, uma máquina Windows, nativamente, não tem porquê implementar também o suporte
a sistema de arquivos NFS. Então a solução para esse problema, por mais paradoxal que possa
parecer, é implementar no Unix um serviço e uma aplicação cliente que usem os mesmos protocolos
SMB/CIFS e, dessa forma, garantir a comunicação em rede entre famílias Windows e Unix. Isto soa
como o sistema membro da família Unix "se disfarçar" de Windows para conseguir comunicação.
E com esse "disfarce", agora o cliente Windows acredita que o serviço Samba é outra
máquina Windows de onde possa buscar recursos compartilhados em rede.
4 - SAMBA SERVER
Como o serviço Samba é usado basicamente para comunicação em rede entre Windows e
sistema da família Unix, para podermos configurar apropriadamente o serviço Samba precisamos
primeiramente ter em vista o que seja a organização da rede Windows.
Quanto à organização, a rede Windows pode ser dividida basicamente em duas: workgroup e
domain.
Uma vez definido em qual organização de rede Windows irá trabalhar o Samba é que é feita
a configuração do serviço.
5 - SAMBA CLIENT
6 - INSTALAÇÃO DO SAMBA
Para descobrir se o serviço Samba está instalado, num Ubuntu 12 (SystemV), procurar pelo
seu script de inicialização em /etc/init.d:
Se não houver saída no comando acima é indicativo de que o serviço Samba não está
instalado. Nesse caso, num Ubuntu ou Debian, instalar com o comando apt-get:
Se fosse uma distribuição Linux baseada no Red Hat (por exemplo, CentOS), o comando
para instalar seria yum:
Depois de instalado num sistema SystemV (Ubuntu 12), verificar se existem os seguintes
arquivos:
Inicialmente, vamos apenas olhar as configurações de instalação do serviço. Para isso, entrar
no diretório /etc/samba:
root# cd /etc/samba
root# ls
gdbcommands smb.conf
Portanto, se houver saída no comando, isto indica que o processo está rodando e deve ser
parado este serviço. Reparar também que o processo daemon (neste caso) é o de PID 4568, e que os
demais são processos filhos à espera de clientes.
Agora, o comando ps -ef | grep smbd não deverá mostrar o daemon rodando.
Antes de iniciar o serviço Samba, verificar quais portas TCP estão abertas. Para isso, é
necessário a aplicação nmap para fazer um scan de portas. E se esta aplicação não estiver
instalada, fazer a instalação:
NOTA: num Red Hat ou CentOS, o comando equivalente seria "yum install nmap".
NOTA: a saída do comando acima mostra que apenas a porta 631 (serviço de impressão
CUPS) está aberta.
Antes de iniciar o serviço Samba, vamos criar um compartilhamento chamado TEMP, que
compartilha o diretório local /tmp. Para isso, é necessário configurar o arquivo smb.conf e
incluir em Share Definitions o seguinte conteúdo:
onde:
• TEMP: é o nome do compartilhamento;
• comment: é um comentário (é a mensagem que será vista na barra de título da
janela no Windows);
• read only = no: é para permitir escrita no /tmp;
• browseable = yes: permite que este compartilhamento seja visualizado quando alguém
fizer busca por compartilhamentos nas vizinhanças;
• path: é o caminho para o diretório físico que está sendo compartilhado.
Após fazer alguma alteração no arquivo smb.conf, usar o comando testparm para checar se
o conteúdo do arquivo está correto:
root# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[TEMP]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
...
Estando tudo bem no arquivo de configuração, iniciar o serviço Samba. O exemplo abaixo é
de um Ubuntu SystemV:
Depois disso, o scan de portas vai mostrar que as portas 139 e 445 também estão abertas:
O comando ps agora mostra que o daemon smbd está rodando (conforme acima). Além
disso, também está rodando o daemon nmbd:
Como estamos num workgroup7, precisa adicionar o usuário aluno ao serviço Samba, com
senha. Para isso, o primeiro passo é criar o usuário no sistema, caso ainda não exista. Se o usuário
aluno ainda não existisse, o comando para criá-lo seria:
Uma vez que exista o usuário no sistema, basta adicioná-lo ao serviço Samba com o
comando smbpasswd:
7 No workgroup, os usuários são locais às máquinas. Se fosse um domain, eles estariam centralizados no AD.
Para saber quais usuários estão cadastrados no serviço Samba, usar o comando pdbedit:
root# pdbedit -L -v
Os arquivos onde ficam os usuários do serviço Samba e suas senhas são passdb.tdb e
secrets.tdb. Num Ubuntu fica no diretório /var/lib/samba e num CentOS em /var/lib/samba/private.
Como o sistema Linux que está sendo usado está virtualizado (é um guest) num Windows, o
jeito mais simples de testar o acesso é usar o próprio Windows (que é o host). Neste caso, basta ir
para Iniciar → Executar e comandar:
\\192.168.1.10\TEMP
O Windows deverá acessar o compartilhamento numa nova janela. Copie algum conteúdo
para esse compartilhamento, volte para o Samba server e observe que esse conteúdo foi escrito no
diretório /tmp:
root# ls -l /tmp
Para confirmar que o compartilhamento criado no Samba server está disponível para toda a
rede local, pode repetir o teste de acesso, porém agora acessar de outro Windows que não o host
deste Linux:
\\192.168.1.XX\TEMP
9 - SAMBA CLIENT
ii) smbmount (ou mount -t cifs): é uma ferramenta que permite ao cliente Linux/Unix
montar localmente o recurso compartilhado pelo serviço Samba (ou Windows).
9.1 - smbclient
No caso (i), usar o comando smbclient para acessar o compartilhamento TEMP criado no
item 7, acima:
NOTA: convém notar que o prompt da aplicação smbclient é semelhante a do client FTP.
Para saber quais comandos podem ser passados pelo smbclient, comandar:
Smb: \> ?
? allinfo altname archive blocksize
cancel case_sensitive cd chmod chown
close del dir du echo
exit get getfacl hardlink help
history iosize lcd link lock
lowercase ls l mask md
mget mkdir more mput newer
open posix posix_encrypt posix_open posix_mkdir
posix_rmdir posix_unlink print prompt put
pwd q queue quit rd
recurse reget rename reput rm
rmdir showacls setmode stat symlink
tar tarmode translate unlock volume
vuid wdel logon listconnect showconnect
.. !
smb: \>
Esse compartilhamento também exige que o usuário no Samba server tenha home no sistema
Linux/Unix. No caso do usuário aluno, estas exigências são atendidas, pois ele tem home e já foi
adicionado ao Samba server.
root# testparm
…
root# /etc/init.d/smbd reload
root# smbclient //192.168.1.10/aluno -U aluno
Enter aluno's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.25]
smb: \>
NOTA 2: foi necessário informar o usuário com a opção -U, pois quem está dando o
comando é root e não aluno.
Convém notar que o compartilhamento "aluno", acima, leva para a home do usuário aluno.
9.2 - smbmount
O caso (ii) envolve montar localmente o recurso compartilhado pelo serviço Samba (ou
Windows). Nesse caso, o cliente é chamado smbmount, e serve para montar este recurso remoto
num ponto de montagem local.
Pensando nessa característica do usuário é que foi criada a montagem Samba, ela permite
acessar o recurso compartilhado remotamente pelo servidor Samba ou Windows simplesmente
"clicando" numa determinada pasta local onde foi previamente montado o recurso compartilhado.
o recurso remoto compartilhado, "clicando" nesta pasta acessa todo o recurso remoto que está sendo
entregue pelo compartilhamento.
Para montar o sistema de arquivo precisa instalar também o pacote smbfs. Normalmente,
no Red Hat (ou CentOS) esse pacote já é instalado junto com samba-client. No Debian (ou
Ubuntu), precisa instalar com o comando:
Por fim, montar o recurso compartilhado pelo Samba server (ou Windows) no ponto de
montagem /mnt/samba:
NOTA 1: ao invés de "mount -t cifs" poderia ter sido usado o comando smbmount. Neste
caso, o comando seria "smbmount //192.168.1.10/aluno /mnt/samba -o
username=aluno,password=uninove";
root# df -h
Sist. Arq. Tam Usad Disp Uso% Montado em
/dev/sda2 40G 5,1G 33G 14% /
//192.168.1.10/aluno 20G 2,6G 17G 15% /mnt/samba
root# ls /mnt/samba
/mnt/samba:
Em relação ao exemplo acima, num caso mais realista o próprio processo do "logon" do
usuário na máquina Linux/Unix já poderia disparar um script que fizesse a montagem da home do
usuário, com isso o usuário poderia ter uma home não local, ou seja, independente da estação de
trabalho que ele estivesse logado acessaria sempre a mesma home.
Este recurso, oferecer a home sempre no mesmo servidor de arquivos, independente de qual
estação de trabalho o usuário usou para efetuar logon, é muito útil em vários casos, especialmente
para a estação de trabalho diskless9.
Repare que com o "mount -t cifs" é possível usar uma estação diskless e mesmo assim
ofertar neste acesso a home do usuário, mesmo que essa home esteja, por exemplo, num servidor de
arquivo NT.