Arquivos/diretórios seguros usando ACLs (listas de controle de acesso) no Linux

Arquivos/diretórios seguros usando ACLs (listas de controle de acesso) no Linux

Como um Administrador do sistema, Nossa primeira prioridade será proteger e proteger dados do acesso não autorizado. Todos nós estamos cientes das permissões que definimos usando alguns comandos úteis do Linux, como chmod, chown, chgrp… Etc. No entanto, esses conjuntos de permissão padrão têm alguma limitação e às vezes podem não funcionar de acordo com nossas necessidades. Por exemplo, não podemos configurar diferentes conjuntos de permissão para diferentes usuários no mesmo diretório ou arquivo. Por isso, Listas de controle de acesso (ACLs) foram implementados.

Listas de controle de acesso Linux

Digamos que você tem três usuários, 'Tecmint1','Tecmint2' e 'Tecmint3'. Cada um com um grupo comum diz 'ACL '. Do utilizador 'Tecmint1'Quero isso apenas'Tecmint2'O usuário pode ler e acesso Arquivos de propriedade de 'Tecmint1'E ninguém mais deve ter acesso nisso.

ACLs (Listas de controle de acesso) nos permite fazer o mesmo truque. Esses ACLs nos permitem conceder permissões para um do utilizador, grupo e qualquer grupo de usuários que não estejam na lista de grupo de um usuário.

Observação: De acordo com a documentação do produto Redhat, ele fornece suporte ao LCA para o sistema de arquivos EXT3 e sistemas de arquivos exportados por NFS exportados.

Como verificar o suporte à LCA em sistemas Linux

Antes de avançar, você deve ter suporte para ACLs no kernel atual e nos sistemas de arquivos montados.

1. Verifique o kernel para obter suporte à LCA

Execute o seguinte comando para verificar o suporte da ACL para o sistema de arquivos e Posix_acl = y opção (se houver N em vez de Y, Então isso significa que o kernel não suporta ACL e precisa ser recompilado).

[[email protegido] ~]# grep -i ACL /BOOT /CONFIG* config_Ext4_fs_posix_acl = y Config_Reiserfs_fs_posix_acl = y CONFIG_JFS_POSIX_ACL=y CONFIG_XFS_POSIX_ACL=y CONFIG_BTRFS_FS_POSIX_ACL=y CONFIG_FS_POSIX_ACL=y CONFIG_GENERIC_ACL=y CONFIG_TMPFS_POSIX_ACL=y CONFIG_NFS_V3_ACL=y CONFIG_NFSD_V2_ACL=y CONFIG_NFSD_V3_ACL=y CONFIG_NFS_ACL_SUPPORT=m CONFIG_CIFS_ACL=y CONFIG_9P_FS_POSIX_ACL=y

2. Verifique os pacotes necessários

Antes de começar a brincar com os ACLs, verifique se você tem pacotes necessários instalados. Abaixo estão os pacotes necessários que precisam ser instalados usando yum ou apt-get.

[[Email Protected] ~]# yum install nfs4-acl-tools ACL libacl [ON Chapéu vermelho sistemas baseados]
[[Email Protected] ~] $ sudo apt-get Install NFS4-ACL-Tools ACL [ON Debian sistemas baseados]

3. Verifique o sistema de arquivos montado para suporte ACLS

Agora, verifique o sistema de arquivos montado se ele está montado com a opção ACL ou não. Podemos usar Montar'Comando para verificar o mesmo que mostrado abaixo.

[[Email Protected] ~]# Monte | Grep -i raiz /dev /mapper /fedora -root on /type ext4 (rw, relatime, dados = ordenado)

Mas no nosso caso não está mostrando ACL por padrão. Então, em seguida, temos a opção de remontar a partição montada novamente usando a opção ACL. Mas, antes de avançar, temos outra opção para garantir que a partição seja montada com a opção ACL ou não, porque para o sistema recente pode ser integrado à opção de montagem padrão.

[[Email Protected] ~]# tune2fs -l/dev/mapper/fedora -root | Opções de montagem padrão do ACL Grep: user_xattr ACL

Na saída acima, você pode ver que a opção de montagem padrão já tem suporte para ACL. Outra opção é remontar a partição como mostrado abaixo.

[[Email Protected] ~]# Mount -o Remount, ACL /

Em seguida, adicione a entrada abaixo ao arquivo '/etc/fstab' para torná -lo permanente.

/dev/mapeador/fedora-root/ext4 padrões, ACL 1 1

Novamente, remova a partição.

[[Email protegido] ~]# Mount -o Remount /

4. Para servidor NFS

No servidor NFS, se o sistema de arquivos exportado pelo servidor NSF suportar ACL e ACLs puder ser lido pelos clientes da NFS, o ACLS é utilizado pelo sistema cliente.

Para desativar as ACLs no compartilhamento do NFS, você deve adicionar a opção “NO_ACL" em '/etc/exportfs'arquivo no servidor NFS. Para desativá -lo no lado do cliente NSF novamente, use “NO_ACL”Opção durante o tempo de montagem.

Como implementar suporte ACL em sistemas Linux

Existem dois tipos de ACLs:

  1. Acesse ACLs: ACLs de acesso são usados ​​para conceder permissões em qualquer arquivo ou diretório.
  2. ACLs padrão: ACLs padrão são usados ​​para conceder/definir a lista de controle de acesso em um diretório específico apenas.

Diferença entre o acesso ACL e ACL padrão:

  1. ACL padrão pode ser usada apenas no nível do diretório.
  2. Qualquer diretório ou arquivo criado nesse diretório herdará as ACLs de seu diretório pai. Por outro lado, um arquivo herda o ACLS padrão como ACLS de acesso.
  3. Nós utilizamos “-d”Para definir ACLs padrão e ACLs padrão são opcionais.
Antes de definir ACLs padrão

Para determinar as ACLs padrão para um arquivo ou diretório específico, use o 'getfaclComando. No exemplo abaixo, o getfacl é usado para obter as ACLs padrão para uma pasta 'Música'.

[[Email Protected] ~] # getfacl music/ # Arquivo: Música/ # Proprietário: ROOT # Grupo: ROOT Usuário :: RWX GRUPO :: R-X OUTRO :: R-X Padrão: User :: RWX Padrão: Grupo :: R-X Padrão: Outros :: rw-
Depois de definir ACLs padrão

Para definir as ACLs padrão para um arquivo ou diretório específico, use o 'setfaclComando. No exemplo abaixo, o setfacl O comando definirá um novo ACLS (ler e executar) em uma pasta 'Música'.

[[Email Protected] ~] # setfacl -m d: o: rx music/ [[email protegido] ~] # getfacl music/ # arquivo: music/ # proprietário: root # Group: root user :: rwx group :: r -x outro :: r-x Padrão: Usuário :: RWX Padrão: Grupo :: R-X Padrão: Outros :: R-X

Como definir novos ACLs

Use o 'setfacl ' comando para definir ou modificar em qualquer arquivo ou diretório. Por exemplo, para dar ler e escrever permissões para usuário 'Tecmint1'.

# setfacl -m u: tecmint1: rw /tecmint1 /exemplo

Como ver ACLs

Use o 'getfaclComando para visualizar a ACL em qualquer arquivo ou diretório. Por exemplo, para ver a ACL em '/tecmint1/exemplo'Use o comando abaixo.

# getfacl/tecmint1/exemplo # arquivo: tecmint1/exemplo/ # proprietário: tecmint1 # grupo: tecmint1 user :: rwx user: tecmint1: rwx user: tecmint2: r-- grupo :: rwx máscara :: rwx Outros ::---

Como remover ACLs

Para remover o ACL de qualquer arquivo/diretório, usamos x e b opções como mostrado abaixo.

# Setfacl -x Arquivo ACL/Diretório # Remover apenas ACL especificado do arquivo/diretório. # setfacl -b arquivo/diretório #Removing TODO ACL do arquivo/direcoty

Vamos implementar os ACLs no seguinte cenário.

Dois usuários (Tecmint1 e Tecmint2), ambos com grupo secundário comum chamado 'ACL'. Vamos criar um diretório de propriedade de 'Tecmint1'e fornecerá o ler e executar permissão nesse diretório para usuário 'Tecmint2'.

Passo 1: Crie dois usuários e remova a senha de ambos

[[Email Protected] ~]# para o usuário no tecmint1 tecmint2> do> userAdd $ user> passwd -d $ user> pronto para remover senha para usuário tecmint1. Passwd: sucesso removendo a senha do usuário Tecmint2. Passwd: Sucesso

Passo 2: Crie um grupo e usuários para o grupo secundário.

[[Email Protected] ~]# Groupadd ACL [[Email Protected] ~]# UserMod -g ACL Tecmint1 [[Email Protected] ~]# UserMod -g ACL Tecmint2

Etapa 3: Crie um diretório /Tecmint e mudar de propriedade para Tecmint1.

[[Email Protected] ~]# mkdir /tecmint1 [[email protegido] ~]# chown tecmint1 /tecmint1 /
[[Email protegido] ~]# ls -ld /tecmint1 /drwxr-xr-x 2 tecmint1 raiz 4096 17 de abril 14:46 /tecmint1 /
[[Email Protected] ~]# getfacl /tecmint1 getfacl: removendo liderança '/' de nomes de caminhos absolutos # Arquivo: Tecmint1 # Proprietário: Tecmint1 # Grupo: ROOT User :: RWX Group :: R-X OUTRO :: R-X

Passo 4: Login com Tecmint1 e criar um diretório em /Tecmint pasta.

[[Email Protected] ~] $ su - Tecmint1 Último login: qui 17 de abril 14:49:16 IST 2014 no PTS/4
[[Email Protected] ~] $ CD / Tecmint1 / [[Email Protected] Tecmint1] $ Mkdir Exemplo
[[Email Protected] Tecmint1] $ LL Total 4 DRWXRWXR-X 2 Tecmint1 Tecmint1 4096 17 de abril 14:50 Exemplo
[[Email Protected] Tecmint1] $ whoami Tecmint1

Etapa 5: Agora defina o ACL usando 'setfacl', para que 'Tecmint1'terá tudo rwx permissões 'Tecmint2'terá apenas ler permissão em 'exemplo'Pasta e outras não terão permissões.

$ setfacl -m U: Tecmint1: RWX Exemplo/ $ setfacl -m U: Tecmint2: r-- Exemplo/ $ setfacl -m Outros: --- Exemplo/ $ getfacl Exemplo/ # Arquivo: Exemplo # Proprietário: Tecmint1 # Grupo: Tecmint1 User1 :: RWX Usuário: Tecmint1: RWX Usuário: Tecmint2: R-- Grupo :: R-X Mask :: RWX OUTRO ::---

Etapa 6: Agora faça o login com outro usuário i.e. 'Tecmint2'Em outro terminal e diretório de alterações para'/Tecmint1'. Agora tente ver o conteúdo usando 'ls'Comando e tente alterar o diretório e ver a diferença como abaixo.

[[Email Protected] ~] $ su - Tecmint2 Último login: qui 17 de abril 15:03:31 IST 2014 no PTS/5
[[Email Protected] ~] $ CD/ Tecmint1/ [[Email Protected] Tecmint1] $ ls -lr Exemplo/ Exemplo/: Total 0
[[Email protegido] Tecmint1] $ CD Exemplo/ -BASH: CD: Exemplo/: Permissão negada 
[[Email Protected] Tecmint1] $ getfacl Exemplo/ # Arquivo: Exemplo # Proprietário: Tecmint1 # Grupo: Tecmint1 User :: RWX Usuário: Tecmint1: RWX Usuário: Tecmint2: R-- Grupo :: RWX Mask :: RWX Outros ::---

Etapa 7: Agora dê 'executar' permissão para 'Tecmint2' sobre 'exemplo'pasta e depois use 'cd'Comando para ver o efeito. Agora 'Tecmint2'Tenha as permissões para visualizar e alterar o diretório, mas não tem permissões para escrever nada.

[[Email Protected] Tecmint1] $ setfacl -m U: Tecmint2: R -X Exemplo/ [[Email Protected] Tecmint1] $ getfacl Exemplo/ # Arquivo: Exemplo # Proprietário: Tecmint1 # Grupo: Tecmint1 User :: RWX User: Tecmint1: RWX Usuário : Tecmint2: R-X Group :: RWX Mask :: RWX OUTRO ::---
[[Email Protected] ~] $ su - Tecmint2 Último login: qui 17 de abril 15:09:49 IST 2014 no PTS/5
[[Email protegido] ~] $ CD/ Tecmint1/ [[Email Protectt] Tecmint1] $ CD Exemplo/ [[Email Protect]] $ getfacl .
[[Email Protected] Exemplo] $ MKDIR Teste MKDIR: não é possível criar 'Teste' do diretório: permissão negada 
[[Email Protected] Exemplo] $ Touch Test Touch: Não é possível tocar no 'teste': permissão negada 

Observação: Depois de implementar a ACL, você verá um extra '+'sinal para a saída' ls -l 'como abaixo.

[[Email Protected] Tecmint1]# LL Total 4 drwxrwx ---+ 2 Tecmint1 Tecmint1 4096 17 de abril 17:01 Exemplo

Links de referência

Documentação da ACL