Artigos 09:30 PM
ACLs + Samba + NFS
O que são ACLs?
As ACLs – (Access Control List ou Lista de Controle de Acesso) extendem o nível de permissionamento de arquivos e diretórios padrão do mundo linux/unix (POSIX). Sistemas de rede como Novell Netware e Windows NT (e seus sucessores) contam com avançados serviços de diretórios.
No mundo de padrões POSIX durante muito tempo reinou o padrão usuário:grupo:outros com suas permissões rwx, porém para um bom gerenciamento de segurança em uma rede de dados é necessário muito mais do que isso e é ai que entram as ACLs.
Com as ACLs é possível definir acesso a mais de um usuário ou grupo além de definir permissões/usuários/grupos padrões para novos arquivos/diretórios.
Configurar o suporte a ACL no linux requer alguns poucos passos que incluem instalar as versões com suporte a acl das principais ferramentas de sistema como o pacote coreutils (mv, cp, rm, etc) por exemplo, instalar o pacote acl que contém os binários getfacl e setfacl, e por último adicionar suporte aos sistemas de arquivos desejados no kernel.
Também é possível adicionar suporte a ACLs nos principais sistemas de arquivos de rede como o smb e o nfs.
Este artigo cobre a configuração de ACLs em um sistema Gentoo.
Instalação dos binários
Antes de mais nada é necessário adicionar a useflag “acl” a variavel USE no arquivo /etc/make.conf e em seguida deve-se instalar o pacote acl informando ao portage para atualizar os pacotes já instalados adicionando suporte a acl:
# emerge acl --deep --newuse (isso irá recompilar diversos pacotes, deve demorar um bom tempo)
Configuração do kernel
Adicione o suporte no kernel para o(s) sistema(s) de arquivo desejado(s):
# cd /usr/src/linux
# make menuconfig
Firmware Drivers --->
<*> Second extended fs support
[*] Ext2 POSIX Access Control Lists
<*> Ext3 journalling file system support
[*] Ext3 POSIX Access Control Lists
<*> Reiserfs support
[*] ReiserFS POSIX Access Control Lists
Compile e instale o novo kernel:
# make
# cp arch/i386/boot/bzImage /boot/kernel-2.6.17-gentoo-r4
Testando as acls
Os comandos getfacl e setfacl são os responsáveis respectivaments por ler e definir as permissões nos arquivos/diretórios. As principais opções de uso do setfacl são:
- -b – remove todas as permissões ACL
- -m – adiciona permissão ACL
- -d – adiciona permissão padrão de diretório para novos arquivos
Exemplos:
# cd /data/ # mkdir teste # setfacl -m u:usuario:rwXg,grupo:rwX,o:rX teste (adiciona acesso de leitura e gravação para o usuário "usuario" com permissão de execução nos diretórios, a mesma coisa para o grupo "grupo" e acesso de leitura e execuão no diretório para outros) # setfacl -d -m u:user:rw teste # cd teste # touch file (adiciona permissão padrão para o usuário "user" de leitura/escrita para todo arquivo criado no diretório "teste")
O getfacl por sua vez não precisa de nenhuma opção por padrão e imprime todos os dados referentes ao arquivo/diretório:
# getfacl /data/teste
getfacl: Removing leading '/' from absolute path
name
# file: /data/teste
# owner: root
# group: root
user::rwx
group::rwx
group::grupo:rwx
mask::rwx
other::r-x
default:user::rwx
default:user:usuario:rwx
default:group::rwx
default:group:grupo:rwx
default:mask::rwx
default:other::r-x
nesse caso, se verificarmos as permissões do arquivo “file” obtemos o seguinte resultado:
# getfacl /data/teste/file
# file: /data/teste/
# owner: usuario
# group: grupo
user::rw
user:usuario:rwx #effective rw-
group::rw
group:grupo:rwx #effective rw-
mask::rw-
other::r--
SAMBA
Da mesma forma que os demais softwares, o samba utilizará a useflag “acl” definida no make.conf. Instale ou reinstale o samba:
# emerge samba
Diversos parâmetros configuram o suporte a acl no smb.conf. Os principais são listados abaixo:
inherit acl = Yes inherit permissions = Yes (preserva as permissões acl/setgid na criação de novos arquivos/diretórios) inherit owner = Yes (preserva o dono do diretório na criação de novos arquivos/diretórios)
Inicie/reinicie o samba e teste nos clientes windows.
# /etc/init.d/samba restart
NFS
O suporte a ACL no NFS, ao contrário do samba, deve ser ativado diretamente no kernel/modulo: (cada máquina cliente da rede deve ter o suporte a ACL ativado no modulo client de NFS assim como deve ter também todo o conjunto de ferramentas de sistema com suporte a ACL) O kernel do servidor deve ter o seguinte suporte:
<*> NFS server support [*] Provide NFSv3 server support [*] Provide server support for the NFSv3 ACL protocol extension
Enquanto os clientes necessitam apenas de:
<*> NFS file system support [*] Provide NFSv3 client support [*] Provide client support for the NFSv3 ACL protocol extension
Compile e instale o novo kernel, reincie e/ou inicie o nfs.
Referências
- http://br-linux.org/artigos/dicas_acl.htm
- http://wiki.kaspersandberg.com/doku.php?id=howtos:acl
- http://gentoo-wiki.com/HOWTO_Use_filesystem_ACLs
Posts Relacionados:
- Autenticação Centralizada com Postgres – NSS e PAM
- (Português) Controle de acessos no Git simples e seguro com Gitosis
Related posts brought to you by Yet Another Related Posts Plugin.