Pesquisa de site

Atribuir acesso de leitura/gravação a um usuário em um diretório específico no Linux


Em um artigo anterior, mostramos como criar um diretório compartilhado no Linux. Aqui, descreveremos como conceder acesso de leitura/gravação a um usuário em um diretório específico no Linux.

Existem dois métodos possíveis para fazer isso: o primeiro é usar ACLs (listas de controle de acesso) e o segundo é criar grupos de usuários para gerenciar permissões de arquivos, conforme explicado abaixo.

Para os fins deste tutorial, usaremos a seguinte configuração.

Operating system: CentOS 7
Test directory: /shares/project1/reports 
Test user: tecmint
Filesystem type: Ext4

Certifique-se de que todos os comandos sejam executados como usuário root ou use o comando sudo com privilégios equivalentes.

Vamos começar criando o diretório chamado reports usando o comando mkdir:

mkdir -p /shares/project1/reports   				

Usando ACL para conceder acesso de leitura/gravação ao usuário no diretório

Importante: Para usar este método, certifique-se de que seu tipo de sistema de arquivos Linux (como Ext3 e Ext4, NTFS, BTRFS) suporta ACLs.

1. Primeiro, verifique o tipo de sistema de arquivos atual em seu sistema e também se o kernel suporta ACL da seguinte forma:

df -T | awk '{print $1,$2,$NF}' | grep "^/dev"
grep -i acl /boot/config*

Na captura de tela abaixo, o tipo de sistema de arquivos é Ext4 e o kernel suporta ACLs POSIX conforme indicado pela opção CONFIG_EXT4_FS_POSIX_ACL=y.

2. Em seguida, verifique se o sistema de arquivos (partição) está montado com a opção ACL ou não:

tune2fs -l /dev/sda1 | grep acl

A partir da saída acima, podemos ver que a opção de montagem padrão já tem suporte para ACL. Se não estiver habilitado, você pode habilitá-lo para a partição específica (/dev/sda3 para este caso):

mount -o remount,acl /
tune2fs -o acl /dev/sda3

3. Agora é hora de atribuir acesso de leitura/gravação a um usuário tecmint para um diretório específico chamado reports executando os seguintes comandos.

getfacl /shares/project1/reports       		  # Check the default ACL settings for the directory 
setfacl -m user:tecmint:rw /shares/project1/reports     # Give rw access to user tecmint 
getfacl /shares/project1/reports    			  # Check new ACL settings for the directory

Na captura de tela acima, o usuário tecmint agora tem permissões de leitura/gravação (rw) no diretório /shares/project1/reports conforme visto na saída do segundo comando getfacl.

Para obter mais informações sobre listas ACL, verifique nossos guias a seguir.

  1. Como usar ACLs (listas de controle de acesso) para configurar cotas de disco para usuários/grupos
  2. Como usar ACLs (listas de controle de acesso) para montar compartilhamentos de rede

Agora vamos ver o segundo método de atribuir acesso de leitura/gravação a um diretório.

Usando grupos para conceder acesso de leitura/gravação ao usuário no diretório

1. Se o usuário já possui um grupo de usuários padrão (normalmente com o mesmo nome do nome de usuário), simplesmente altere o proprietário do grupo do diretório.

chgrp tecmint /shares/project1/reports

Alternativamente, crie um novo grupo para vários usuários (que receberão permissões de leitura/gravação em um diretório específico), como segue. No entanto, isso criará um diretório compartilhado:

groupadd projects

2. Em seguida, adicione o usuário tecmint ao grupo projects da seguinte forma:

usermod -aG projects tecmint	    # add user to projects
groups tecmint	            # check users groups

3. Altere o proprietário do grupo do diretório para projetos:

chgrp	projects /shares/project1/reports

4. Agora defina o acesso de leitura/gravação para os membros do grupo:

chmod -R 0760 /shares/projects/reports
ls  -l /shares/projects/	    #check new permissions

É isso! Neste tutorial, mostramos como conceder acesso de leitura/gravação a um usuário em um diretório específico no Linux. Se houver algum problema, pergunte por meio da seção de comentários abaixo.