Howto Servidor Samba + ACL
Este artigo nos ensina a criar apenas um diretório raiz e depois apenas subpastas dentro de subpastas com permissões separadas por seu grupo, não teríamos como fazer um Samba normal porque se não todas as subpastas herdariam as permissões do diretório raiz, então temos que usar uma alternativa que nos conceda um tipo de permissões diferentes, que é o recurso da ACL.
Servidor Samba + ACL
Servidor Samba PDC: Servidor de arquivos Linux onde máquinas Windows conseguem acessar sem problemas.
ACL: Access Control List (Lista de Controle de Acesso)
Vamos começar com o básico, monte a sua estrutura de diretórios do Samba com apenas um diretório raiz, crie os usuários e grupos no sistema e no Samba.
Obs.: Não se esqueça de criar o root (smbpasswd -a root).
Não se esqueça de fazer o diretório raiz em uma partição separada. Ex.: /media/partição/diretório_raiz
Monte o seu smb.conf da seguinte forma:
Agora com o diretório raiz criado e o smb.conf configurado, crie suas subpastas no diretório raiz. Ex.:
# mkdir /media/samba1/UltraVS/Presidencia
Você também pode criar subpasta dentro de subpasta. Ex.:
# mkdir /media/samba1/UltraVS/Presidencia/Nsi/Suporte
Bom, com tudo criado e configurado, vamos passar agora para a ACL, o serviço de ACL é nativo no Linux a partir do kernel 2.6. Se o seu kernel for esse ou superior, pule a parte de instalação, se for um kernel mais antigo, vamos aprender a instalar esse serviço agora.
Para ver a versão do seu kernel use o comando "uname -a", a saída deste comando será a seguinte:
# uname -a
Linux ultravs 2.6.32-24-generic #38-Ubuntu SMP Mon Jul 5 09:22:14 UTC 2010 i686 GNU/Linux
Para instalar a ferramenta ACL, use o aptitude caso esteja em Debian ou distribuições derivadas do mesmo:
# aptitude update
# aptitude install acl
Para habilitar o serviço de ACL você terá que remontar a partição do diretório raiz com a ACL nele. Ex.:
# mount /media/partição -o remount,acl
Em um PDC normal sem ACL, com essa configuração todos os usuários teriam acesso a todos os arquivos certo?
Agora vamos adicionar as permissões com ACL para ver se isso vai continuar assim.
Para adicionarmos ACL vamos usar dois comandos básicos, setfacl e getfacl:
Vamos aplicar permissões de leitura e execução adicionais ao diretório raiz /media/partição/diretório_raiz/ para TODOS os grupos:
# setfacl -m g:presidente:r-x /media/partição/diretório_raiz/
Obs.: O exemplo acima adiciona permissões apenas ao grupo presidente, você terá que fazer com todos da mesma forma. Veja as permissões após o grupo, isso é, apenas leitura e execução.
Agora dê um "ls -l" sobre a pasta /media/partição/diretório_raiz, a saída do comando será a seguinte:
total 16
drwxrwxrwx+ 7 root root 4096 2010-07-28 15:14 Presidencia
Note que após as permissões normais do sistema existe um mais, o que em pastas sem ACL não existem, esse mais indica que existem mais permissões além das normais do sistema.
Agora se você quiser ver que permissões são essas use o getfacl:
# getfacl /media/partição/diretório_raiz/
A saída do comando será a seguinte:
getfacl: Removendo a '/' inicial dos nomes de caminho absolutos
# file: media/partição/diretório_raiz/
# owner: root
# group: root
user::---
group::---
group:presidente:r-x
mask::---
other::---
Veja que ele mostrou as permissões normais do sistema que o dono o grupo e outros não tem permissões, porém o grupo presidente tem apenas as permissões do leitura e escrita.
Bom, basicamente isso é o servidor Samba + ACL, agora é só colocar suas permissões aos grupos e usuários sobre as pastas que desejar.
Tutorial criado por: Vitor Alfredo de Souza Soares - Fórmula Digital.
ACL: Access Control List (Lista de Controle de Acesso)
Vamos começar com o básico, monte a sua estrutura de diretórios do Samba com apenas um diretório raiz, crie os usuários e grupos no sistema e no Samba.
Obs.: Não se esqueça de criar o root (smbpasswd -a root).
Não se esqueça de fazer o diretório raiz em uma partição separada. Ex.: /media/partição/diretório_raiz
Monte o seu smb.conf da seguinte forma:
[global]
# Nome do seu Servidor de Arquivos + ACL
comment = Servidor #nome do seu servidor
# Domínio do servidor PDC + ACL
workgroup = #Dominio do Servidor
# Indica se é obrigatório ou não a autenticação por senha
security = user
os level = 100
announce as = NT Server
domain logons = yes
# Script a ser executado quando o Usuario loga. #%U.bat = Usuario
#logon script = %U.bat
# Opções obrigatórias para se tornar um Servidor Samba PDC
domain master = yes
local master = yes
preferred master = yes
encrypt passwords = true
admin user = root #nome dos usuarios que serão administradores do Servidor veja que e presença do root e importante
domain admin group = @admsmb #grupo do administrador
keep alive = 20
debug level = 3
log file = /var/log/samba_log.%u
null passwords = no
unix password sync = yes
socket options = IPTOS_LOWDELAY TCP_NODELAY
printing = cups
#Caracteres Especiais
dos charset = UTF-8
unix charset = UTF-8
[homes]
comment = Pastas dos Usuários
public = no
browseable = no
writeable = yes
veto files = /*.exe/*.mp3/*.mpeg/*.mp4/*.avi/*.wav/*.wmv/*.wma/*.mpg/*.asf/*.sbd/*.vob/*.arj/*.bin/*.mov/*.mid/*.ogg/*.swf/*.rar/*.nrg/*.rm/*.ra/*.flv/*.iso/*.jpeg/*.jpg/*.png/*.raw/*.bmp/*.gif/*.dng/*.tif/*.rmvb/
# Servidor de Arquivos PDC + ACL
[Servidor #Nome do Servidor]
path = /media/partição/diretorio_raiz #Caminho da pasta raiz do servidor
writeable = yes
share modes = yes
browseable = yes
valid users = @admsmb #aqui adicione todos os grupos sem exceção a não ser que você queira que algum não acesse o servidor
veto files = /*.exe/*.mp3/*.mpeg/*.mp4/*.avi/*.wav/*.wmv/*.wma/*.mpg/*.asf/*.sbd/*.vob/
force create mode = 000 #Essas Permissões 000 são importantes para o bom funcionamento do seu servidor após ser concluido
force directory mode = 000 #Essas Permissões 000 são importantes para o bom funcionamento do seu servidor após ser concluido
# Nome do seu Servidor de Arquivos + ACL
comment = Servidor #nome do seu servidor
# Domínio do servidor PDC + ACL
workgroup = #Dominio do Servidor
# Indica se é obrigatório ou não a autenticação por senha
security = user
os level = 100
announce as = NT Server
domain logons = yes
# Script a ser executado quando o Usuario loga. #%U.bat = Usuario
#logon script = %U.bat
# Opções obrigatórias para se tornar um Servidor Samba PDC
domain master = yes
local master = yes
preferred master = yes
encrypt passwords = true
admin user = root #nome dos usuarios que serão administradores do Servidor veja que e presença do root e importante
domain admin group = @admsmb #grupo do administrador
keep alive = 20
debug level = 3
log file = /var/log/samba_log.%u
null passwords = no
unix password sync = yes
socket options = IPTOS_LOWDELAY TCP_NODELAY
printing = cups
#Caracteres Especiais
dos charset = UTF-8
unix charset = UTF-8
[homes]
comment = Pastas dos Usuários
public = no
browseable = no
writeable = yes
veto files = /*.exe/*.mp3/*.mpeg/*.mp4/*.avi/*.wav/*.wmv/*.wma/*.mpg/*.asf/*.sbd/*.vob/*.arj/*.bin/*.mov/*.mid/*.ogg/*.swf/*.rar/*.nrg/*.rm/*.ra/*.flv/*.iso/*.jpeg/*.jpg/*.png/*.raw/*.bmp/*.gif/*.dng/*.tif/*.rmvb/
# Servidor de Arquivos PDC + ACL
[Servidor #Nome do Servidor]
path = /media/partição/diretorio_raiz #Caminho da pasta raiz do servidor
writeable = yes
share modes = yes
browseable = yes
valid users = @admsmb #aqui adicione todos os grupos sem exceção a não ser que você queira que algum não acesse o servidor
veto files = /*.exe/*.mp3/*.mpeg/*.mp4/*.avi/*.wav/*.wmv/*.wma/*.mpg/*.asf/*.sbd/*.vob/
force create mode = 000 #Essas Permissões 000 são importantes para o bom funcionamento do seu servidor após ser concluido
force directory mode = 000 #Essas Permissões 000 são importantes para o bom funcionamento do seu servidor após ser concluido
Agora com o diretório raiz criado e o smb.conf configurado, crie suas subpastas no diretório raiz. Ex.:
# mkdir /media/samba1/UltraVS/Presidencia
Você também pode criar subpasta dentro de subpasta. Ex.:
# mkdir /media/samba1/UltraVS/Presidencia/Nsi/Suporte
Bom, com tudo criado e configurado, vamos passar agora para a ACL, o serviço de ACL é nativo no Linux a partir do kernel 2.6. Se o seu kernel for esse ou superior, pule a parte de instalação, se for um kernel mais antigo, vamos aprender a instalar esse serviço agora.
Para ver a versão do seu kernel use o comando "uname -a", a saída deste comando será a seguinte:
# uname -a
Linux ultravs 2.6.32-24-generic #38-Ubuntu SMP Mon Jul 5 09:22:14 UTC 2010 i686 GNU/Linux
Para instalar a ferramenta ACL, use o aptitude caso esteja em Debian ou distribuições derivadas do mesmo:
# aptitude update
# aptitude install acl
Para habilitar o serviço de ACL você terá que remontar a partição do diretório raiz com a ACL nele. Ex.:
# mount /media/partição -o remount,acl
Em um PDC normal sem ACL, com essa configuração todos os usuários teriam acesso a todos os arquivos certo?
Agora vamos adicionar as permissões com ACL para ver se isso vai continuar assim.
Para adicionarmos ACL vamos usar dois comandos básicos, setfacl e getfacl:
- setfacl: inclui as permissões adicionais nas pastas do sistemas
- getfacl: vê as permissões adicionais da pasta
Vamos aplicar permissões de leitura e execução adicionais ao diretório raiz /media/partição/diretório_raiz/ para TODOS os grupos:
# setfacl -m g:presidente:r-x /media/partição/diretório_raiz/
Obs.: O exemplo acima adiciona permissões apenas ao grupo presidente, você terá que fazer com todos da mesma forma. Veja as permissões após o grupo, isso é, apenas leitura e execução.
Agora dê um "ls -l" sobre a pasta /media/partição/diretório_raiz, a saída do comando será a seguinte:
total 16
drwxrwxrwx+ 7 root root 4096 2010-07-28 15:14 Presidencia
Note que após as permissões normais do sistema existe um mais, o que em pastas sem ACL não existem, esse mais indica que existem mais permissões além das normais do sistema.
Agora se você quiser ver que permissões são essas use o getfacl:
# getfacl /media/partição/diretório_raiz/
A saída do comando será a seguinte:
getfacl: Removendo a '/' inicial dos nomes de caminho absolutos
# file: media/partição/diretório_raiz/
# owner: root
# group: root
user::---
group::---
group:presidente:r-x
mask::---
other::---
Veja que ele mostrou as permissões normais do sistema que o dono o grupo e outros não tem permissões, porém o grupo presidente tem apenas as permissões do leitura e escrita.
Bom, basicamente isso é o servidor Samba + ACL, agora é só colocar suas permissões aos grupos e usuários sobre as pastas que desejar.
Tutorial criado por: Vitor Alfredo de Souza Soares - Fórmula Digital.