Eu não acho que a resposta seja encontrada no Apache, mas sim no próprio CGI. O Apache seguirá os links simbólicos, desde que o dono seja o mesmo, que disse que eu olharia para o seu script CGI que você não forneceu.
Meu palpite é que você está usando um caminho relativo ao fazer referência ao diretório de dados que seu script modifica. Se você estiver usando o script com links simbólicos, esta não é uma situação ideal e não aconselhada, já que o caminho relativo será sempre o mesmo que será feito a partir do arquivo em si e não do local do link simbólico.
O que eu normalmente faço quando estou tentando fazer algo assim é usar a variável de ambiente SCRIPT_FILENAME
CGI que o Apache transmite. Isso deve ter o caminho que foi chamado, que será o local do symlink. Este caminho será um caminho absoluto de /. Isso terá o nome do script CGI para que você possa extrair isso e, em seguida, anexar ../data
ou obter o nome do diretório base das informações do caminho para determinar o diretório de dados apropriado.