De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

Erro 403 Forbidden no Apache - o problema ignorado dos Links Simbólicos

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 18 de abril de 2026

Você configurou seu script CGI, definiu as permissões com chmod 755, o dono do arquivo é o usuário do servidor web (como www-data), mas ao acessar a URL, o navegador retorna o temido Erro 403: Forbidden. Ao olhar os logs do Apache, você encontra algo assim:

AH00037: Symbolic link not allowed or link target not accessible

O que está acontecendo? Se o arquivo existe e as permissões estão corretas, por que o Apache se recusa a servi-lo?

O problema muitas vezes não está no arquivo de destino, mas no link simbólico em si. Existem dois fatores principais que causam esse erro:

1. Divergência de Proprietário (Owner Match)

Por padrão, muitas configurações de servidores web utilizam a diretiva SymLinksIfOwnerMatch. Por razões de segurança, o Apache só seguirá um link simbólico se o proprietário do link for o mesmo proprietário do arquivo de destino.

Se você criou o link simbólico usando sudo ou logado como root, o link pertence ao root. Se o script para o qual o link aponta pertence ao usuário do webserver, o Apache detecta essa diferença e bloqueia o acesso para evitar ataques de escalada de privilégio.

2. Permissões de Percurso

Para que o servidor chegue até o arquivo, ele precisa "atravessar" toda a árvore de diretórios. Se qualquer pasta pai (desde o /home até a pasta final) não tiver permissão de execução (+x) para o usuário do servidor web, o acesso será negado, mesmo que o arquivo final seja público.

A solução envolve garantir a consistência entre o link e o alvo.

Ajustando o dono do link:

Não basta mudar o dono do arquivo de destino. Você deve mudar o dono do link simbólico. Use a flag -h (de help ou header, mas que no chown serve para afetar o link e não o alvo):

$ sudo chown -h www-data:www-data caminho/do/seu/link.cgi

Verificando as diretivas do Apache:

No seu arquivo de configuração (VirtualHost), certifique-se de que a pasta permite seguir links:

<Directory "/caminho/da/pasta">
    Options +FollowSymLinks
    # Ou, se preferir a segurança restrita:
    # Options +SymLinksIfOwnerMatch

Sempre que recriar links simbólicos em um ambiente de produção, lembre-se: o Apache não olha apenas para o que o arquivo é, mas também para quem o criou. Manter o proprietário do link idêntico ao do arquivo de destino é uma boa prática que evita horas de depuração e mantém o seu serviço rodando de forma segura e estável.



Veja a relação completa dos artigos de Rubens Queiroz de Almeida