Í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 seção [homes]

Uma vantagem de utilizar usuários "reais" no servidor Samba, em vez de usuários castrados, é que você tem a opção de compartilhar os diretórios home através da seção [homes] no smb.conf. Este é um serviço interno do Samba, que permite compartilhar automaticamente o diretório home de cada usuário, sem precisar criar um compartilhamento separado para cada um.

A configuração mais comum é compartilhar os diretórios home com permissão de acesso apenas para o respectivo usuário. Dessa forma, cada usuário tem acesso apenas ao seu próprio diretório home (que aparece no ambiente de redes como um compartilhamento com o mesmo nome), sem poder acessar, nem muito menos alterar o conteúdo dos diretórios home dos demais usuários. Nesse caso, a configuração fica:

[homes]
valid users = %S
read only = no
create mask = 0700
directory mask = 0700
browseable = no

Não é necessário especificar a pasta a compartilhar, pois ao omitir a linha "path" o Samba sabe que deve compartilhar o home de cada usuário. As opções "create mask = 0700" e "directory mask = 0700" fazem com que todos os arquivos e pastas criados pelo usuário dentro do home sejam acessíveis apenas por ele mesmo. A opção "browseable = no" faz com que cada usuário possa ver apenas seu próprio diretório, o que é reforçado pela opção "valid users = %S", que diz explicitamente que apenas o próprio usuário deve ter acesso à sua pasta home.

Uma queixa comum é que ao acessar o diretório home através do Samba, os usuários verão todos os arquivos e pastas de configuração de programas que são salvos dentro do diretório home, o que pode ser confuso.

Uma forma de evitar isso é alterar a configuração, de forma que o Samba compartilhe uma pasta vazia dentro do home, e não o diretório home em si. Com isso é mantido o propósito de oferecer uma pasta particular para o usuário, onde ele possa salvar seus arquivos particulares e seus backups, sem a poluição gerada pela presença dos arquivos de configuração. A configuração nesse caso ficaria:

[homes]
path = /home/%u/share
valid users = %S
read only = no
create mask = 0700
directory mask = 0700
browseable = no

A linha "path = /home/%u/share" especifica que o Samba deve agora compartilhar a pasta "share" dentro do home e não mais o diretório home em si (você pode especificar outra pasta qualquer) e a linha "valid users = %S" garante que a pasta ficará acessível apenas para o próprio usuário.

Naturalmente, a pasta "share" precisa ser criada dentro do home de cada usuário manualmente. Você pode fazer isso de forma automática para todos os usuários usando este mini shell script:

cd /home
for i in *; do
mkdir $i/share
chown $i:$i $i/share
done

Aproveite para criar também a pasta "share" dentro do diretório "/etc/skel", que é usado como um modelo para a criação do home de novos usuários. Isso faz com que o diretório seja adicionado ao home de todos os usuários criados daí em diante, de forma automática:

# mkdir /etc/skel/share

Concluindo, aqui vai uma lista de outras variáveis do Samba para referência:

%a : A versão do Windows usada, onde o "%a" é substituído pelas strings "Win95" (Windows 95/98), "WinNT" (Windows NT 3.x ou 4.x), "Win2K" (Windows 2000 ou XP) ou "Samba" (máquinas Linux rodando o Samba)
%I : Endereço IP da máquina cliente (ex: 192.168.1.2)
%m : Nome da máquina cliente (ex: cliente1)
%L : Nome do servidor (ex: athenas)
%u : Nome do usuário, como cadastrado no servidor Linux (ex: joao)
%U : Nome do usuário, como enviado pelo cliente Windows (pode ser diferente do login cadastrado no servidor em algumas situações)
%H : Diretório home do usuário (ex: /home/maria)
%g : Grupo primário do usuário (ex: users)
%S : Nome do compartilhamento atual (o valor informado entre colchetes, ex: arquivos)
%P : Pasta compartilhada (o valor informado na opção "path", ex: /mnt/arquivos)
%v : Versão do Samba (ex: 3.2.24)
%T : Data e horário atual

Ao longo do texto, veremos alguns outros exemplos de uso destas variáveis, mas você pode usá-las em outras situações para criar compartilhamentos "inteligentes", que mostram pastas diferentes de acordo com as propriedades do cliente. Por exemplo, a variável "%a" (que indica a versão do Windows no cliente), poderia ser usada para criar um compartilhamento com drivers, que mostrasse diretamente a pasta com os drivers corretos para a versão do Windows usada. Nesse caso, você poderia usar algo como:

[drivers]
path = /mnt/sda2/drivers/%a
read only = yes

A pasta "/mnt/sda2/drivers/" incluiria uma série de sub-pastas, com os valores possíveis para a variável, incluindo "Win95", "WinNT", "Win2K" e "Samba". Ao acessar o compartilhamento, o cliente vê apenas o conteúdo da pasta correspondente ao sistema operacional usado.

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

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?