O Serviço Samba

Redes Microsoft Windows

O protocolo mais usado para compartilhamento de recursos entre computadores com sistemas operacionais Microsoft Windows é o SMB - Server Message Block, também conhecido como CIFS - Common Internet File System. Ele permite o anúncio e compartilhamento de dispositivos do servidor como discos e impressoras aos clientes da rede. Além disso, esse mesmo protocolo é usado como base do sistema de autenticação em domínios O SMB é um protocolo proprietário desenvolvido inicialmente pela IBM e depois assumido pela Microsoft. Ele executa sobre o NETBIOS, que por sua vez executa sobre TCP/IP ou outros protocolos de transporte.

O Windows Vista introduziu uma nova versão do protocolo, denominada SMB 2.0, que atualmente só funciona entre máquinas Vista ou Windows Server 2008. Sua principais melhorias são:

Samba

Para permitir a integração de redes Microsoft a ambientes UNIX vem sendo desenvolvido desde 1991 um sistema chamado Samba, que permite o acesso de clientes Windows a recursos (impressoras, arquivos, etc) em servidores UNIX e vice-versa. O sistema Samba é open-source e de uso gratuito. Ele executa em uma grande variedade de sistemas UNIX e até mesmo em mainframes.

O uso mais frequente do Samba é substituir servidores de arquivos e/ou impressão Microsoft por servidores UNIX, com os seguintes objetivos:

O sistema Samba é composto por cliente e servidor. Um servidor Samba oferece os seguintes serviços, de forma transparente:

Por outro lado, o cliente Samba “smbclient” permite a uma máquina UNIX acessar serviços disponíveis em servidores Microsoft (ou servidores Samba).

Configuração do Samba

O serviço Samba é implementado basicamente por dois processos (daemons):

Esses dois daemons podem operar em modo autônomo, lançados pelo script de inicialização do Samba, ou através do Internet daemon (inetd/xinetd).

Os arquivos de configuração do Samba normalmente ficam no diretório /etc/samba/. O arquivo smb.conf contém os principais parâmetros de configuração de um servidor Samba, que estão detalhadas na página de manual smb.conf. Esse arquivo possui uma seção com definições gerais, comuns a todos os serviços, e definições específicas para cada compartilhamento (exemplo, página de manual). O formato desse arquivo é o seguinte:

# este é um comentário
; este também é um comentário

[global]
    tag_name = tag_value
    tag_name = tag_value
    ...

[share_1]
    tag_name = tag_value
    tag_name = tag_value
    ...

[share_2]
    tag_name = tag_value
    tag_name = tag_value
    ...

...

Os principais parâmetros de configuração global do servidor são os seguintes:

Parâmetro e exemplo de valor Significado
workgroup = RSS04 Nome de domínio ou de grupo de trabalho
server string = “Meu servidor” Descrição do servidor
netbios name = VIRTSERV Nome NetBios deste servidor
interfaces = 20.0/16 Indica as interfaces de rede que o servidor deve atender
hosts allow = 20.0. 10.26. 127. Permite limitar o acesso somente a IPs autorizados
printcap name = /etc/printcap
load printers = yes
carrega as informações de impressoras disponíveis no servidor e as compartilha automaticamente
printing = cups Indica qual o sub-sistema de impressão UNIX a ser usado
guest account = pcguest Habilita uma conta guest (usa a conta nobody por default)
log file = /var/log/samba/%m.log Localização do arquivo de log
max log size = 0 Limite do arquivo de log em Kb (0 remove o limite)
security = share Modo de segurança a ser usado
local master = yes Controle de browsing (manutenção das informações do “ambiente de rede”)
domain master = yes Indica que este servidor será o mestre de browsing deste domínio
domain logons = yes Para o servidor ser o servidor de domínio da rede local
logon script = script.bat Script a executar pelos clientes ao entrar no domínio
wins support = yes Habilita o Samba como servidor WINS
wins server = w.x.y.z Habilita o Samba como cliente WINS

Em cada compartilhamento podem ser definidos vários parâmetros, dos quais os mais relevantes são:

Parâmetro e exemplo de valor Significado
comment = “Diretório comum” Descrição do compartilhamento
valid users =
valid users = joao, jose, maria
valid users = marcos, @prof
Usuários (ou grupos) que podem acessar este recurso
writeable = yes Permite-se a escrita ou somente a leitura?
browseable = yes Aparece nas listas do “Ambiente de Rede”
path = /home/comum Caminho do recurso dentro do servidor
force user = nobody Para forçar o acesso como sendo de um dado usuário local
force group = nobody Para forçar o acesso como sendo de um dado grupo local
guest ok = yes permite o acesso da conta guest
create mode = 0700 Permissões para criação de arquivos no UNIX
printable = yes Este recurso é uma impressora
hide files = /.*/ Arquivos a ocultar (expressão regular)

O arquivo de configuração permite a utilização de variáveis, que são substituidas por seus valores quando ocorre a conexão de cada cliente. As principais variáveis utilizadas são:

variável significado
%U nome de login do usuário
%G grupo do usuário
%h nome Internet (FQDN) do servidor Samba
%L nome NETBIOS do servidor Samba
%M nome Internet (FQDN) da máquina cliente
%m nome NETBIOS da máquina cliente
%I endereço IP da máquina cliente
%d PID do processo servidor
%T data e hora atual
%D nome do domínio ou grupo de trabalho do usuário corrente
%S nome do serviço corrente
%P diretório do serviço corrente

Eis um exemplo mínimo de arquivo de configuração, com apenas um compartilhamento publico:

[global]
    workgroup = MEUGRUPO
    netbios name = FILESERV
    security = share
    log file = /var/log/samba/%m.log

[comum]
    comment = Area publica de arquivos
    path = /home/comum
    read only = no
    guest ok = yes

Outro exemplo, no qual cada usuário tem acesso a seu diretório pessoal (homes), a um diretório público (comum) e às impressoras instaladas no sistema:

# Global parameters

[global]
    workgroup = MEUGRUPO
    netbios name = FILESERV
    printcap name = cups
    printing = cups

# Esta entrada compartilha automaticamente o diretório HOME de
# cada usuário registrado no Samba.
# (o nome do compartilhamento recebe o nome de login do usuário)
[homes]
    comment = Home Directories
    valid users = %S
    read only = No
    browseable = No

[comum]
    comment = Public data
    path = /home/comum
    force user = nobody
    force group = nobody
    guest ok = Yes

[printers]
    comment = All Printers
    path = /var/spool/samba
    printer admin = root
    create mask = 0600
    guest ok = Yes
    printable = Yes
    use client driver = Yes
    browseable = No

Outras configurações básicas de exemplo, além de informações mais detalhadas sobre a instalação e uso do Samba, podem ser obtidas no documento Samba HowTo.

Alguns utilitários são fornecidos junto com o Samba, para facilitar seu uso:

Modos de segurança

O parâmetro de configuração global “security” permite definir o modo de operação do servidor Samba em relação à autenticação de usuários. Os valores possíveis e seus significados são:

Deve-se observar que os usuários apresentados pelos clientes Samba para acesso ao servidor devem ser usuários válidos do sistema UNIX onde está o servidor. Além disso, esses usuários (e suas senhas) devem ser registrados junto ao Samba através do utilitário “smbpasswd”:

(server)$ smbpasswd -a teodoro
New SMB password: *****
Retype new SMB password: ******

Swat

O Samba possui uma interface Web para administração, disponibilizada através de um software externo chamado SWAT -- Samba Web Administration Tool. O Swat permite configurar a maioria dos parâmetros de operação de um servidor Samba através de uma interface Web, usando um navegador padrão:

Tela de exemplo do Swat

Como o Swat implementa seu próprio servidor Web interno, não é necessário instalar o servidor Apache. Ele é normalmente ativado através do Internet daemon, ouvindo na porta TCP 901. Para gerenciar o servidor Samba através do Swat é necessário:

  1. instalar os softwares xinetd e swat
  2. configurar o lançamento do Swat (editar o arquivo /etc/xinetd.d/swat)
  3. reiniciar o Internet daemon (service xinetd restart)
  4. apontar um navegador para http://servidor-samba.domain:901

Importante: para usar o SWAT com segurança através da Internet, deve-se empregar SSL (por exemplo, usando um tunel SSH ou o software stunnel).