Verificar permissões Linux: investigar Permission denied sem chmod 777

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

  1. 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.
  2. 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.
  3. Examine ls -ld /path/file e 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.
  4. 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.
  5. 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.
  6. Só após comprovar a permissão em falta: registe o modo anterior e altere um único ficheiro. chmod u+r /path/file acrescenta 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.

Fonte