Série RHCSA: Usando ACLs (Listas de Controle de Acesso) e montando compartilhamentos Samba / NFS – Parte 7

No último artigo (Série RHCSA Parte 6), começamos a explicar como configurar e configurar o armazenamento local do sistema usando parted e ssm.

RHCSA Series:: Configure ACL’s and Mounting NFS / Samba Shares – Part 7

Também discutimos como criar e montar volumes criptografados com uma senha durante a inicialização do sistema. Além disso, avisamos para evitar realizar operações críticas de gerenciamento de armazenamento em sistemas de arquivos montados. Com isso em mente, vamos agora revisar os formatos de sistema de arquivos mais usados no Red Hat Enterprise Linux 7 e depois proceder para cobrir os tópicos de montagem, uso e desmontagem de sistemas de arquivos de rede tanto manualmente quanto automaticamente (CIFS e NFS), juntamente com a implementação de listas de controle de acesso para o seu sistema.

Pré-requisitos

Antes de prosseguir, certifique-se de ter um servidor Samba e um servidor NFS disponíveis (observe que o NFSv2 não é mais suportado no RHEL 7).

Durante este guia, usaremos uma máquina com IP 192.168.0.10 com ambos os serviços em execução como servidor, e uma caixa RHEL 7 como cliente com endereço IP 192.168.0.18. Mais tarde no artigo, diremos quais pacotes você precisa instalar no cliente.

Formatos de Sistema de Arquivos no RHEL 7

A partir do RHEL 7, o XFS foi introduzido como o sistema de arquivos padrão para todas as arquiteturas devido ao seu alto desempenho e escalabilidade. Atualmente, suporta um tamanho máximo de sistema de arquivos de 500 TB de acordo com os testes mais recentes realizados pela Red Hat e seus parceiros para hardware convencional.

Também, o XFS habilita user_xattr (atributos estendidos do usuário) e acl (listas de controle de acesso POSIX) como opções de montagem padrão, ao contrário do ext3 ou ext4 (o ext2 é considerado obsoleto a partir do RHEL 7), o que significa que você não precisa especificar essas opções explicitamente na linha de comando ou no /etc/fstab ao montar um sistema de arquivos XFS (se você quiser desabilitar tais opções neste último caso, você tem que usar explicitamente no_acl e no_user_xattr).

Lembre-se de que os atributos estendidos do usuário podem ser atribuídos a arquivos e diretórios para armazenar informações adicionais arbitrarias, como o tipo mime, conjunto de caracteres ou codificação de um arquivo, enquanto as permissões de acesso para atributos de usuário são definidas pelos bits de permissão de arquivo regulares.

Listas de Controle de Acesso

Como todo administrador de sistema, seja iniciante ou especialista, está bem familiarizado com as permissões regulares de acesso em arquivos e diretórios, que especificam certos privilégios (leitura, escrita e execução) para o proprietário, o grupo e “o mundo” (todos os outros). No entanto, sinta-se à vontade para consultar Parte 3 da série RHCSA se precisar refrescar um pouco a memória.

No entanto, como o conjunto padrão ugo/rwx não permite configurar permissões diferentes para usuários diferentes, foram introduzidos ACLs para definir direitos de acesso mais detalhados para arquivos e diretórios do que os especificados pelas permissões regulares.

Na verdade, as permissões definidas por ACL são um subconjunto das permissões especificadas pelos bits de permissão do arquivo. Vamos ver como tudo isso se aplica no mundo real.

1. Existem dois tipos de ACLs: ACLs de acesso, que podem ser aplicadas a um arquivo específico ou a um diretório, e ACLs padrão, que só podem ser aplicadas a um diretório. Se os arquivos contidos ali não tiverem uma ACL definida, eles herdam a ACL padrão de seu diretório pai.

2. Para começar, as ACLs podem ser configuradas por usuário, por grupo ou por um usuário que não está no grupo proprietário de um arquivo.

3. As ACLs são definidas (e removidas) usando o comando setfacl, com as opções -m ou -x, respectivamente.

Por exemplo, vamos criar um grupo chamado tecmint e adicionar os usuários johndoe e davenull a ele:

# groupadd tecmint
# useradd johndoe
# useradd davenull
# usermod -a -G tecmint johndoe
# usermod -a -G tecmint davenull

E vamos verificar se ambos os usuários pertencem ao grupo suplementar tecmint:

# id johndoe
# id davenull
Verify Users

Agora, vamos criar um diretório chamado playground dentro de /mnt, e um arquivo chamado testfile.txt dentro dele. Vamos definir o proprietário do grupo como tecmint e alterar suas permissões padrão ugo/rwx para 770 (permissões de leitura, escrita e execução concedidas tanto ao proprietário quanto ao grupo do arquivo):

# mkdir /mnt/playground
# touch /mnt/playground/testfile.txt
# chmod 770 /mnt/playground/testfile.txt

Em seguida, troque de usuário para johndoe e davenull, nessa ordem, e escreva no arquivo:

echo "My name is John Doe" > /mnt/playground/testfile.txt
echo "My name is Dave Null" >> /mnt/playground/testfile.txt

Até agora tudo bem. Agora, vamos fazer com que o usuário gacanepa escreva no arquivo – e a operação de escrita falhará, o que era de se esperar.

Mas e se realmente precisarmos que o usuário gacanepa (que não é membro do grupo tecmint) tenha permissões de escrita em /mnt/playground/testfile.txt? A primeira coisa que pode vir à mente é adicionar essa conta de usuário ao grupo tecmint. Mas isso dará a ele permissões de escrita em TODOS os arquivos em que o bit de escrita estiver definido para o grupo, e não queremos isso. Queremos apenas que ele possa escrever em /mnt/playground/testfile.txt.

# touch /mnt/playground/testfile.txt
# chown :tecmint /mnt/playground/testfile.txt
# chmod 777 /mnt/playground/testfile.txt
# su johndoe
$ echo "My name is John Doe" > /mnt/playground/testfile.txt
$ su davenull
$ echo "My name is Dave Null" >> /mnt/playground/testfile.txt
$ su gacanepa
$ echo "My name is Gabriel Canepa" >> /mnt/playground/testfile.txt
Manage User Permissions

Vamos dar ao usuário gacanepa acesso de leitura e escrita ao arquivo /mnt/playground/testfile.txt.

Execute como root,

# setfacl -R -m u:gacanepa:rwx /mnt/playground

e você terá adicionado com sucesso um ACL que permite que gacanepa escreva no arquivo de teste. Em seguida, mude para o usuário gacanepa e tente escrever no arquivo novamente:

$ echo "My name is Gabriel Canepa" >> /mnt/playground/testfile.txt

Para visualizar os ACLs de um arquivo ou diretório específico, use getfacl:

# getfacl /mnt/playground/testfile.txt
Check ACLs of Files

Para definir um ACL padrão para um diretório (cujo conteúdo herdará a menos que seja sobrescrito de outra forma), adicione d: antes da regra e especifique um diretório em vez de um nome de arquivo:

# setfacl -m d:o:r /mnt/playground

O ACL acima permitirá que usuários que não estão no grupo proprietário tenham acesso de leitura aos futuros conteúdos do diretório /mnt/playground. Observe a diferença na saída de getfacl /mnt/playground antes e depois da alteração:

Set Default ACL in Linux

O Capítulo 20 no Guia de Administração de Armazenamento oficial do RHEL 7 fornece mais exemplos de ACL, e eu recomendo que você dê uma olhada e o tenha como referência.

Source:
https://www.tecmint.com/rhcsa-exam-configure-acls-and-mount-nfs-samba-shares/