Corrigindo Permission Denied no Ubuntu - Guia de chmod, chown e sudo

Corrigindo Permission Denied no Ubuntu - Guia de chmod, chown e sudo

O que voce vai aprender

  • Como diagnosticar rapidamente erros de Permission denied no Ubuntu
  • Quando usar chmod, chown ou sudo
  • Como evitar erros comuns (como abrir permissoes demais)

Resumo Rapido

Permission denied geralmente se encaixa em uma dessas categorias:

  1. Sem permissao de execucao -> chmod +x
  2. Proprietario/grupo errado -> chown / chgrp
  3. Requer privilegios de administrador -> Execute com sudo
  4. Nao consegue entrar no diretorio (sem permissao x) -> Verifique permissoes do diretorio

Comece com ls -la (ou namei -l) para ver quem esta bloqueando o que.

Pre-requisitos

  • SO: Ubuntu
  • Shell: bash
  • Permissoes: Acesso sudo assumido (contate o administrador se indisponivel)

1. Verifique os sintomas

Conclusao: O tipo de erro — arquivo, script ou diretorio — determina qual caminho de correcao seguir.

Exemplo: Nao consegue ler um arquivo

$ cat /path/to/file
cat: ...: Permission denied

Exemplo: Nao consegue executar um script

$ ./script.sh
bash: ./script.sh: Permission denied

Exemplo: Nao consegue entrar em um diretorio

$ cd /path/to/dir
bash: cd: ...: Permission denied

2. Verifique as permissoes (ls -la)

Conclusao: Execute ls -la — os bits rwx para proprietario, grupo e outros revelam o que esta faltando.

$ ls -la /path/to/target

Lendo as permissoes

  • r: leitura
  • w: escrita
  • x: execucao (ou entrada para diretorios)

Tres grupos: proprietario | grupo | outros

Exemplos:

  • -rw-r--r--: Proprietario pode escrever, outros so podem ler
  • drwxr-x---: Proprietario tem acesso total, grupo pode ler/entrar, outros nao tem acesso

Caso A: Script nao executa (sem x)

Conclusao: Execute chmod +x quando o bit x esta ausente — ele adiciona apenas execucao, nada mais.

Verifique:

$ ls -la script.sh

Se voce ve -rw-r--r-- (sem x), adicione permissao de execucao:

$ chmod +x script.sh

Isso apenas adiciona permissao de "execucao". Nao e necessario ampliar permissoes de leitura/escrita.

Caso B: Nao consegue escrever (sem w / proprietario errado)

Conclusao: O acesso de escrita e definido pelo diretorio — use chown ou sudo conforme apropriado.

Permissoes de escrita dependem do diretorio.

Se voce deveria ser o dono do local -> Corrija o proprietario (Caso C)

Se e um diretorio do sistema (/etc, /var, /usr) -> Use sudo (Caso D)

Caso C: Proprietario/grupo errado (chown/chgrp)

Conclusao: Use chown user:group /path — sempre verifique o caminho antes de adicionar -R.

Alterar proprietario (exemplo: usuario e ubuntu):

$ sudo chown ubuntu:ubuntu /path/to/dir

Recursivo (cuidado):

$ sudo chown -R ubuntu:ubuntu /path/to/dir

Atencao: -R afeta tudo sob o caminho. Verifique duas vezes antes de executar.

Alterar apenas o grupo:

$ sudo chgrp www-data /path/to/dir

Caso D: Precisa de privilegios de administrador (sudo)

Conclusao: Use sudo para arquivos do sistema — acesso elevado temporario, proprietario inalterado.

Arquivos e servicos do sistema requerem acesso de administrador:

$ sudo vim /etc/nginx/nginx.conf
$ sudo systemctl restart nginx

Caso E: Nao consegue entrar no diretorio (sem x)

Conclusao: Diretorios precisam de x para entrar — corrija com chown, nao com chmod 777.

Permissao negada no cd geralmente significa que o diretorio nao tem permissao de execucao (entrada).

$ ls -ld /path/to/dir

Se voce deveria poder entrar, corrija o proprietario ou grupo (Caso C). Nao use chmod 777 descuidadamente.

3. Rastreie o caminho (namei)

Conclusao: Execute namei -l /path — mostra as permissoes de cada diretorio e revela o bloqueio.

Quando voce nao consegue descobrir onde esta o bloqueio em um caminho longo:

$ namei -l /path/to/target

Isso mostra as permissoes de cada diretorio no caminho, facilitando encontrar o diretorio com problema.

4. O que NAO fazer

Conclusao: Nunca use chmod 777 ou chown -R / — ambos criam brechas ou destroem o sistema.

Proximas leituras