Скорее всего, SFTP находится в chroot, так что каталог / var / www недоступен пользователю в изолированной тюрьме.
Посмотрите /etc/ssh/sshd_config
и изучите директивы sftp. Вы видите что-то вроде:
Match group sftp
ChrootDirectory /home/%u
AllowTcpForwarding no
ForceCommand internal-sftp
Справочная страница sshd_config находится здесь .
По сути, как только пользователь входит в /home/username
SFTP, этот каталог становится, /
а внешние ссылки /home/username
недоступны. На самом деле символьная ссылка ln -s /var/www /home/username/www
будет выглядеть так, как будто вы пытаетесь ее достичь /home/username/var/www
(то есть, /home/username
теперь /
любая ссылка, на которую ссылаются, /var/www
также должна быть подкаталогом /home/username
в контексте chroot).
В качестве решения вы можете отключить chroot (но это будет иметь другие последствия для безопасности, в основном, когда пользователи SFTP полностью контролируют вашу файловую систему). Вы можете выполнить циклическое монтирование / var / www в / home / username / www (что-то вроде mount --bind /var/www /home/username/www
(проверьте вашу документацию mount
), которое должно работать так, как вы ожидаете в chroot). Вы также можете удалить файл sshd_config, чтобы исключить одного конкретного пользователя из chroot (хотя, опять же, с последствиями для безопасности).
Сначала я бы попробовал крепление.