Tutoriel Linux

Criar uma pasta no Linux com os direitos corretos

Débutant4 min de lecture

Um diretório criado no local errado ou com permissões muito abertas acaba frequentemente 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 usado por um serviço, identifique primeiro a conta que deve escrever nele. Um chmod 777 às vezes esconde um verdadeiro problema de proprietário e permite que todas as contas locais modifiquem o conteúdo.

Crie o diretório no local correto

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

mkdir salvamentos

Com um caminho absoluto, você sabe precisamente onde o diretório será criado. Adicione -p se os diretórios pais podem 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 se o último diretório já estiver presente. Ela não transforma um caminho errado em um caminho correto: verifique-o com pwd antes de executar o comando.

Para preparar um espaço que deve pertencer à sua conta, fique 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 ao uso

Um diretório requer a permissão x para ser percorrido. 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 permite o 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 herdam então o grupo equipe-web. Essa 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 modificável por todos, e o umask pode ainda reduzir esse modo. Não o use para corrigir um Permissão negada. Em vez disso, examine 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 executado sob www-data, postgres ou uma conta dedicada pode não ver as mesmas permissões que sua sessão. Consulte seu usuário antes de alterar qualquer coisa. Para systemd, este comando fornece as contas configuradas pela unidade:

systemctl show meu-servico 
  -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-servico
sudo -u www-data touch /var/lib/meu-servico/teste-escrita
ls -l /var/lib/meu-servico/teste-escrita
sudo rm /var/lib/meu-servico/teste-escrita

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

  • Use mkdir -p para um caminho cujos 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 identificar a conta bloqueada.

O guia sobre setfacl em 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 a chmod recursivo: mudar todos os arquivos e diretórios com o mesmo modo facilmente quebra os direitos 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 um rack de servidores 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