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 do sistema local 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, alertamos para evitar realizar operações críticas de gerenciamento de armazenamento em sistemas de arquivos montados. Com isso em mente, agora vamos revisar os formatos de sistema de arquivos mais utilizados no Red Hat Enterprise Linux 7 e em seguida 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).

Neste guia, usaremos uma máquina com IP 192.168.0.10 com ambos os serviços em execução como servidor, e um box 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, ele suporta um tamanho máximo de sistema de arquivos de 500 TB conforme os últimos testes realizados pela Red Hat e seus parceiros para hardware convencional.

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

Tenha em mente 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 do usuário são definidas pelos bits regulares de permissão do arquivo.

Listas de Controle de Acesso

Como todos os administradores de sistemas, seja ele iniciante ou experiente, estão bem familiarizados com as permissões de acesso regulares 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 referir-se a Parte 3 da série RHCSA se precisar atualizar sua memória um pouco.

Contudo, já que o padrão ugo/rwx não permite configurar permissões diferentes para diferentes usuários, as ACLs foram introduzidas para definir direitos de acesso mais detalhados para arquivos e diretórios do que aqueles especificados pelas permissões regulares.

Na verdade, as permissões definidas por ACL são um superconjunto das permissões especificadas pelos bit de permissão de arquivo. Vamos ver como 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 podem ser aplicadas apenas the um diretório. Se os arquivos contidos neles não tiverem uma ACL definida, eles herdam as permissões 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 de propriedade do arquivo.

3. As ACLs são definidas (e removidas) usando o comando setfacl, com as opções -m e -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. Vamos definir o grupo proprietário como tecmint e alterar as permissões padrão ugo/rwx para 770 (permissões de leitura, escrita e execução concedidas tanto ao proprietário quanto ao grupo proprietário do arquivo):

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

Em seguida, troque para o usuário 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é aqui tudo bem. Agora vamos fazer o usuário gacanepa escrever no arquivo – e a operação de escrita falhará, como era de se esperar.

Mas e se 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 à sua mente é adicionar essa conta de usuário ao grupo tecmint. Mas isso lhe dará permissão 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 conceder a gacanepa o acesso de leitura e gravação para /mnt/playground/testfile.txt.

Execute como root,

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

e você terá adicionado com sucesso uma 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 as ACLs de um arquivo ou diretório específico, use getfacl:

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

Para definir uma 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 do nome de um arquivo:

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

A ACL acima permitirá que usuários que não estão no grupo dono tenham acesso de leitura para o conteúdo futuro do diretório /mnt/playground. Note a diferença na saída de getfacl /mnt/playground antes e depois da mudança:

Set Default ACL in Linux

Capítulo 20 do guia oficial de Administração de Armazenamento RHEL 7 fornece mais exemplos de ACL e eu recomendo que você examine-o e tenha ele pronto como referência.

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