Como definir listas de controle de acesso (ACLs) e cotas de disco para usuários e grupos

Como definir listas de controle de acesso (ACLs) e cotas de disco para usuários e grupos

As listas de controle de acesso (também conhecidas como ACLs) são uma característica do kernel Linux que permite definir mais direitos de acesso de granulação fina para arquivos e diretórios do que aqueles especificados por regular ugo/rwx permissões.

Por exemplo, o padrão ugo/rwx As permissões não permitem definir diferentes permissões para diferentes usuários ou grupos individuais. Com as ACLs, isso é relativamente fácil de fazer, como veremos neste artigo.

Verificação da compatibilidade do sistema de arquivos com ACLs

Para garantir que seus sistemas de arquivos estejam apoiando ACLs, você deve verificar se eles foram montados usando a opção ACL. Para fazer isso, vamos usar tune2fs Para sistemas de arquivos ext2/3/4, conforme indicado abaixo. Substituir /dev/sda1 Com o dispositivo ou sistema de arquivos que você deseja verificar:

# tune2fs -l /dev /sda1 | Grep "Opções de montagem padrão:" 

Observação: Com XFS, As listas de controle de acesso são suportadas para fora da caixa.

Na sequência ext4 sistema de arquivos, podemos ver que as ACLs foram ativadas para /dev/xvda2:

# tune2fs -l /dev /xvda2 | Grep "Opções de montagem padrão:" 
Verifique o ACL ativado no sistema de arquivos Linux

Se o comando acima não indicar que o sistema de arquivos foi montado com suporte para ACLs, provavelmente é devido ao Noacl opção estar presente em /etc/fstab.

Nesse caso, remova -o, desmonte o sistema de arquivos e monte -o novamente ou simplesmente reinicie seu sistema depois de salvar as alterações para /etc/fstab.

Apresentando ACLs no Linux

Para ilustrar como as ACLs funcionam, usaremos um grupo nomeado desenvolvedores e adicione usuários Walter White e Saulgoodman (sim, eu sou um fã de Breaking Bad!) para isso.:

# GroupAdd Developers # UserAdd WalterWhite # UserAdd saulgoodman # UserMod -A -g Developers Walterwhite # UserMod -a -g Developers Saulgoodman 

Antes de prosseguir, vamos verificar se ambos os usuários foram adicionados ao grupo de desenvolvedores:

# id walterwhite # id saulgoodman 
Encontre ID de usuário no Linux

Vamos agora criar um diretório chamado teste em /mnt, e um arquivo nomeado ACL.TXT dentro (/mnt/teste/ACL.TXT).

Então vamos definir o proprietário do grupo para desenvolvedores e mudar seu padrão ugo/rwx permissões recursivamente para 770 (Concedendo assim as permissões de leitura, gravação e execução concedidas ao proprietário e ao proprietário do grupo do arquivo):

# mkdir/mnt/teste # touch/mnt/teste/ACL.TXT # CHGRP -R Developers /MNT /Teste # CHMOD -R 770 /MNT /TESTE 

Como esperado, você pode escrever para /mnt/teste/ACL.TXT como Walter White ou Saulgoodman:

# su - walterwhite # echo "meu nome é walter white">/mnt/teste/ACL.txt # saída # su - saulgoodman # echo "meu nome é saul goodman" >>/mnt/teste/ACL.txt # saída 
Verifique as regras da ACL nos usuários

Até agora tudo bem. No entanto, em breve veremos um problema quando precisarmos conceder acesso a gravar acesso a /mnt/teste/ACL.TXT Para outro usuário que não está no grupo de desenvolvedores.

Padrão ugo/rwx As permissões exigiriam que o novo usuário fosse adicionado ao grupo de desenvolvedores, mas isso lhe daria as mesmas permissões sobre todos os objetos pertencentes ao grupo. É exatamente aí que as ACLs são úteis.

Definindo ACLs no Linux

Existem dois tipos de ACLs: Acesse ACLs são (que são aplicados a um arquivo ou diretório) e ACLs padrão (opcional), que só pode ser aplicado a um diretório.

Se arquivos dentro de um diretório onde um ACL padrão foi definido não tem um LCA próprio, eles herdam o LCA padrão do diretório pai.

Vamos dar ao usuário Gacanepa Leia e escreva acesso a /mnt/teste/ACL.TXT. Antes de fazer isso, vamos dar uma olhada nas configurações atuais da ACL nesse diretório com:

# getfacl/mnt/teste/ACL.TXT 

Em seguida, altere as ACLs no arquivo, use você: seguido pelo nome de usuário e : rw Para indicar permissões de leitura / gravação:

# setfacl -m u: gacanepa: rw/mnt/teste/ACL.TXT 

E corra getfacl no arquivo novamente para comparar. A imagem a seguir mostra o "Antes" e "Depois":

# getfacl/mnt/teste/ACL.TXT 
Defina o ACL em usuários do Linux

Em seguida, precisaremos dar a outras pessoas executar permissões no /mnt/teste diretório:

# chmod +x /mnt /teste 

Lembre -se de que, para acessar o conteúdo de um diretório, um usuário regular precisa executar permissões nesse diretório.

Do utilizador Gacanepa agora deveria ser capaz de escrever no arquivo. Mude para essa conta de usuário e execute o seguinte comando para confirmar:

# echo "Meu nome é Gabriel Cánepa" >>/mnt/teste/ACL.TXT 

Para definir uma ACL padrão como um diretório (que seu conteúdo herdará, a menos que substitua o contrário), adicione D: antes da regra e especifique um diretório em vez de um nome de arquivo:

# setfacl -m d: o: r/mnt/teste # getfacl/mnt/teste/ 

O ACL acima permitirá que os usuários não no grupo proprietário tenham acesso ao conteúdo futuro do /mnt/teste diretório. Observe a diferença na saída de getfacl /mnt /teste antes e depois da mudança:

Defina o diretório ACL padrão para Linux

Para remover um ACL específico, substitua -m Nos comandos acima com -x. Por exemplo,

# setfacl -x d: o /mnt /teste 

Como alternativa, você também pode usar o -b opção para remover todas as ACLs em uma etapa:

# setfacl -b /mnt /teste 

Para mais informações e exemplos sobre o uso de ACLs, consulte Capítulo 10, seção 2, do OpenSuse Security Guide (também disponível para download sem custo em formato PDF).

Defina cotas de disco Linux em usuários e sistemas de arquivos

O espaço de armazenamento é outro recurso que deve ser cuidadosamente usado e monitorado. Para fazer isso, as cotas podem ser definidas com base no sistema de arquivos, seja para usuários individuais ou para grupos.

Assim, um limite é colocado no uso do disco permitido para um determinado usuário ou um grupo específico, e você pode ter certeza de que seus discos não serão preenchidos com capacidade por um usuário descuidado (ou mal intencionado).

A primeira coisa que você deve fazer para habilitar cotas em um sistema de arquivos é montá -lo com as opções de Usrquota ou Grpquota (para cotas de usuário e grupo, respectivamente) em /etc/fstab.

Por exemplo, vamos ativar as cotas baseadas no usuário em /dev/vg00/vol_backups e cotas baseadas em grupo em /dev/vg00/vol_projects.

Observe que o Uuid é usado para identificar cada sistema de arquivo.

Uuid = f6d1eba2-9AED-40EAE-99AC-75F4BE05C05A /HOME /PROJETOS EXT4 PADRES, GRPQUOTA 0 0 UUID = E1929239-5087-44B1-93S6-53E0E09DB6EB9E /HOMUPS /HOMUPS / 

Desmontar e remontar os dois sistemas de arquivos:

# UMOUNT /HOME /PROJETOS # UMOUNT /Home /Backups # Mount -o Remount /Home /Projetos # Mount -o Remount /Home /Backups 

Em seguida, verifique se as opções Usrquota e Grpquota estão presentes na saída da montagem (consulte destacados abaixo):

# montagem | Grep VG00 
Verifique a cota do usuário do Linux e a cota de grupo

Por fim, execute os seguintes comandos para inicializar e ativar cotas:

# Quotacheck -Avugc # Quotaon -vu /home /backups # Quotaon -vg /home /Projects 

Dito isto, agora vamos atribuir cotas ao nome de usuário e ao grupo que mencionamos anteriormente. Você pode mais tarde desativar cotas com Quidaoff.

Definindo cotas de disco Linux

Vamos começar definindo um ACL em /home/backups para usuário Gacanepa, O que lhe dará ler, escrever e executar permissões nesse diretório:

# setfacl -m u: gacanepa: rwx/home/backups/ 

Então com,

# edquota -u gacanepa 

Vamos fazer o suave limite = 900 e o duro limite = 1000 blocos (1024 bytes/bloco * 1000 blocos = 1024000 bytes = 1 mb) do uso de espaço em disco.

Também podemos colocar um limite de 20 e 25 Como limites suaves e duros no número de arquivos, esse usuário pode criar.

O comando acima lançará o editor de texto ($ Editor) com um arquivo temporário onde podemos definir os limites mencionados anteriormente:

Cota de disco Linux para usuário

Essas configurações farão com que um aviso seja mostrado ao usuário Gacanepa Quando ele atingiu o 900 block ou 20 inodo Limites para um período de carência padrão de 7 dias.

Se o Over-Quota A situação não foi eliminada até então (por exemplo, removendo arquivos), o limite suave se tornará o limite rígido e esse usuário será impedido de usar mais espaço de armazenamento ou criar mais arquivos.

Para testar, vamos fazer com que o usuário Gacanepa tente criar um vazio 2 MB arquivo nomeado Test1 dentro /home/backups:

# dd if =/dev/zero de =/home/backups/test1 bs = 2m count = 1 # ls -lh/home/backups/test1 
Verifique a cota do usuário do Linux no disco

Como você pode ver, o arquivo de operação de gravação falha devido ao fato de a cota de disco ter sido excedida. Desde apenas o primeiro 1000 kb são gravados no disco, o resultado neste caso provavelmente será um arquivo corrupto.

Da mesma forma, você pode criar um ACL para os grupos de desenvolvedores para dar aos membros desse grupo RWX acesso a /casa/projetos:

# setfacl -m g: desenvolvedores: rwx/home/projetos/ 

E defina os limites da cota com:

# edquota -g desenvolvedores 

Assim como fizemos com o usuário Gacanepa mais cedo.

O período de carência pode ser especificado para qualquer número de segundos, minutos, horas, dias, semanas ou meses, executando.

# edquota -t 

e atualizar os valores em Block Gracy Período e Período de Grace de Inode.

Ao contrário do uso de bloqueio ou inode (que são definidos em um usuário ou grupo de grupo), o período de carência é definido em todo o sistema.

Para relatar cotas, você pode usar cota -u [usuário] ou Quota -g [Grupo] para uma lista rápida ou Repquota -v [/path/to/filesystem] Para um relatório mais detalhado (detalhado) e bem formatado.

Claro, você vai querer substituir [do utilizador], [grupo], e [/path/to/filesystem] Com nomes de usuário / grupo específicos e sistema de arquivos que você deseja verificar.

Resumo

Neste artigo, explicamos como definir Listas de controle de acesso e cotas de disco para usuários e grupos. Usando ambos, você poderá gerenciar permissões e uso de disco com mais eficiência.

Se você quiser saber mais sobre cotas, pode consultar o mini-howto de cota no projeto de documentação do Linux.

Escusado será dizer que você também pode contar conosco para responder a perguntas. Basta enviá -los usando o formulário de comentário abaixo e ficaremos mais do que felizes em dar uma olhada.

Torne -se um administrador de sistema certificado Linux