Índice - Tutoriais

Samba, parte 2: Configuração avançada do Samba

Por Carlos E. Morimoto em 4 de dezembro de 2007 às 10h34

8

Introdução


Como vimos na primeira parte do tutorial, a maior parte da configuração do Samba, incluindo as configurações gerais do servidor, impressoras e todos os compartilhamentos, é feita em um único arquivo de configuração, o "/etc/samba/smb.conf". Programas de configuração, como o Swat, simplesmente lêem este arquivo, "absorvem" as configurações atuais e depois geram o arquivo novamente com as alterações feitas dentro da interface. Isso permite que o Swat coexista com a edição manual do arquivo. Como comentei a pouco, o Swat remove todos os seus comentários e formatação (deixando apenas as opções), por isso muitos evitam usá-lo.

Apesar disso, o formato do arquivo de configuração do Samba é bastante simples e por isso muitas vezes é mais rápido e até mais simples editar diretamente o arquivo do que fazê-lo através do Swat. Ao instalar o Samba, é criado um arquivo de configuração de exemplo, com vários comentários. Assim como no caso do Squid, ele é longo e difícil de entender, por isso acaba sendo mais fácil renomeá-lo e começar com um arquivo em branco, ou usar como base a configuração gerada através do Swat.

Vamos então a uma segunda rodada de explicações sobre a configuração do Samba, agora editando diretamente o arquivo smb.conf e explorando com maior profundidade as opções disponíveis. Vamos começar com um exemplo simplista, onde temos um único compartilhamento de teste:

[global]
netbios name = Sparta
workgroup = Grupo

[arquivos]
path = /mnt/arquivos
comment = Teste

Como você pode ver, o arquivo é dividido em seções. A primeira é sempre a seção "[global]", que contém as opções gerais do servidor. Por enquanto, definimos apenas o nome do servidor (netbios name) e o nome do grupo de trabalho (workgroup), que seria o mínimo necessário para colocar o servidor na rede. As demais opções (não especificadas no arquivo) são configuradas usando os valores default. Se você omitir a opção "workgroup", por exemplo, o Samba vai reverter para o grupo "WORKGROUP", que é o padrão.

Se quiser, você pode também adicionar uma descrição para o servidor, o que é feito através da opção "server string" (adicionada dentro da seção [global]), como em:

server string = Servidor Samba

Duas dicas são que:

a) O default do Samba é usar a string "Samba 3.0.24" (onde o "3.0.24" é a versão usada) como descrição quando a opção "server string" não está presente no arquivo.

b) Nas máquinas com o Windows XP, a descrição do servidor aparece antes do nome propriamente dito, como em "Servidor Samba (Sparta)". É importante levar isso em consideração, já que, no final das contas, o que importa é o que os usuários irão ver ao navegar pelo ambiente de redes:

m6e226a7e

Abaixo da seção [global], incluímos seções adicionais para cada compartilhamento, que é o caso da seção "[arquivos]" que cria o compartilhamento de teste.

O "[arquivos]" indica o nome do compartilhamento, da forma como ele aparecerá na rede. Logo a seguir temos a linha "path", que diz qual pasta do servidor será compartilhada e a linha "comment" (opcional), que permite que você inclua um comentário.

Sempre que alterar manualmente o smb.conf, ou mesmo alterar algumas opções pelo Swat e quiser verificar se as configurações estão corretas, rode o comando testparm. Ele funciona como uma espécie de debug, indicando erros grosseiros no arquivo e informando o papel do servidor na rede:

# testparm

Load smb config files from /etc/samba/smb.conf
Processing section "[arquivos]"
Loaded services file OK.
Server role: ROLE_STANDALONE

O "ROLE_STANDALONE" significa que o servidor foi configurado como um membro normal do grupo de trabalho. É possível também fazer com que o servidor Samba atue como um controlador de domínio, como veremos em detalhes mais adiante.

Em caso de erros no arquivo, o testparm ajuda a localizar o problema, indicando a linha ou opção inválida, de forma que você possa corrigí-la. Veja o que acontece ao adicionar um erro simples, usando a linha "wrritable = yes" no lugar de "writable = yes":

Unknown parameter encountered: "wrritable"
Ignoring unknown parameter "wrritable"

O Samba não diferencia o uso de maiúsculas e minúsculas nas opções, de forma que tanto faz escrever "writable = yes", "writable = Yes" ou "writable = YES". Entretanto, muitos dos parâmetros não são diretamente usados pelo Samba, mas sim repassados ao sistema que, diferentemente do Samba, diferencia os caracteres. Um exemplo são as localizações de pastas a compartilhar. Se você escrever "path = /mnt/Arquivos" (em vez de "path = /mnt/arquivos"), o compartilhamento não vai funcionar, pois o sistema reportará que a pasta não existe.

Além do caractere "#", é possível usar também o ";" para comentar linhas. A principal observação é que você não pode inserir comentários em linhas válidas (mesmo que no final da linha), pois, ao fazer isso, toda a linha passa a ser ignorada pelo Samba. Neste exemplo, o comentário foi incluído na linha "path", o que acaba por desativar o compartilhamento completamente:

[teste]
path = /mnt/arquivos # Pasta compartilhada
comment = Compartilhamento que não funciona

O testparm também não indica o erro diretamente, já que ele também considera a linha como um comentário, o que pode levá-lo a perder um bom tempo tentando descobrir onde está o problema. Ao incluir comentários no arquivo, use sempre linhas separadas:

[teste]
# Pasta compartilhada
path = /mnt/arquivos
comment = Agora sim

As alterações no arquivo são lidas periodicamente pelo Samba (o default são 3 minutos) e aplicadas automaticamente. Isso permite que as mudanças de configuração sejam aplicadas de forma suave, sem prejudicar o acesso dos usuários, o que é importante em um ambiente de produção. Para fazer com que as alterações entrem em vigor imediatamente, reinicie o serviço do Samba, como em:

# /etc/init.d/samba restart

ou:

# service smb restart

A partir daí, o compartilhamento estará disponível. Ao tentar acessar o servidor através do "Meus locais de rede" nos clientes Windows, você receberá um prompt de senha, onde você precisa fornecer um dos logins cadastrados no servidor usando o comando "smbpasswd -a":

4b8a31ae

É importante enfatizar que todos os usuários cadastrados no Samba precisam também existir no sistema, por isso, antes de usar o comando "smbpasswd -a", você deve usar o adduser para criar o usuário. Como citei anteriormente, a solução para casos em que você não deseja criar contas válidas para todos os usuários é criar usuários limitados usando o comando "adduser --disabled-login --no-create-home usuario" ou "adduser -M usuario".

Depois de logado, o cliente pode visualizar os compartilhamentos do servidor. Por enquanto temos apenas o compartilhamento "arquivos", que mostra o conteúdo da pasta "/mnt/arquivos" do servidor, mas ao longo do tutorial adicionaremos muitos outros recursos ao servidor:

3bbc5df2

8 comentáriosPor Carlos E. Morimoto. Revisado 5 de outubro de 2010 às 11h24

Comentários

Como adicionar as pastas da lixeira como exeção?
por Spyder.RV em 4 de novembro de 2011 às 09h05
Bom dia...

Obrigado pelo excelente material... eu sempre achei samba um bicho-de-sete-cabeças ;-D... mas agora ficou fácil e claro. Parabéns.

Uma dúvida sobre a lixeira:

Como faço para que os arquivos que vão pra lixeira possam ser excluídos? Comigo aqui está ocorrendo que quando exclui um arquivo da lixeira, é criada uma cópia dentro da própria lixeira.
Lixeira Samba Server por Diego Ferraz (anônimo)
guest only
por Pietro (anônimo) em 19 de novembro de 2010 às 17h09
Essa opção funciona se vc usar security = share
Muito bom por holliday
segui a risca e não funcionou..
por Kleber Cardoso (anônimo) em 9 de novembro de 2011 às 18h27
Amigo, segui a risca, mas não funcionou... até que ele cria a pasta com o nome do usuário logado quando este apaga algum arquivo do compartilhamento, mas o arquivo não aparece lá... o que pode ser?
Copartilhamento
por Alex (anônimo) em 24 de maio de 2011 às 14h19
Boa tarde.
Quando mapeio uma determinada pasta no ubuntu "versoes", não consigo visualizar todos os arquivos, além do mais em maquinas diferentes a quantidade de arquivos é diferente e no windows aparentemente funciona normal.

Obrigado
monitorar alguns usuarios
por kleber (anônimo) em 13 de maio de 2011 às 16h41
Gostaria de usar este monitoramento, mas so para alguns usuarios, pois notei que como tenho mais de 100 usuario na rede o arquivo de log esta ficando muito grande, e nao tenho a necessidade de monitorar tantos usuarios.
Os logs nao sao criados
por Thompson (anônimo) em 25 de março de 2011 às 21h39
Criei uma pasta para conter os logs do samba no diretorio do meu servidor: EX: servidor/Logs/samba/
a ideia era criar um arquivo de log para cada usuario:

[servidor]
log level = 1
log file = /home/servidor/Logs/samba/%U.log
max log size = 100
vfs objects = full_audit
full_audit:success = open, opendir, write, unlink, rename, mkdir, rmdir, chmod, chown
full_audit:prefix = %u|%I|%S|%T
full_audit:failure = none
full_audit:facility = local5
full_audit:priority = notice

No entanto os arquivo nao sao criados. Alguem sabe como resolver?

PS: estou utilizando o samba 4

ao usar o comando samba restart, ele nao reconhece o comando: max log size e nem o vfs objects, fala que é desconhecido..

Alguem sabe resolver?