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.
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:
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.
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.