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 -ppara um caminho onde os pais podem estar ausentes. - Use
statouls -ldlogo após a criação. - Para um diretório compartilhado, defina proprietário, grupo e modo antes de iniciar o serviço.
- Reserve
chmodpara 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.
