Permission denied não significa automaticamente que seja necessário dar acesso a todos. Verifique primeiro o utilizador, o ficheiro e o caminho. Este guia aborda permissões Unix tradicionais em GNU/Linux; outros controlos de acesso podem atuar independentemente.
Passo a passo
- Registe o caminho completo e a operação pretendida: ler, escrever, executar ou criar um ficheiro num diretório. Substitua /path/file pelo caminho real nos exemplos.
- Consulte id para identificar o utilizador e os grupos da sessão atual. Num serviço, conta o utilizador que o executa, não a sua sessão interativa. Identifique essa conta na configuração do serviço.
- Examine
ls -ld /path/filee ls -ld /path. A saída mostra tipo, modo, proprietário e grupo. Verifique também os restantes diretórios superiores. Uma ligação simbólica não é o ficheiro de destino; examine o destino separadamente. - Determine a classe aplicável: proprietário, caso contrário grupo correspondente, caso contrário outros. Em diretórios, x permite atravessar e r listar; criar ou remover entradas normalmente exige w e x no diretório. O sticky bit e outras regras podem impor restrições adicionais.
- Se as permissões tradicionais forem adequadas, investigue ACLs, SELinux/AppArmor, montagem só de leitura ou espaço de nomes de um contentor. Um sinal mais no modo pode indicar métodos de acesso adicionais. Não desative proteções globalmente.
- Só após comprovar a permissão em falta: registe o modo anterior e altere um único ficheiro.
chmod u+r /path/fileacrescenta apenas leitura para o proprietário. Só ajuda se esse for o acesso em falta; evite alterações recursivas e 777 generalizado.
Verificar o resultado
Repita a operação original com a mesma conta afetada e consulte novamente o modo. Um teste bem-sucedido como root não comprova acesso do utilizador do serviço. Se o erro persistir, investigue o próximo indício comprovado em vez de alargar permissões.
Reverter e limitações
Os comandos de diagnóstico são de leitura. Após uma alteração, restaure o estado previamente registado; considere ACLs e bits especiais separadamente. chmod 644 não é uma reposição universal, sobretudo para diretórios ou executáveis.
