É provável que o SFTP esteja sendo chrooted, de modo que o diretório / var / www não esteja disponível para o usuário na cadeia chroot.
Procure em /etc/ssh/sshd_config e examine as diretivas do sftp. Você vê algo como:
Match group sftp
ChrootDirectory /home/%u
AllowTcpForwarding no
ForceCommand internal-sftp
A página de manual do sshd_config é aqui .
Basicamente, quando o usuário está em /home/username em SFTP, esse diretório se torna / e referências fora de /home/username não estão disponíveis. Na verdade, um link simbólico como ln -s /var/www /home/username/www parecerá que você está tentando alcançar /home/username/var/www (ou seja, /home/username agora é / , portanto, qualquer link que faça referência a /var/www também deve ser um subdiretório de /home/username em o contexto do chroot).
Como solução, você pode desativar o chroot (mas isso terá outras implicações de segurança, principalmente com usuários de SFTP controlando o sistema de arquivos). Você pode fazer uma montagem em loop de / var / www em / home / username / www (algo como mount --bind /var/www /home/username/www (confira sua documentação para mount ), que deve funcionar como esperado em chroot). Você também pode usar o arquivo sshd_config para excluir um usuário em particular do chroot (embora, novamente, com implicações de segurança).
Eu tentaria montar o bind primeiro.
