Índice - Tutoriais

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

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

8

A conta guest

No Windows XP é usado por padrão um modo simplificado de compartilhamento de arquivos, o "simple sharing", que visa imitar o modo de acesso do Windows 95/98, onde os compartilhamentos são públicos e você apenas define se eles são apenas leitura ou leitura e escrita.

Na verdade, o Windows XP usa o controle de acesso com base no usuário, assim como o Samba 3, mas, por baixo dos panos, todos os acessos passam a ser mapeados para a conta "guest" (ativa por padrão), o que permite que usuários remotos sem login válido acessem os compartilhamentos diretamente. Este recurso é também chamado de "force guest".

Naturalmente, podemos fazer o mesmo no Samba. Para isso, adicione as linhas abaixo dentro da seção [global] do smb.conf:

map to guest = bad user
guest account = guest

A primeira opção faz com que sempre que um cliente especificar um usuário inválido ao tentar acessar o servidor, o servidor mapeie a requisição para o login especificado na opção "guest account", que é usada para acessar o compartilhamento. Neste exemplo, qualquer usuário não autenticado passaria a usar a conta "guest", que deve ter sido previamente cadastrada no servidor. Você pode também usar qualquer outra conta válida, como em "guest account = maria".

Uma opção menos usada é a "map to guest = bad password". Ela se diferencia da "map to guest = bad user" pois permite o acesso apenas caso o usuário especifique um login válido, mas erre apenas a senha. O principal motivo dela não ser muito usada é que ela confunde o usuário, já que ele ou vai achar que está realmente logado no servidor (quando na verdade está apenas acessando de forma limitada através da conta guest) ou vai passar a achar que o servidor aceita qualquer senha.

Para que os usuários não-autenticados possam acessar os compartilhamentos, você deve explicitamente autorizar o acesso, adicionando a opção "guest ok = yes" na configuração, como em:

[global]
netbios name = Sparta
workgroup = Grupo
map to guest = bad user
guest account = guest

[publico]
path = /mnt/sda2/publico
writable = yes
guest ok = yes

Note que no exemplo usei a opção "writable = yes". Entretanto, para que os usuários não-autenticados possam efetivamente escrever na pasta, é necessário verificar se as permissões de acesso da pasta permitem que a conta especificada ("guest" no exemplo) altere os arquivos. Como disse anteriormente, o Samba está subordinado às permissões de acesso do sistema.

Outra opção comum em compartilhamentos públicos é a "guest only = yes" (usada no lugar da "guest ok = yes", na seção [global]). Ela simula o "simple sharing" do Windows XP, mapeando qualquer acesso para a conta guest, sem sequer abrir o prompt de login para o cliente.

Vamos então a mais um exemplo de configuração do smb.conf, desta vez usando a conta guest para criar um servidor de arquivos público. Ele possui duas partições de arquivos (montadas nas pastas "/mnt/hda2 e "/mnt/sda1") que ficam disponíveis a todos os usuários da rede:

[global]
netbios name = Plutus
server string = Servidor público
workgroup = Grupo
local master = yes
os level = 100
preferred master = yes
wins support = yes
map to guest = bad user
guest account = gdh


[arquivos]
path = /mnt/hda2
writable = yes
guest ok = yes

[backups]
path = /mnt/sda1
writable = yes
guest ok = yes

Esta configuração é bastante simples e a prova de falhas. O servidor vai assumir a função de master browser, se responsabilizando pela navegação dos clientes e vai mapear qualquer acesso para a conta "gdh" usada na opção "guest account", permitindo que qualquer um possa ler e gravar arquivos nos dois compartilhamentos.

As duas principais observações são que o usuário "gdh" deve ser um usuário real do sistema, cadastrado no servidor Samba, e que ele deve ser o dono das duas pastas compartilhadas, de forma que não tenha problemas para acessar seu conteúdo. Isso pode ser feito usando os 4 comandos a seguir:

# adduser gdh
<senha>
# smbpasswd -a gdh
<mesma senha>
# chown -R gdh:gdh /mnt/hda2
# chown -R gdh:gdh /mnt/sda1

Essa configuração é ideal para pequenos servidores de rede local, que devem apenas disponibilizar arquivos na rede, sem muita segurança. Ela é similar ao exemplo de configuração para um servidor de arquivos público que incluí no livro Redes, Guia Prático.

8 comentáriosPor Carlos E. Morimoto. Revisado 24 de junho de 2009 às 21h33

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?