Utilizando o SAMBA - Parte I
Por: Victor Zucarino ( 28/03/2001 )

Introdução

Antes de começar vamos entender o que é o Samba. Em uma rede é necessário compartilhar dados, por isso temos que pensar em obter o máximo em qualidade do Sistema/Aplicação que será o responsável por esta tarefa.

Com o SAMBA é possível compartilhar diretórios, impressoras, acessar arquivos na rede exatamente como em redes Microsoft. Mas neste caso, seu servidor é um Linux rodando uma aplicação específica. O Windows NT e o 2000 (assim como o NetWare 5 e outros presentes no mercado) são reconhecidos mundialmente por sua segurança e escalabilidade, mas o SAMBA possui muitas vantagens que podem se transformar em soluções e economia para sua empresa. Confira:

  • Permite compatibilidade com estações Windows (de WfW a 2000) e servidores WinNT 4.0 e 2000. Entre servidores e estações Linux (com Interface Gráfica por exemplo) a compatibilidade é total.
  • O SAMBA é 100% configurável, com a grande vantagem de centralizar esta configuração em um único arquivo, o smb.conf. Sem dúvida é muito interessante ter a possibilidade de restaurar toda a configuração que disponibiliza seu Servidor de Arquivos (inclusive as permissoes de acesso) através do backup de apenas 1 arquivo, em casos de desastre. Porém isso não quer dizer que não seja necessário o backup de outros arquivos de configuração... :)
  • Todo o SAMBA pode ser configurado remotamente através de acesso seguro, além do recebimento por email de informações do estado do servidor (bastando utilizar um script específico que busca informações nos arquivos de log e cria um arquivo que pode ser enviado por email).
  • Em se falando de economia não há o que discutir: o Linux e o SAMBA estão disponíveis para download na Internet sem ônus algum para qualquer usuário comum ou empresa que se interesse em utilizá-lo, sem custos com licenças ou atualizações.
  • As mais recentes distribuições já trazem o SAMBA como padrão, mas seu download e atualizações estão disponívies em: http://us4.samba.org/samba/download.html
  • O suporte está disponível 24h por dia, o ano todo: além do próprio site do SAMBA existem milhares de sites e listas de discussão dedicadas ao assunto, entre outras documentações e artigos em sites de renome por Administradores e Engenheiros de Redes Linux. Muita coisa já está em nosso idioma facilitando os iniciantes e interessados em leitura. Muitos sites nacionais são especializados em Linux e Segurança para Linux.

Instalação

Se a distribuição que deseja utilizar já traz o SAMBA (como a Conectiva, RedHat, Mandrake, Debian, TechLinux, Suse, praticamente todas hoje em dia!), a instalação não é necessária. Se deseja atualizá-lo ou iniciar a instalação, siga os passos abaixo:

Para instalar o SAMBA é necessário antes saber se o pacote obtido está no formato DEB, RPM ou .tar (.tgz ou .tar.gz). Se sua distribuição for Debian, utilize apt-get install samba smbclient smbfs . Se o pacote for um RPM (RedHat e derivados), execute o comando rpm -ivh samba-2.0.x- 1 .rpm , substituindo o x pelo número relativo a versão do pacote ou o nome correto do pacote dependendo da sua distribuição.

Para atualizar o SAMBA atual, substitua a sintaxe -ivh por -Uvh. Se o pacote veio no formato tar.gz, execute o comando abaixo:

tar -zxvf samba-2.0.x- 1 .tar.gz

Um diretório será criado com o nome samba-2.0.x. Entre neste diretório e em seguida no subdiretório source. Para iniciar a instalação digite:

./configure
make
make install

Agora os binários e páginas do man serão instalados. Aguarde o processo e quando terminar confira o diretório /usr/doc/samba-2.0.x/docs para informações sobre o SAMBA.

Configuração

Toda a configuração do SAMBA é centralizada no arquivo smb.conf, que deve ser guardado no diretório /etc. Nele é que são descritos os compartilhamentos, permissões de acesso, impressoras, dentre outras configurações disponíveis. Quando instalado, o SAMBA disponibiliza os seguintes componentes:

  • smbd - O servidor SAMBA.
  • nmbd - O Servidor de nomes NetBios.
  • smbclient - Cliente SMB para sistemas Unix.
  • smbpasswd - Alterar senhas (encriptadas) de usuários smb.
  • smbprint - Cliente para envio de impresão a sistemas Linux.
  • smbstatus - Apresenta a situação atual das conexoes SMB no Host.
  • testparm - Verifica o arquivo smb.conf (configuração do SAMBA).
  • testprns - Verifica a comunicação via rede com as impressoras.


Configuração (continuação)

O smb.conf é dividido basicamente em três partes: a configuração do servidor SAMBA (parâmetros na seção [global]), a configuração dos diretórios/pastas pessoais dos usuários (parâmetros na seção [homes]) e as demais seções que correspondem aos diretórios compartilhados.

Cada seção é representada entre colchetes [seção], e os parâmetros são seguidos do sinal de igual (=) e o valor ou termo correspondente. Confira abaixo um exemplo do smb.conf para um servidor Samba como PDC da rede:

 [global]
 comment = Servidor SAMBA
 workgroup = EMPRESA
 security = user
 os level = 100
 announce as = NT Server
 domain logons = yes
 logon script = %U.bat
 logon path = //%L/Profiles/%U
 domain master = yes
 local master = yes
 preferred master = yes
 guest account = nobody
 encrypt passwords = yes
 #wins server = 192.168.0.2
 wins support = yes
 keep alive = 20
 debug level = 3
 winpopup command = csh -c 'xedit %s;rm %s' &
 log file = /var/log/samba_log.%u
 null passwords = no
 1  password sync = yes
 socket options = IPTOS_LOWDELAY TCP_NODELAY
 printing = bsd
 printcap name = /etc/printcap
 load printers = yes
 hosts allow = 192.168.0. 127.
 hosts deny = 192.168.0.3 192.168.0.4

 [homes]
 comment = Pastas dos Usuarios
 public = no
 browseable = yes
 writeable = yes
 hosts deny = 192.168.0.250

 [printers]
 comment = Impressoras Linux
 public = no
 browseable = yes
 printable = yes
 read only = yes
 create mode = 0700
 path = /var/spool/samba
 admin users = admin, usuario1

 [netlogon]
 comment = Compartilhamento de Scripts
 path = /etc/scripts
 public = no
 browseable = yes
 writeable = no

 [diretoria]
 comment = Grupo Diretoria
 path = /home/diretoria
 public = no
 browseable = yes
 valid users = @diretoria
 writeable = yes
 write list = @diretoria
 force create mode = 0777
 force directory mode = 0777

 [comercial]
 comment = Grupo Comercial
 path = /home/comercial
 public = yes
 browseable = yes
 writeable = yes
 write list = @comercial
 read list = @marketing
 force create mode = 0777
 force directory mode = 0777

 [transf]
 comment = Area de Transferencia
 path = /home/transf
 public = yes
 browseable = yes
 writeable = yes
 write list = @todos
 force create mode = 0777
 force directory mode = 0775
 max disk size = 200

 [oculto$]
 comment = Especifico do Admin
 path = /home/admin/oculto
 copy = homes
 max connections = 1
 
 


Conhecendo os parâmetros

Seção [global]

Define as configurações globais do SAMBA. A relação abaixo apresenta a explicação dos parâmetros do exemplo:

comment
Comentário para este Host na Rede.

workgroup
Especifica o Domínio ou Workgroup a que o Host pertence na Rede.

security
Por padrão o SAMBA utiliza a segurança a nível de usuário (security = user), com opções:

security = share - Senhas de acesso serão solicitadas por cada recurso compartilhado e não por usuário, ou seja, cada diretório ou impressora poderá ter uma senha única conhecida pelos usuários autorizados. Esta opção é geralmente usada p/ estações de trabalho Linux, onde em diversos casos simplifica o acesso a dados locais quando necessário.

security = user - As permissões são dadas de acordo com o login do usuário, ou através dos grupos (@grupo).

security = server - O SAMBA tentará validar a senha do usuário enviando os dados para outro servidor SMB, como outro servidor SAMBA ou um servidor Windows. Deve-se incluir o parâmetro .password server = x.x.x.x. na seção [global] do smb.conf.

security = domain - Usado se o Host for adicionado a um Domínio Windows através do comando smbpasswd. Neste caso as informações de usuário e senha serão enviadas para o PDC da rede, exatamente como o servidor NT faria. Note que é necessário que a conta do usuário exista tanto no Linux quanto no servidor primário (mais adinate isso será explicado de forma detalhada).

os level
Este parâmetro não é obrigatório se voce não possui um servidor Linux ou Windows na rede, mas deve ser usado caso tenha um ou mais. A variável é um número de 1 a 255, onde 65 é a mesma variável utilizada pelo servidor Windows. Especifique um número maior que este (como 100 por exemplo) para garantir que o servidor SAMBA seja eleito na escolha de validação do login das estações.

announce as
Permite especificar o tipo de servidor NetBios (nmbd) que será divulgado na rede. As opções aceitas pelo SAMBA: "NT Server", "NT Workstation", "Win95" ou "WfW".

domain logons
Usado para validar o login na rede, apenas para estações Windows.

logon script
Indica qual arquivo de logon script será executado para os usuários. A variável %u corresponde ao usuário na rede. Deve também ser criado um compartilhamento de nome [netlogon] apontando para o diretório dos scripts.

logon path
Indica o caminho do perfil remoto do usuário. A variável %L corresponde ao nome do servidor NetBios (que pode ser o próprio SAMBA). O logon path é útil quando usuários costumam efetuar logon em mais de um Host na rede, pois seu perfil é trazido com o logon. No caso do exemplo, o diretório "Profiles" deve conter os scripts (em formato Microsoft usando NET USE e etc) e os scripts devem ser criados com o notepad do Windows por exemplo, a fim de conservar o formato do arquivo.

domain master
Indica se o Host será o Domain Master Browser da rede inteira (WAN).

local master
Indica se o Host será o Master Browser da rede local.

preferred master
Este parâmetro força a eleição do SAMBA como Master Browser para o workgroup. É recomendável utilizar este parâmetro em conjunto com o .domain master = yes. para garantir a eleição. Mas tome cuidado: se você possui uma rede com servidores Windows e SAMBA e já possui um servidor como Domain Master, não use esta opção e deixe o parâmetro os level = 65 para haver equilíbrio.

guest account
O SAMBA trabalha melhor em redes Microsoft com a existência de uma conta guest (visitante em ingles). Por padrão, a conta usada é nobody (a mesma utilizada pelo Apache).

wins server
Indica qual o servidor de Wins da rede. Se o próprio Host for o servidor de Wins então não utilize este parâmetro, pois haverá um loop e o sistema travará!

wins support
Permite ao SAMBA ser o servidor de Wins na rede. Isto significa que o SAMBA terá uma tabela com o ambiente completo da rede, garantindo que as estações tenham acesso a estas informações e ganho em velocidade para encontrar e acessar os compartilhamentos e impressoras. O Wins Server deve ser especificado na configuração de rede (TCP/IP) das estações, indicando o endereço IP do servidor.

keep alive
Como máquinas rodando Windows tendem a travar com o passar do tempo, este parâmetro é usado para verificar o estado da conexão, evitando tráfego desnecessário na rede. Também pode ser usado para estações Linux.

debug level
Parâmetro usado para dar flexibilidade a configuração do sistema. Permite ao SAMBA trabalhar corretamente com algumas situações de erro, por exemplo.

winpopup command
Especifica qual commando será executado quando o servidor receber mensagens Winpopup. Aqui, muitas opções podem ser usadas de acordo com a preferência do Administrador. Se sua rede utiliza mensagens deste tipo, é interessante definir um comando para o parâmetro, evitando assim possíveis mensagens de erro para quem enviou a mensagem ao servidor.

log file
Indica o arquivo de log do SAMBA. A variável %u corresponde ao nome de logon do usuário. O samba por padrão gera arquivos de log em /var/log/samba que indicam por exmplo os horários de logon dos usuários, quem acessou determinado arquivo, etc. Esteja atento para estas informações para consultas quando necessário.

null passwords
Indica se será ou não possível que usuários tenham senha nula de logon (logon sem senha).

1 password sync
Se este parâmetro for ativado (= yes) então clientes SMB (como estações Windows) poderão trocar sua senha de login.

socket options
Este parâmetro permite configurações extras para o protocolo, possibilitando uma melhor performance do servidor em lidar com os pacotes na rede.

printing
Indica qual o sistema de impressão padrão utilizado pelo Linux.

printcap name
Indica o arquivo para busca das definições das impressoras.

load printers
Disponibiliza as impressoras para a rede.

hosts allow
Indica quais máquinas tem acesso ao servidor SAMBA. Pode-se utilizar o endereço IP ou o nome da máquina. Para garantir acesso a toda uma rede por exemplo, escreva: "hosts allow = 192.168.1.". Este parâmetro deve ser usado preferencialmente nas demais seções, mas também pode ser usado na seção Global.

hosts deny
Como em "hosts allow", mas para restringir o acesso ao servidor SAMBA.



Conhecendo os parâmetros (continuação)

Seção [homes]

Define os parâmetros para as pastas pessoais dos usuários na rede (home dir):

comment
Comentário para este compartilhamento.

public
Também conhecido como guest ok, permite ou não acesso de outros usuários.

browseable
Define se o compartilhamento será ou não visível para o Ambiente de Rede. Estações Windows95 versão 4.00.950-C não aceitam esta opção, onde uma possível solução é utilizar o nome do compartilhamento seguido de $ (teste$ por exemplo), como faz-se no Windows.

writeable
Indica se o usuário poderá ou não ecrever em sua pasta pessoal (home dir).

Demais Seções

Correspondem a compartilhamentos presentes na rede. Os parâmtros abaixo são apenas alguns dos possíveis:

comment
Comentário para o compartilhamento.

path
Caminho do diretório compartilhado.

valid users
Este parâmetro é usado para destacar quem terá acesso ao compartilhamento na rede. É importante destacar que estações Win95/98/Me têm diferenças entre si que em muitas situações representam um problema para acesso e segurança. Acontece algumas vezes de você definir o "write list" e o "read list" corretamente mas mesmo assim usuários do "read list" conseguem escrever no compartilhamento (!). Para resolver este problema, inclua o "valid users" indicando os usuários que têm acesso e em seguida inclua o "write list" e o "read list" conforme sua necessidade.

writeable
Indica se será ou não possível criar ou excluir arquivos ou diretórios do compartilhamento.

public / guest ok
Indica se será ou não permitido o acesso de outros usuários.

browseable
Define se o compartilhamento será ou não visível para o Ambiente de Rede do Windows (apresentado na rede).

write list
Define os usuários e/ou grupos com acesso de escrita no compartilhamento. Para mais de um usuário, separe os nomes por vírgula (user1, user2, etc) e para grupos utilize @ antes do nome do grupo.

read list
Como em .write list., mas define quem terá permissão de apenas leitura.

force create mode
Diz ao SAMBA para forçar o tipo de permissão dos arquivos criados (o mesmo que usar o chmod). Esta permissão tem menor prioridade que os parâmetros write list e read list.

force directory mode
O mesmo que force create mode, mas para os diretórios criados no compartilhamento.

admin users
Indica quais são os usuários com permissão completa para o compartilhamento (permissão de root).

copy
Permite copiar os parâmetros de outra seção, como um template por exemplo, útil se utiliza compartilhamentos semelhantes. Para alterar parâmetros basta informá-los na seção atual.

max connections
Permite especificar o número máximo de conexões simultâneas ao compartilhamento.

max disk size
Permite especificar qual o limite de espaço em disco que o compartilhamento pode utilizar. Este valor é definido em Mb (megabytes).

Abaixo temos variáveis que podem ser usadas em parâmetros:

%S - Nome do Serviço (compartilhamento) atual.
%u - Nome do usuário.
%g - Nome do grupo.
%H - Nome do diretório pessoal do usuário (home dir).
%m - Nome da máquina cliente fornecido pelo NetBios.
%L - Nome do servidor NetBios, permitindo que a configuração desejada seja alterada de acordo com o cliente que vai acessar o sistema.
%M - Nome Internet da máquina cliente.
%a - Sistema Operacional da máquina remota, onde os reconhecidos são WfW, WinNT e Win95.
%I - O endereço IP da máquina cliente.
%T - Data e horário.

Conclusão

Noi próximo artigo, teremos a parte mais prática, ensinando como colocar o SAMBA em funcionamento e como testá-lo. Até lá!

Colaboraram:

Luciano Linhares Martins ( lmartins@matrix.com.br )
Marcelo Subtil Marçal ( jason@unleashed.com.br )
Augusto César Campos ( brain@matrix.com.br )



Copyright (C) 1999-2000 Linux Solutions