Tutoriel Linux

Criar uma pasta no Linux com as permissões corretas

Débutant4 min de lecture

Um diretório criado no lugar errado ou com permissões excessivamente abertas geralmente acaba causando problemas mais tarde. O comando mkdir é suficiente para começar, mas não substitui o controle do proprietário, do grupo e das permissões.

Para um diretório pessoal, crie-o na sua pasta de usuário. Para um diretório compartilhado ou utilizado por um serviço, primeiro identifique a conta que deve escrever nele. Um chmod 777 ocultará às vezes um verdadeiro problema de proprietário e permitirá que todas as contas locais modifiquem o conteúdo.

Criar o diretório no local correto

A partir do diretório atual, o seguinte comando cria um único diretório:

mkdir backups

Com um caminho absoluto, você sabe precisamente onde o diretório será criado. Adicione -p se os diretórios pai puderem estar ausentes:

mkdir -p ~/projetos/site-teste/logs

Sem -p, mkdir para se ~/projetos/site-teste não existir. A opção também evita um erro quando o último diretório já está presente. Ela não transforma um caminho errado em um caminho correto: verifique com pwd antes de executar o comando.

Para preparar um espaço que deve pertencer à sua conta, permaneça no seu diretório pessoal. Você evitará sudo, portanto, um diretório criado pelo root que seu usuário não poderá mais preencher:

mkdir -p ~/arquivos/2026
stat -c '%A %U:%G %n' ~/arquivos ~/arquivos/2026

Escolha permissões adequadas para o uso

Um diretório requer a permissão x para ser atravessado. Em um diretório, r permite listar os nomes e w permite adicionar, renomear ou excluir entradas. As permissões realmente aplicadas também dependem do seu umask.

Para um diretório privado, crie-o com um modo explícito:

mkdir -m 700 ~/arquivos-privados
stat -c '%A %a %U:%G %n' ~/arquivos-privados

O modo 700 concede acesso ao proprietário e fecha o diretório para outros usuários. Para um diretório onde um grupo de trabalho deve ler e escrever, escolha um grupo conhecido e o modo 2770:

sudo install -d -o alice -g equipe-web -m 2770 /srv/equipe-web
stat -c '%A %a %U:%G %n' /srv/equipe-web

O 2 no início ativa o bit setgid do diretório. Os novos arquivos e subdiretórios herdarão então o grupo equipe-web. Esta solução evita abrir a escrita para todas as contas do servidor. Verifique se os membros esperados estão realmente nesse grupo com id nome_usuario.

mkdir -m 777 cria um diretório editável por todos, e o umask pode ainda reduzir esse modo. Não o use para corrigir um Permission denied. Em vez disso, leia o caminho completo, seu proprietário e as permissões de cada diretório pai:

namei -l /srv/equipe-web
ls -ld /srv /srv/equipe-web
id

Verifique antes de confiar o diretório a um serviço

Um serviço executando sob www-data, postgres ou uma conta dedicada pode não ver necessariamente as mesmas permissões que sua sessão. Consulte seu usuário antes de mudar qualquer coisa. Para systemd, este comando fornece as contas configuradas pela unidade:

systemctl show meu-serviço 
  -p User -p Group -p DynamicUser

Em seguida, crie o diretório com o proprietário esperado e teste um arquivo a partir dessa conta. Em uma máquina de teste:

sudo install -d -o www-data -g www-data -m 750 /var/lib/meu-serviço
sudo -u www-data touch /var/lib/meu-serviço/teste-escrita
ls -l /var/lib/meu-serviço/teste-escrita
sudo rm /var/lib/meu-serviço/teste-escrita

Essa verificação informa se a conta do serviço pode realmente escrever. Se falhar, não adicione permissões aleatoriamente. Primeiro, verifique o proprietário, o grupo, os ACLs eventuais com getfacl e as permissões dos diretórios pais.

  • Use mkdir -p para um caminho onde os pais podem estar ausentes.
  • Use stat ou ls -ld logo após a criação.
  • Para um diretório compartilhado, defina proprietário, grupo e modo antes de iniciar o serviço.
  • Reserve chmod para uma correção direcionada, após ter identificado a conta bloqueada.

O guia sobre setfacl no Linux ajuda quando um único usuário precisa de acesso adicional. Se você precisar modificar permissões em uma árvore existente, use em vez disso o procedimento dedicado ao chmod recursivo: mudar todos os arquivos e diretórios com o mesmo modo quebra facilmente as permissões de execução dos diretórios.

A página de manual mkdir(1) detalha as opções, e mkdir(2) explica o efeito do umask e a herança do grupo. Mantenha esses dois pontos em mente antes de criar um diretório usado por um serviço.

Administrador Linux organizando um diretório azul em uma baia de servidor com um cadeado aberto
O proprietário, o grupo e as permissões do diretório devem corresponder ao seu uso.
sudo apt update && sudo apt upgrade