Como gerenciar ACLs no Linux

Como gerenciar ACLs no Linux

Objetivo

Introdução ao gerenciamento do ACLS (Lista de Controle de Acesso) no Linux

Sistema operacional e versões de software

  • Sistema operacional: - Distribuição Linux AGNOSTIC

Requisitos

  • Acesso à raiz em uma instalação do Linux em funcionamento
  • Conhecimento do sistema de permissão discricionário
  • Um sistema de arquivos que suporta ACLs (e.g xfs, ext2, ext3, ext4), montado com a opção 'ACL'
  • Tendo o pacote 'ACL' instalado

Dificuldade

MÉDIO

Convenções

  • # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de sudo comando
  • $ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular

Introdução

Neste tutorial, veremos o que são ACLs e como fazer a manipulação básica desse tipo de permissões em uma plataforma Linux. As instruções abaixo funcionarão em qualquer distribuição Linux. Suponho que você saiba e se sinta confortável usando permissões discricionárias de Ugo/RWX padrão.

Então, o que são ACLs ?

Os ACLs são um segundo nível de permissões discricionárias, que podem substituir os UGO/RWX padrão. Quando usados ​​corretamente, eles podem conceder a você uma melhor granularidade para definir o acesso a um arquivo ou um diretório, por exemplo, dando ou negando acesso a um usuário específico que não é o proprietário do arquivo, nem no proprietário do grupo.



Começando

A primeira coisa que você precisa fazer, se quiser aproveitar as ACLs, é garantir que o sistema de arquivos em que você deseja usá -los tenha sido montado com a opção 'ACL'. Para verificar o último, você pode executar o comando 'tune2fs -l', passando a partição como argumento. Como você pode ver em execução (saída truncada):

# tune2fs -l /dev /sda3 

Dá o seguinte resultado no meu sistema, mostrando que o sistema de arquivos ON /DEV /SDA3 possui, entre as opções de montagem padrão, também 'ACL'.

Se o seu sistema de arquivos não tiver sido montado com a opção 'ACL', você poderá reformulá-lo dando a opção necessária:

# Monte -o Remount -o ACL /dev /sda1 

No entanto, observe que as opções de montagem definidas dessa maneira não serão persistentes e não sobreviverão a uma reinicialização. Se você deseja obter persistência, deve modificar as opções de montagem do sistema de arquivos em /etc /fstab, atribuindo a opção 'ACL' estaticamente.

Outra coisa que precisamos é instalar o ACL pacote. Este pacote contém vários utilitários da ACLS, como o getfacl e setfacl programas.

Um caso de teste

Vamos ver o que as ACLs podem fazer por nós. Primeiro, criaremos um arquivo chamado texto.CFG e nós o daremos como um argumento para o getfacl comando. Vamos ver o que a saída deste comando mostra:

 $ touch text.CFG && getfacl text.cfg 

Como você pode ver, como não definimos nenhuma permissão do ACL no arquivo, o comando exibe apenas os valores de permissões padrão, além do proprietário do arquivo e do proprietário do grupo, tendo lido e gravação permissões. Agora vamos imaginar que queremos dar um usuário específico (vou criar esse usuário de propósito e chamá -lo fictício ), um conjunto específico de privilégios no arquivo. Nós apenas teremos que correr:

$ setfacl -m u: manequim: texto rw.cfg 

Vamos analisar o comando: primeiro temos, é claro, o nome do programa setfacl, o que é bastante auto-explicativo, então passamos pelo -m opção (abreviação de --modificar) que nos permite alterar as ACLs de um arquivo, depois as descrições de permissão u: manequim: rw.

Temos três 'seções' divididas por colonos: no primeiro, o você significa usuário, especificando que queremos definir as ACLs para um usuário específico. Poderia ter sido um g para grupo, ou um o para outros. Na segunda seção, temos o nome do usuário para quem queremos definir as permissões e, no terceiro, as permissões para atribuir.

Finalmente, o nome do arquivo no qual queremos aplicar as permissões.

Se agora tentarmos executar o comando 'getfacl', podemos ver que sua saída reflete as alterações que fizemos:

$ getfacl texto.cfg 



Uma entrada foi adicionada para o fictício Usuário, mostrando as permissões que atribuímos a ele. Fora isso, se você perceber, também uma entrada para mascarar apareceu. O que isso representa ? A máscara associada a um LCA limita o conjunto de permissões que podem ser atribuídas no arquivo para os grupos e usuários nomeados e para o proprietário do grupo, mas não tem efeito nas permissões para o proprietário do arquivo e o proprietário outro Grupo de permissão.

Nesse caso, apenas as permissões de leitura e escrita poderiam ser atribuídas com o comando setfacl. Claro que podemos mudar esta opção, usando setfacl Programa em si:

$ setfacl -m máscara: r texto.cfg 

Com o comando acima, definimos a máscara para permitir apenas permissões de leitura. Vamos verificar a saída de getfacl agora:

$ getfacl texto.cfg 


Como você pode ver, não apenas as mudanças que fizemos na máscara agora são relatadas, mas também as permissões efetivas para o proprietário do grupo e o usuário nomeado fictício são mostrados. Embora o proprietário do grupo e o fictício O usuário tem permissões de leitura e escrita no arquivo, alterando a máscara, limitamos efetivamente suas permissões a ler apenas. Como mostra a saída do comando, eles agora só podem ler o arquivo.

Além de alterado explicitamente com o comando acima, a máscara ACLS também é recalculada automaticamente quando atribuímos ou alteramos as permissões com o setFacl (a menos que a opção -n seja especificada). Vamos demonstrar que: mudaremos as permissões do fictício usuário para rwx e então verifique a saída GETFACL:

$ setfacl -m u: manequim: texto rwx.CFG && getfacl text.cfg 


Como você pode ver, a máscara foi recalculada e agora reflete as permissões máximas presentes para o usuário nomeado fictício. Obviamente, como agora nenhuma permissões definidas anteriormente é maior que a máscara, não há necessidade de mostrar o #eficaz status de permissão.

Você também pode usar a ACL para negar completamente o acesso a um arquivo para um usuário ou grupo nomeado específico. Por exemplo, executando:

$ setfacl -m u: manequim: - texto.cfg 

negarmos efetivamente todos os privilégios ao fictício Usuário no texto.Arquivo CFG.



ACLs padrão

O padrão ACL é um tipo específico de permissão atribuída a um diretório, que não altera as permissões do próprio diretório, mas faz com que as ACLs especificadas sejam definidas por padrão em todos os arquivos criados dentro dele. Vamos demonstrar: primeiro vamos criar um diretório e atribuir padrão ACL para ele usando o -d opção:

$ mkdir teste && setfacl -d -m u: manequim: teste rw 

Agora, podemos examinar a saída do getFacl para esse diretório:

$ getfacl teste 


O padrão As permissões foram atribuídas corretamente. Agora, podemos verificá -los criando um arquivo dentro do diretório de teste e verificando suas permissões executando getfacl:

$ toque teste/arquivo.cfg && getfacl teste/arquivo.cfg 


Como esperado, o arquivo foi criado automaticamente recebendo as permissões ACLS especificadas acima.

Quando você deseja apagar todo o conjunto de ACLs, você sempre pode executar o setfacl com o -b opção.

Este tutorial abrange os principais aspectos das ACLs e, é claro, há muito mais sobre eles para saber, então sugiro, como sempre, para ler o manual para um conhecimento mais profundo. Até agora, lembre -se de que, se você quiser remover todas as permissões ACLs atribuídas a um arquivo, basta executar setfacl com o -b (abreviatura de --deletar tudo) opção.

Tutoriais do Linux relacionados:

  • Coisas para instalar no Ubuntu 20.04
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Arquivos de configuração do Linux: os 30 primeiros mais importantes
  • Download do Linux
  • Linux pode obter vírus? Explorando a vulnerabilidade do Linux…
  • Melhor distro Linux para desenvolvedores
  • Comandos Linux: os 20 comandos mais importantes que você precisa para…
  • Coisas para fazer depois de instalar o Ubuntu 22.04 Jellyfish…
  • Como montar a imagem ISO no Linux
  • Como formatar o disco no Linux