O comando setfacl no Linux

O comando setfacl no Linux
“Este tutorial explica como usar o comando setfacl para definir permissões de LCA (Lista de Controle de Acesso).

Listas de controle de acesso (ACL) nos permitem gerenciar permissões com opções adicionais do que as oferecidas por permissões POSIX (permissões comuns que gerenciamos com o chmod comando).

Ao ler este tutorial, você aprenderá o mais importante setfacl opções relacionadas.

Este documento é otimizado para ambos os usuários que procuram rápido setfacl Instruções para implementar e para usuários que não estão familiarizados com a ACL, que podem encontrar todo o conteúdo teórico necessário para entendê -lo após a seção prática. Eu também adicionei uma tabela resumindo o setfacl Opções de comando descritos abaixo.

Todos os exemplos incluídos neste artigo contêm capturas de tela, facilitando para todos os usuários do Linux entendê -los.”

As opções de comando setfacl

Antes de começar com o setfacl comando, vamos verificar as permissões atuais do arquivo nomeado . Para verificar as permissões atuais da ACL, execute o getfacl comando usando a seguinte sintaxe:

getfacl

No meu caso, executo o comando mostrado na captura de tela abaixo.

getfacl file1

Como você pode ver na captura de tela acima, o arquivo possui permissões POSIX padrão para o proprietário chamado Linuxhint (lendo e escrita), para o Linuxhint grupo (leitura) e para outros (leitura). O usuário e o grupo são Linuxhint.

Essas são as permissões que aplicamos usando o chmod comando, que nos permite definir permissões para o proprietário, grupo e outros.

Agora, digamos que queremos adicionar permissões personalizadas para outro usuário específico usando as permissões estendidas do ACL.

No exemplo abaixo, concederei permissões de leitura, escrita e execução sobre o mesmo arquivo para o usuário Linuxhint2. Então eu corro getfacl novamente para verificar as mudanças.

setfacl -m u: linuxhint2: rwx file1

Onde:

  • setfacl: Invoca o programa para gerenciar permissões.
  • -m: Esta bandeira é usada para modificar as permissões.
  • u: linuxhint2: rwx: Especifica o usuário Linuxhint2 (u: linuxhint2) e o concede lendo, escrevendo e execução permissões (: rwx).
  • arquivo1: O arquivo de destino ao qual as permissões são modificadas/aplicadas.

OBSERVAÇÃO: Como você pode ver na captura de tela anterior, além de permissões regulares, podemos ver um novo usuário (Linuxhint2) com permissões personalizadas foram adicionadas e uma nova linha chamada A mascarar; Isso será explicado mais tarde abaixo.

Mas agora, vamos supor que queremos conceder permissões a um grupo diferente em vez de um usuário diferente. A sintaxe é quase a mesma, exceto para o você: opção, que deve ser substituída por g: como mostrei na figura a seguir, onde o grupo Linuxhint3 é concedido permissões de leitura e escrita. Então eu corro getfacl para verificar modificações.

setfacl -m g: linuxhint3: rw file1

Como você pode ver, um novo grupo (Linuxhint3) foi adicionado com permissões de leitura e escrita.

Agora vamos explicar o mascarar linha que apareceu depois de solicitarmos permissões prolongadas da ACL.

O mascarar permite a substituição de permissões para usuários, grupos ou outros, exceto o proprietário. Se a máscara for r, Usuários, grupos e outros (todos, exceto o proprietário) com permissões anteriores de redação ou execução anteriores, os perderão. O limite da máscara afeta todos os usuários, exceto o proprietário. É uma função substituir as permissões existentes, limitando -as ou aumentando -as.

Para modificar a máscara, você não precisa especificar usuários ou grupos; basta especificar a máscara seguida de permissões usando m: como mostrado no exemplo a seguir.

setfacl -m m: r file1

Como você pode ver, depois de definir uma máscara com um limite de leitura, o Linuxhint2 Usuário, que anteriormente tinha permissões de leitura, escrita e execução, e o grupo Linuxhint3, que tinham permissões de leitura e escrita, agora têm apenas uma permissão eficaz. O limite de leitura da máscara substituiu suas permissões anteriores. Somente as permissões do proprietário permanecem intocadas.

Mas se a máscara estiver configurada para ler permissões e você conceder a um usuário, grupo ou outro mais do que as permissões de leitura, a máscara será automaticamente modificada, aumentando seu limite de acordo com as permissões recém -concedidas. Por padrão, o limite da máscara não pode ser menor do que as permissões concedidas existentes para que não sejam o proprietário (veremos como impedir isso mais tarde).

Isso significa que se a máscara estiver definida como r (Leitura), e eu concedo a um usuário Permissões adicionais de redação e execução (RWX), a máscara se tornará rwx.

Primeiro, vamos ver nosso cenário atual, onde a máscara está r- (Somente a permissão de leitura).

Agora, vamos ver o que acontece se eu adicionar permissão de execução e escrita para o usuário Linuxhint2, quem atualmente possui apenas permissões de leitura eficaz (como todos, exceto o proprietário).

setfacl -m u: linuxhint2: rwx file1

Como você pode ver, não apenas o Linuxhint2 As permissões de usuário foram atualizadas, mas a máscara também. Isso ocorre porque, por padrão, a máscara representa um limite e, se o limite for excedido por uma nova ordem, aumenta.

Você pode ter permissões de máscara específicas e conceder permissões adicionais a um usuário, grupo ou outros sem obter a máscara modificada pela implementação da bandeira -n.

O -n A bandeira instrui o ACL a manter a máscara inalterada, mesmo que algumas permissões a excedam.

Vamos ver o novo cenário, onde a máscara está definida como r-

No exemplo abaixo, o usuário Linuxhint2 é dado permissões de escrita e execução, mas as -n A bandeira é implementada para impedir que a máscara seja alterada.

Como você pode ver abaixo, o Linuxhint2 O usuário recebeu direitos de escrita e execução, mas a máscara permanece inalterada como instruído pelo -n bandeira.

setfacl -n -m u: linuxhint2: wx file1

O -d A bandeira é usada para definir permissões padrão para o conteúdo de um diretório. Esse sinalizador não afeta as permissões de diretório, mas apenas o conteúdo, incluindo arquivos e subdiretos.

Esse sinalizador pode ser útil, por exemplo, criar permissões padrão para um usuário ou grupo específico sobre o conteúdo do diretório. Quando novos arquivos são criados dentro desse diretório, os usuários ou grupos definidos recebem suas permissões definidas padrão.

No cenário atual, há um diretório com as seguintes permissões.

No exemplo abaixo, Outro (Todos os usuários que não são proprietários ou grupos) serão dados como permissões de leitura padrão para o conteúdo do diretório chamado “diretório.”

diretório setfacl -d -m o: r:

Como você pode ver na captura de tela acima, as permissões padrão para o usuário e o grupo permanecem, enquanto as permissões padrão para Outro foram alterados para apenas ler. Agora, se novos arquivos e subdiretórios forem criados no “diretório,Outros receberão permissões de leitura por padrão.

O -R A bandeira permite que você aplique regras da ACL recursivamente. Quando -R é implementado, as permissões definidas afetarão o diretório especificado e todos os seus arquivos e subdiretos. Esta bandeira está presente em muitos comandos Linux para tarefas recursivas.

O seguinte comando dá Outro Leitura e escrita permissões para diretório1 recursivamente.

setfacl -r -m o: diretório RW1

O ACL permite que você faça backup de permissões para ser restaurado mais tarde.

Na imagem a seguir, o comando getfacl é usado para fazer um backup recursivo do “diretório"Para um arquivo chamado"ACLPERMISSIONS.TXT.

GetFacl -r Directory> AclPermissions.TXT

Para restaurar o backup, use o -restaurar opção seguida por =

No meu caso:

setFacl - -Restore = AclPermissions.TXT

Você também pode usar o comando setfacl para copiar as permissões de um arquivo para outro.

O cenário atual para o inventário de arquivos é o seguinte:

No exemplo seguinte, copio as permissões de arquivo1 para um arquivo chamado “inventário.”

getfacl file1 | setfacl--set-file =-inventário

O que é uma ACL (Lista de Controle de Acesso)

Um ACL é um sistema de permissões nativas do Windows para gerenciar o acesso a recursos como arquivos, diretórios, partições, etc. Este sistema é baseado em objetos aos quais as permissões são definidas para usuários, grupos e outros, inclusive individualmente, como mostrado acima.

As permissões são anexadas ao arquivo definido, diretório ou sistema de arquivos que definem acesso para o proprietário, usuários, grupos ou outros.

Diferença entre a permissão de ACL e Posix

Enquanto com permissões POSIX, os usuários podem gerenciar permissões para o proprietário, grupo e outros, a LCA permite o gerenciamento de permissões personalizadas para todos, incluindo usuários e grupos.

Além disso, o ACL implementa novos tipos de permissões, como as permissões padrão explicadas neste tutorial.

Isso traz flexibilidade que não podemos desfrutar com permissões de Posix regulares. No entanto, como você pode ver, os dois funcionam em combinação, e sua combinação traz uma forte estrutura de permissões.

O comando setfacl é usado para definir permissões de ACL como arquivos, diretórios e sistemas de arquivos.
Isso é usado para especificar arquivos, diretórios, usuários, grupos ou outros com as permissões desejadas ao precisar quebrar os limites do Posix. O proprietário e os processos do recurso com CAP_FOWNER têm o direito de modificar as permissões da ACLS.

A tabela abaixo resume algumas opções de ACL

Opções FUNÇÃO
-m Modificar ACL
-x Remova todo o ACLREMOVE ACL
-b Remova todo o ACL
-k Remova as permissões padrão
-R Aplica o ACL recursivamente
-eu Segue links simbólicos
-P Não segue links simbólicos
m: Defina máscara
-restaurar = Restaura o ACL de um arquivo de backup criado com getfacl -R
-teste Não aplica alterações, mas exibe o resultado
-n Não afete a máscara

Você pode encontrar muito mais informações sobre a ACL e o comando setfacl em https: // linux.morrer.net/man/5/ACL e https: // Linux.morrer.net/man/1/setfacl.

Conclusão

Como você pode ver, o ACL permite que os usuários personalizem as permissões sobre os limites do sistema de permissões POSIX. Isso é extremamente útil quando os recursos precisam ser compartilhados com tipos de acesso específicos. Como você pode ver, o ACL é fácil de entender e implementar e pode ser aprendido por qualquer usuário do Linux independentemente do seu nível de conhecimento. O ACL é uma exceção histórica na qual o Linux importou um recurso do Windows. Você pode obter informações adicionais no ACL na página do homem.

Obrigado por ler este tutorial explicando como usar o comando setfacl no Linux. Continue seguindo nosso blog para obter um conteúdo Linux mais profissional.