Este tutorial detalha listas de controle de acesso no Linux, para que elas são usadas e como gerenciá-las.

Como administrador de sistema, você provavelmente está gastando algum tempo configurando permissões para usuários e grupos em seu sistema.

Permissões de arquivo já são bastante úteis para dar permissões de leitura, escrita ou execução em diretórios ou arquivos.

Mas e se precisarmos de uma forma mais precisa para dar permissões a pastas ou arquivos?

E se eu quiser dar acesso a um arquivo para um usuário ou grupo específico, que não é o dono atual do arquivo?

É exactamente isto que as listas de controlo de acesso, também abreviadas ACL, estão a resolver num sistema Linux.

No tutorial de hoje, estamos a dar uma vista de olhos às listas de controlo de acesso, o que são e como são utilizadas para configurar correctamente um sistema Linux.

Pronto?

Tabela de Conteúdos

O que irá aprender

Se seguir este tutorial até ao fim, irá aprender sobre os seguintes assuntos:

  • O que são as listas de controlo de acesso e como podem ser lidas a partir do comando ls;
  • Como definir permissões básicas num ficheiro utilizando o comando setfacl:
  • Como ler listas de controle de acesso usando o comando getfacl;
  • Qual é a máscara da lista de controle de acesso e como ela deve ser lida;
  • O que são os padrões da lista de controle de acesso e como eles podem ser usados eficazmente

Esse é um programa bastante longo, então sem mais delongas, vamos começar com uma definição rápida do que são listas de controle de acesso.

Listas de Controle de Acesso Básicas no Linux

No Linux, há duas formas de definir permissões para usuários e grupos: com permissões de arquivos regulares ou com listas de controle de acesso.

Definição de listas de controle de acesso

Listas de controle de acesso são usadas em sistemas de arquivos Linux para definir permissões personalizadas e mais personalizadas em arquivos e pastas. As ACLs permitem que proprietários de arquivos ou usuários privilegiados concedam direitos a usuários específicos ou a grupos específicos.

No Linux, como você provavelmente sabe, as permissões são divididas em três categorias: uma para o dono do arquivo, uma para o grupo e uma para os outros.

No entanto, em alguns casos, você pode querer conceder acesso a um diretório (a permissão de execução, por exemplo) a um usuário específico sem ter que colocar esse usuário no grupo do arquivo.

É exatamente por isso que as listas de controle de acesso foram inventadas em primeiro lugar.

Listing Access Control List

No Linux, listas de controle de acesso não são habilitadas quando você cria um novo arquivo ou diretório em seu host (exceto se um diretório pai tiver algumas ACLs predefinidas).

Para ver se as listas de controle de acesso estão definidas para um arquivo ou diretório, execute o comando ls e procure por um caractere “+” no final da linha de permissão.

$ ls -l

Para mostrar a diferença, aqui está a diferença ao listar arquivos em uma instância mínima.

Agora que você tenha alguns conceitos básicos sobre listas de controle de acesso, vamos ver como você pode começar a criar ACL básicas para seus arquivos e diretórios.

Criando listas de controle de acesso no Linux

Antes de começar com os comandos ACL, é importante ter os pacotes instalados em seu host.

Verificando a instalação dos pacotes ACL

Pode não ser o caso se você escolher ter um servidor mínimo rodando.

Comece verificando a ajuda relacionada ao setfacl executando o seguinte comando

$ setfacl --help

Se seu host não encontrar o comando setfacl, certifique-se de ter instalado os pacotes necessários para o gerenciamento ACL.

$ sudo apt-get install acl -y

Nota que você precisará dos privilégios sudo no Debian 10 para executar este comando.

Executar o comando setfacl e certifique-se de que você é capaz de ver os comandos de ajuda desta vez.

Agora seu host esteja configurado corretamente, vamos ver como o comando setfacl funciona.

Configurando listas de controle de acesso usando setfacl

Com listas de controle de acesso, há dois comandos principais que você precisa lembrar : setfacl e getfacl.

Neste capítulo, vamos dar uma olhada no comando setfacl pois o getfacl é bastante auto-explicativo.

O comando setfacl é usado no Linux para criar, modificar e remover listas de controle de acesso em um arquivo ou diretório.

O setfacl tem a seguinte sintaxe

$ setfacl {-m, -x} {u, g}:<name>: <file, directory>

Onde parênteses curly significam uma das seguintes opções e parênteses regulares significam um ou vários itens.

  • -m : significa que você quer modificar uma ou várias entradas ACL no arquivo ou diretório.
  • -x : significa que você quer remover uma ou várias entradas ACL em um arquivo ou diretório.
  • {u, g} : se você quer modificar a ACL para um usuário ou para um grupo.
  • nome : este é um parâmetro opcional, ele pode ser omitido se você quiser definir as entradas ACL para cada usuário ou para cada grupo no seu host.
  • : para definir permissões de leitura, escrita ou execução no arquivo ou diretório.

Por exemplo, a fim de definir permissões de escrita específicas para um usuário em um arquivo, você escreveria o seguinte comando

$ setfacl -m u:user:w <file, directory>

A fim de definir permissões de execução para todos os usuários em seu host, você escreveria o seguinte comando

$ setfacl -m u::x <file, directory>

Para definir permissões completas para um grupo específico em seu host, você escreveria o setfacl desta forma

Agora vamos dizer que você quer remover uma entrada ACL de um arquivo.

A fim de remover uma entrada específica de usuário de um arquivo, você especificaria a opção x.

Nota : você não pode remover direitos específicos de uma única entrada ACL, o que significa que você não pode remover permissões de escrita, mantendo as permissões de leitura ACL ativas.

$ setfacl -x u:<user> <file, directory>

Simplesmente, para remover ACL relacionado a grupos no seu host, você escreveria o seguinte comando

$ setfacl -x g:<group> <file, directory>

Agora que você viu como você pode criar listas de controle de acesso facilmente no Linux, é hora de ver como você pode verificar listas de controle de acesso existentes em arquivos e diretórios.

Listar listas de controle de acesso usando getfacl

O comando getfacl é usado no Linux para imprimir uma lista completa de todas as permissões regulares e permissões de listas de controle de acesso em um arquivo ou diretório.

O comando getfacl pode ser usado com a seguinte sintaxe

$ getfacl <file, directory>

O comando getfacl é dividido em múltiplas categorias :

  • Nome do ficheiro, proprietário e grupo : as informações sobre a propriedade do usuário e do grupo são mostradas no topo;
  • Permissões de usuário : primeiro, você encontrará permissões de usuário regulares, também chamadas de usuário proprietário, seguido por qualquer entrada ACL específica do usuário (chamada de usuários nomeados)
  • Permissões de grupo : grupos proprietários são apresentados seguidos por entradas ACL específicas do grupo, também chamadas de grupos nomeados
  • Mask : que restringe as permissões dadas às entradas ACL, a máscara será detalhada na próxima seção;
  • Outras permissões : essas permissões estão sempre ativas e esta é a última categoria explorada quando nenhuma outra permissão combina com o usuário ou grupo atual.

Trabalhar com a máscara das listas de controle de acesso

Como você provavelmente viu na última captura de tela, há uma entrada de máscara entre os grupos nomeados e as outras permissões.

Mas para que esta máscara é usada?

A máscara ACL é diferente da máscara de criação de arquivo (umask) e é usada para restringir entradas ACL existentes em um arquivo ou diretório.

A máscara ACL é usada como o conjunto máximo de permissões ACL independentemente das permissões existentes que excedam a máscara ACL.

Como sempre, um diagrama fala uma centena de palavras.

A máscara ACL é actualizada sempre que executa um comando setfacl, a menos que especifique que não quer actualizar a máscara com a bandeira -n.

Para evitar que a máscara seja atualizada, execute o setfacl com o seguinte comando

$ setfacl -n -m u:antoine:rwx <file, directory>

Como você pode ver neste exemplo, eu configurei o usuário “antoine” para ter permissões totais no arquivo.

A máscara está definida para restringir as permissões de leitura e escrita.

Como consequência, as “permissões efetivas” definidas neste arquivo para este usuário são de leitura e escrita, a permissão de execução não é concedida.

Note : se o seu conjunto máximo de permissões difere da entrada da máscara, ser-lhe-á apresentado um conjunto eficaz de entradas ACL “reais” utilizadas.

Criar listas de controle de acesso padrão em diretórios

Como já mencionado neste artigo, é possível criar entradas ACL em diretórios e elas funcionam da mesma forma que as listas de controle de acesso a arquivos.

No entanto, existe uma pequena diferença quando se trata de directorias : é necessário optar por criar entradas ACL por defeito.

As listas de controlo de acesso por defeito são usadas para criar entradas ACL num directório que serão herdadas por objectos neste directório como ficheiros ou subdirectórios.

Ao criar entradas ACL por defeito :

  • Os arquivos criados neste diretório herdam as entradas ACL especificadas no diretório pai
  • Subdiretórios criados neste diretório herdam as entradas ACL assim como as entradas ACL padrão do diretório pai.

Para criar entradas ACL padrão, especifique a opção -d ao definir ACL usando o comando setfacl.

$ setfacl -d -m {u, g}:<name>: <directory>

Por exemplo, para atribuir permissões de leitura a todos os ficheiros criados num directório, pode executar o seguinte comando

$ setfacl -d -m u::r directory

Agora, quando um ficheiro é criado nesta directoria acl, pode ver que as entradas padrão ACL são aplicadas ao ficheiro.

Simplesmente, quando um diretório é criado na acl-diretório, ele herdará entradas padrão ACL especificadas no diretório pai.

Note que é recomendado especificar as permissões padrão para todas as três categorias (usuário, grupo e outros).

De facto, especificando uma das três entradas irá criar as duas restantes com permissões relacionadas com a máscara de criação de ficheiros.

Eliminar listas de controlo de acesso por omissão em directórios

Para eliminar listas de controlo de acesso existentes por omissão em directórios, use o sinalizador -k com o comando setfacl.

$ setfacl -k <directory>

Dado o exemplo que especificamos anteriormente, aqui está como apagar entradas padrão

$ setfacl -k acl-directory

Nota que apagar entradas ACL do diretório pai não exclui entradas ACL em arquivos ou diretórios contidos no diretório pai.

Para remover entradas ACL padrão em um diretório e todos os subdiretórios, você teria que usar uma opção recursiva (-R)

$ setfacl -kR <directory>

Conclusão

Neste tutorial, você aprendeu sobre listas de controle de acesso no Linux, o getfacl e o comando setfacl.

Você aprendeu mais sobre a máscara das listas de controle de acesso e como o ACL padrão é usado para criar entradas ACL em arquivos e subdiretórios contidos no diretório pai.

Se você está curioso sobre a administração do sistema Linux, nós temos muito mais tutoriais sobre o assunto, certifique-se de lê-los!

Deixe uma resposta

O seu endereço de email não será publicado.