• Nenhum resultado encontrado

Prática e Administração de Sistemas Operacionais de Redes Livres. Serviço Samba. Samba server e client. Outubro/2017. Prof. Jairo.

N/A
N/A
Protected

Academic year: 2021

Share "Prática e Administração de Sistemas Operacionais de Redes Livres. Serviço Samba. Samba server e client. Outubro/2017. Prof. Jairo."

Copied!
16
0
0

Texto

(1)

Serviço Samba

Samba server e client

Outubro/2017 Prof. Jairo jairo@uni9.pro.br professor@jairo.pro.br http://www.jairo.pro.br/

(2)

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.

O arquivo "samba.pdf" pode ser livremente acessado em "http://www.jairo.pro.br/prat_adm_sist_oper/".

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

(3)

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:

serviço de nomes: localiza3 nomes na rede;

serviço de sessão: provê conexão entre dois computadores;

serviço de datagrama: provê um canal de comunicação não orientado à conexão entre

computadores.

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.

1 IPC: Inter Process Communication.

2 Network Basic Input Ouput System. Posteriormente, do NetBIOS foi separado o software de interface do protocolo de comunicação em rede, daí vem o NetBEUI (NetBIOS Extended User Interface).

3 Localiza via broadcast na LAN, por isso é bastante lento e ineficiente. 4 Alto nível: pois trabalha no topo do NetBIOS.

(4)

3 - SAMBA

Samba é uma aplicação client-server que implementa o protocolo SMB.

O Samba é composto de duas partes: cliente e servidor, e foram desenvolvidas na intenção de facilitar a comunicação e compartilhamento de recursos em rede entre sistemas das famílias Windows e Unix.

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

O serviço Samba pode ser disponibilizado em qualquer sistema da família Unix e, uma vez configurado, permite ao cliente Windows buscar recursos neste sistema operacional, sendo que para

o Windows fica a impressão de que esse recurso está sendo disponibilizado também numa máquina Windows.

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.

5 NFS: Network File System.

Windows: acessa este compartilhamento Samba server: cria

(5)

No caso do workgroup, trata-se de uma organização lógica apenas de visualização e agrupamento de computadores, que vem desde o Windows 3.11 for workgroups, de 1993.

A principal característica do workgroup é que cada máquina é uma unidade administrativa com suas próprias contas de usuários, senhas, etc, e por isso essa organização é um esquema ineficiente do ponto de vista administrativo para redes médias ou grandes.

Já o domain é um agrupamento lógico de servidores e estações de trabalho que

compartilham informações comuns de segurança, contas de usuários e senhas. Dentro do domínio6,

o administrador cria uma conta de acesso para o usuário que poderá então efetuar "logon" a partir de qualquer estação que participe deste domínio.

A organização da rede Windows do qual o Samba participe tem impacto na autenticação do usuário, onde hora é local (workgroup), hora é no AD (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

O Samba client é uma aplicação para acessar, por exemplo, o recurso compartilhado pelo Windows. Também pode ser usado para acessar o recurso compartilhado pelo Samba server.

6 - INSTALAÇÃO DO SAMBA

A instalação do Samba será standalone, e não inetd (ou xinetd).

Para descobrir se o serviço Samba está instalado, num Ubuntu 12 (SystemV), procurar pelo seu script de inicialização em /etc/init.d:

6 Desde o Windows 2000, o controlador de domínio é o AD (Active Directory).

root# ls /etc/init.d | grep smbd

compartilhamento (num Windows) compartilhamento (num Linux/Unix) Samba client: acessa o recurso compartilhado

(6)

NOTA 1: num CentOS ou Red Hat SystemV, o script de inicialização é "/etc/init.d/smb". NOTA 2: num Debian ou Ubuntu SystemD, o comando equivalente é

"systemctl list-units --all | grep smbd".

NOTA 3: num CentOS ou Red Hat SystemD, o comando equivalente é "systemctl list-unit-files | grep smb".

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:

/etc/init.d/smbd: é o script de inicialização do serviço Samba (num CentOS é /etc/init.d/smb);

/usr/sbin/smbd: é o executável do DAEMON do serviço Samba, que provê serviço SMB/CIFS;

/usr/sbin/nmbd: é o executável do processo daemon que provê serviço NetBIOS name server (serviço de nomes);

/etc/samba: é o diretório de configuração do serviço; • /etc/samba/smb.conf: é o arquivo de configuração do serviço Samba.

7 - CONFIGURAÇÃO DO SERVIÇO SAMBA

Inicialmente, vamos apenas olhar as configurações de instalação do serviço. Para isso, entrar no diretório /etc/samba:

root# apt-get install samba samba-common smbclient

(7)

O arquivo de configuração do serviço é "smb.conf".

Nesse arquivo, uma configuração importante no Global Settings é workgroup, cujo default já está para workgroup = WORKGROUP. Outra configuração é log file, que define o arquivo de logs deste serviço.

Em Share Definitions, já existem alguns compartilhamentos prontos, como [homes] e [printers]. O compartilhamento homes é para o usuário Linux/Unix acessar a sua home a partir do Windows. Printers é para usar o servidor de impressão no Linux/Unix.

Normalmente – e erradamente – algumas aplicações como o apt-get instalam e já iniciam o processo daemon, isso sem configurar o serviço. Por isso, após a instalação é necessário verificar se existe o processo daemon rodando:

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.

Para parar o serviço num Ubuntu 12, usar o comando:

NOTA 1: num Red Hat ou CentOS SystemV, o comando é "/etc/init.d/smb stop". NOTA 2: num Debian ou Ubuntu SystemD, o comando equivalente é

"systemctl stop smbd".

NOTA 3: num CentOS ou Red Hat SystemD, o comando equivalente é

root# ps -ef | grep smbd

root 4568 1 0 16:02 ? 00:00:00 /usr/sbin/smbd -D

root 4570 4568 0 16:02 ? 00:00:00 /usr/sbin/smbd -D

root# /etc/init.d/smbd stop

root# cd /etc/samba

root# ls

gdbcommands smb.conf

(8)

"systemctl stop smb".

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". Agora, é só fazer o scan de portas:

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:

========== arquivo /etc/samba/smb.conf ======================================= [TEMP] comment = "Compartilhamento do /tmp" read only = no browseable = yes path = /tmp =======================================================================

root# apt-get install nmap

root# nmap localhost

Starting Nmap 5.21 ( http://nmap.org ) at 2017-07-22 17:21 BRST Nmap scan report for localhost (127.0.0.1)

Host is up (0.0000010s latency). Not shown: 993 closed ports

PORT STATE SERVICE

631/tcp open ipp

(9)

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:

Estando tudo bem no arquivo de configuração, iniciar o serviço Samba. O exemplo abaixo é de um Ubuntu SystemV:

NOTA 1: num Red Hat ou CentOS SystemV, o comando é "/etc/init.d/smb start". NOTA 2: num Debian ou Ubuntu SystemD, o comando equivalente é

"systemctl start smbd".

NOTA 3: num CentOS ou Red Hat SystemD, o comando equivalente é "systemctl start smb".

Depois disso, o scan de portas vai mostrar que as portas 139 e 445 também estão abertas:

root# /etc/init.d/smbd start

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 ...

(10)

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:

As opções do comando acima são:

-m: é a opção para criar a home do usuário;

-s: é a opção para escolha do shell do usuário, no caso foi escolhido /bin/bash. Uma vez que exista o usuário no sistema, basta adicioná-lo ao serviço Samba com o comando smbpasswd:

A opção do comando acima é:

7 No workgroup, os usuários são locais às máquinas. Se fosse um domain, eles estariam centralizados no AD.

root# nmap localhost

Starting Nmap 5.21 ( http://nmap.org ) at 2017-07-22 17:28 BRST Interesting ports on localhost (127.0.0.1):

Not shown: 997 closed ports

PORT STATE SERVICE

139/tcp open netbios-ssn

445/tcp open microsoft-ds

631/tcp open ipp

Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds

root# ps -ef | grep nmbd

root 4578 4541 0 16:02 pts/3 00:00:00 /usr/sbin/nmbd

root# useradd -m -s /bin/bash aluno

root# smbpasswd -a aluno

New SMB password: Retype new SMB password: Added user aluno.

(11)

-a: é a opção para adicionar o usuário ao serviço. Se o usuário já existisse, o comando smbpasswd sem a opção "-a" seria usado para alterar a senha do usuário no serviço.

Para saber quais usuários estão cadastrados no serviço Samba, usar o comando pdbedit:

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.

8 - TESTAR O ACESSO AO COMPARTILHAMENTO

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

NOTA 1: 192.168.1.10 é o endereço IP do Samba server; NOTA 2: o usuário logado no Windows também é o aluno.

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:

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

NOTA: 192.168.1.XX é o IP do Samba server de outra máquina virtual, em outro host.

root# ls -l /tmp

(12)

9 - SAMBA CLIENT

O Samba client permite ao cliente Linux/Unix buscar recursos compartilhados no Windows ou no serviço Samba. Samba client é um conjunto de executáveis clientes do serviço Samba, mas que também podem acessar recursos compartilhados no Windows.

Vamos testar o acesso em dois casos, com dois aplicativos clientes:

i) smbclient: é uma interface de acesso semelhante ao cliente FTP, onde as instruções de transferência de arquivos são passadas na linha de comando;

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: 192.168.1.10 é o endereço IP do Samba server. As opções do comando acima são:

-L: é para apenas listar os compartilhamentos que o usuário tem acesso;

-U: é para conectar com o usuário aluno e não como root (pois o shell é de root).

Conectando no Samba server, o comando acima vai mostrar os compartilhamentos possíveis para o usuário aluno.

Para acessar o compartilhamento TEMP com o usuário aluno, comandar:

root# smbclient -L //192.168.1.10 -U aluno

(13)

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:

NOTA: se estivéssemos usando organização da rede domain e não autenticação local

(workgroup), o comando seria smbclient //192.168.1.10/TEMP -U domain\\aluno, onde o nome desse domínio é "domain".

Para acessar a home do usuário aluno, reconfigurar o Samba server e descomentar o compartilhamento homes:

========== arquivo /etc/samba/smb.conf ======================================= [homes]

comment = "Home Directories" browseable = yes

writable = yes valid users = %S

======================================================================= 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# smbclient //192.168.1.10/TEMP -U aluno

Enter aluno's password:

Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.25] smb: \>

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

.. !

(14)

Depois, é só checar as configurações com testparm. Posteriormente, dar um reload no serviço Samba e testar o acesso com smbclient:

NOTA 1: o exemplo acima é para um Ubuntu 12;

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.

NOTA 3: para testar com o Windows: ir para Iniciar → Executar e comandar: \\192.168.1.10\aluno

NOTA 4: 192.168.1.10 é o endereço IP do Samba server.

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.

A montagem do recurso compartilhado pelo Samba server ou Windows via "smbmount" é útil ao usuário cliente usando determinada estação de trabalho que tenha um ambiente gráfico num Linux/Unix, pois é característica de usuário desktop (isto é, estação de trabalho) entender apenas de ícones e botões no ambiente gráfico e, pensando assim, é muito mais fácil ensinar este usuário a usar o "clique-clique" do mouse ao invés da linha de comando.

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.

Funciona de forma semelhante ao "smbclient" e muda apenas no acesso: ao invés de uma interface de texto semelhante ao acesso FTP, temos agora uma pasta onde foi previamente montado

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: \>

(15)

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:

Depois disso, criar um ponto de montagem8:

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";

NOTA 2: no Red Hat (ou CentOS) o comando smbmount é considerado obsoleto (descontinuado).

Depois, verificar a montagem com o comando df:

Para escrever um arquivo na home de aluno remota, basta escrever no diretório 8 Normalmente, um ponto de montagem é qualquer diretório vazio.

root# apt-get install smbfs

root# mkdir /mnt/samba

root# df -h

root# mount -t cifs //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

(16)

/mnt/samba:

Para desmontar o recurso, comandar umount /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.

9 Diskless: isto é, sem disco ou dispositivo de armazenamento de dados.

Referências

Documentos relacionados

Dentre os 71 artigos selecionados, 27 utilizaram técnicas moleculares como ferramenta diagnóstica e 44 artigos utilizaram de testes sorológicos para investigação de

I. Administrar unidades hospitalares, bem como prestar serviços de assistência médico-hospitalar, ambulatorial e de apoio diagnóstico e terapêutico à comunidade,

A partir de uma questão oriunda da minha prática docente, pertinente à análise sintática de frases com os predicadores medir, pesar, custar e durar, empreendi este estudo que

Para continuar a comprar online, os leais são mais levados pela atitude em relação ao uso da tecnologia, em que elementos de hedonismo ou até de impulsividade nas compras

Como resposta aos objetivos propostos o trabalho identificou formas de abordagem à SCRM e uma estrutura lógica para a gestão dos riscos em cadeia de suprimentos composta pela

Quando a energia se transfere entre sistemas, pode transformar-se de uma forma para outra diferente – porém a quantidade total de energia permanece constante..

O PREFEITO MUNICIPAL DE PIRAQUARA, Estado do Paraná, no uso de suas atribuições legais e com base na Lei nº 8.666/93 e de acordo com o procedimento licitatório e

A ação participativa hábil em educação é orientada pela promoção solidária da participação por todos da comunidade escolar, na construção da escola