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