ACL Linux - UFMAgeraldo/soii/8.ACL.pdfSolaris, MacOs, e Windows permitem múltiplos streams de...
Transcript of ACL Linux - UFMAgeraldo/soii/8.ACL.pdfSolaris, MacOs, e Windows permitem múltiplos streams de...
O que são ACLs e por que usá-las?
ACL Linux
Motivação Unix utiliza um sistema de arquivo
simples, mas poderoso
Permissões para o dono, grupo do dono e demais
Cada um possui 3 bits (r, w, x)
2
O que é ACL Acess Control List
São listas de controle de acesso a objetos do sistema de arquivos do sistema operacional
Vieram para complementar os sistema de permissões baseadas nos bits (r,w,x)
3
Tipos ACL de Acesso objeto que define
permissões de acesso aos usuários e grupos de todos os objetos do sistema de arquivos.
ACL Padrão ACLs que só podem ser aplicada a diretórios. Elas determinam as permissões do objetos do sistema de arquivos herdadas dos diretórios pais.
Entradas ACL são as entradas na lista que é a ACL.
4
Funcionamento das ACLs Uma ACL é composta por um conjunto de
entradas que determinam as permissões de cada arquivo no sistema, cada arquivo tem uma representação ACL
As três classes de permissões de usuários são representadas por entradas na ACL.
Permissões adicionais para usuários ou grupos ocupam entradas adicionais na ACL.
5
Funcionamento
ACLs equivalentes às permissões do arquivo modo bits são chamadas de mínimas e possuem apenas três entradas na ACL
ACLs com mais do que as três entradas são chamadas extendidas, a extensão de uma ACLs contém uma máscara entrada e pode conter qualquer número de usuários e de grupos nas entradas.
6
Funcionamento
7
Funcionamento Cada entrada é composta de um tipo, um
qualificador e o conjunto de permissões.
◦ Ex: user::rwx , user:name:rwx
Os bits da permissão de grupo (o mesmo do modelo tradicional) definem um limite superior no qual todas as ACL de grupo deverão cumprir.
◦ Esse limite superior garante que aplicações não compatíveis não comecem a dar permissões adicionais quando usando POSIX ACL
8
Funcionamento - Máscara Numa ACL extendida a classe grupo
contém entradas para usuários adicionais ou grupos, porém isto resulta em um problema: ◦ algumas dessas entradas adicionais podem
conter permissões que não estão contidas na entrada grupo proprietário
◦ assim as permissões da entrada de grupo proprietário podem diferir das permissões da classe grupo.
◦ A solução desse problema é criar uma entrada máscara
9
ACLs extendidas Em ACLs mínimas a classe de permissão
de grupo é a mesma da permissão de grupo dono do objeto.
Com ACLs estendidas, as permissões da classe de grupo irão ser mapeadas usando a entrada de máscara.
◦ Permissões que estão presentes na entrada ACL da classe grupo e que estão também presentes na máscara serão efetivadas
◦ Se as permissões não estão presentes na máscara, não serão usadas
10
Mapeamento de entradas ACL para Modo de permissões por bits
11
Algoritmo
1. Se o usuário é o dono e tem permissões, o acesso é permitido;
2. Se a ACL contém um usuário e ele tem as permissões necessárias, ele irá para a mascára de entrada (explicado abaixo). Caso contrário, o acesso é negado;
3. Se o usuário faz parte do grupo dono do arquivo, ou se o usuário faz parte de um grupo que contém uma entrada ACL, então:
1. Se as entradas contém as permissões necessárias, ele irá para a mascára de entrada;
2. Caso contrário, o acesso é negado.
4. Se a solicitação não se encaixar nas permissões acima, então:
1. Se as permissões para outros usuários tiver as permissões necessárias, o acesso é permitido;
2. Caso contrário, o acesso é negado.
5. Checando a mascára de acesso:
1. Se a mascára de acesso contém as permissões necessárias, o acesso é permitido;
2. Caso contrário, o acesso é negado.12
Extended Attributes São metadados dos objetos do sistema de
arquivos
Tem o formato nome,valor
O Linux usa para implementar as ACLs
Outros sistemas operacionais como Solaris, MacOs, e Windows permitem múltiplos streams de informações serem associados a um arquivo. Nesses sistemas existem chamadas especificas para ACLs
13
Implementações da ACL
O Linux não tem sistema de chamadas ACL
ACLs são passadas entre o usuário e o kernel por EAS – Extended Attributes.
Isto reduz o número de interfaces sistema, mas com o mesmo número de operações finais.
A interface EA é mais fácil de se adaptar às necessidades futuras, tais como identificadores não-numérico de usuários e grupos na ACL entradas.
14
Máximo de entradas ACLs
XFS 25
Ext2, ext3 32
ReiserFS, JFS 8191
•A maioria dos sistemas Unix que suportam ACLs tendem limitar o número
de entradas autorizadas a alguns ACL número razoável.
•A tabela abaixo mostra os limites de entradas ACLs em alguns sistemas de
arquivos Linux.
15
ACLs e NFS Requer duas coisas
um mecanismo a fim de que todas as decisões acesso, sejam realizadas de uma forma homogênea.
as extensões para o protocolo NFS para manipular ACLs em sistemas de arquivos montados remotamente
16
ACLs e NFS O protocolo NFS executa do lado do cliente
caching para melhorar a eficiência
Decisões como a que recebe o acesso à leitura são realizados localmente em cache de dados sobre o cliente.
Estas decisões são feitas com a suposição de que o arquivo Modo de permissões bits e os IDs do proprietário e grupo proprietário são suficientes para fazer isso.
O que não é verdade sempre.
17
ACLs e NFS Para resolver esse problema existem duas
estratégias.
Um é o de tornar o algoritmo de verificação de acesso de uso no cliente.
O outro é delegar decisões de acesso para o servidor e, possivelmente cache dessas decisões para um período de tempo definido com o cliente.
18
Aplicações suporte a ACL
Eiciel
Front-end para administrar ACLs semelhante a interface do NTFS (Windows)
19
Eiciel
20
GERENCIANDO ACLs Os comandos básicos para gerenciamento
de ACL são:
setfacl - Seta atributos no arquivo ou pastagetfacl - Verifica atributos nos arquivos ou pastas
21
Sintaxe do setfacl :
setfacl [opções] [{-m|-x} especificações] [{-M|-X} arquivo_de_acl] arquivo
As principais opções são:
setfacl -b arquivoRemove todas as ACLs do arquivo
setfacl -k arquivoRemove a ACL padrão
setfacl –RSeta a ACL de forma recursiva
Setando uma ACL:
setfacl -m u:nome_usuario:rwx arquivoModifica a ACL adicionando um usuário
setfacl -R -m g:nome_grupo:rwx pastaModifica a ACL adicionando a um grupo. Estas permissões vão servir para todos os arquivos e sub-pastas.
setfacl -x u:nome_usuario arquivoRemove a ACL referente ao usuário do arquivo especificado.
22
EXEMPLOCriamos duas pastas para servir de cobaia e vamos colocar o grupo de acesso destas pastas o grupo "compartilhamento“
#mkdir -p /home/share/private#chown -R :compartilhamento /home/share#chmod -R 770 /home/share
Criamos um usuário de cobaia também e o colocamos no grupo do compartilhamento
#useradd -G compartilhamento cobaia
Vamos verificar a situação da pasta
# getfacl /home/share/privategetfacl: Removing leading '/' from absolute path names# file: home/share/private# owner: root# group: compartilhamentouser::rwxgroup::rwxother::---
23
No samba Criadas as ACLs e dadas as devidas permissões
A criação de arquivos após a criação da ACL ainda terá como padrão o usuário e grupo de quem criou, e não será setada a ACL da pasta pai.
Para resolver este problema inserimos três tags no arquivo /home/samba/smb.conf
map acl inherit = yesinherit acl = yesinherit permissions = yes
Estas tags podem ser inseridas tanto na seção global como na de compartilhamento do samba, referenciando apenas algumas pastas.
Estas tags fazem referência à opção "herdar permissões do objeto pai para objetos filho".
24