Назад | Перейти на главную страницу

Попытка понять поведение символической ссылки с помощью vsftpd

Недавно я переместил свой веб-сайт на CentOS 6 VPS (с CentOS 5 VPS с поддержкой HyperVM). Я установил vsftpd для работы с FTP. Я создал локального пользователя для всех, кому нужно использовать FTP. Для моего пользователя Джо он входит в систему с помощью FileZilla и приземляется в /home/joe. Джо может использовать эту папку для личного хранилища, но я поместил символическую ссылку, чтобы он мог получить доступ к общему хранилищу по адресу /var/www/html/storage.

Итак, в его каталоге я сделал как root: ln -s /var/www/html/storage/ storage

Почему-то финал / необходимо, иначе storage появится как файл в FileZilla, а не как ярлык для каталога.

Во всяком случае, пока в /home/joe, когда Джо переходит к storage его путь внезапно становится /var/www/html/storage вместо того /home/joe/storage. Это затрудняет возврат к родительской папке в его домашний каталог.

Есть способ исправить это?

chroot отключен на моем сервере, и это нормально. Я доверяю своим пользователям, но им просто неудобно бросаться по файловой системе через символические ссылки. Если я включу chroot тогда они не смогут добраться до /var/www вообще.

Странно то, что это работало на моем предыдущем VPS с HyperVM. Но тот использовал PureFTP вместо vsftp. И я думаю, что он создал виртуальных пользователей вместо реальных локальных пользователей на машине. Нужны ли виртуальные пользователи для создания символических ссылок так, как я хочу?

Другое решение, которое я исследовал, было использование mount --bind, но я не уверен, что это лучшее решение. Будет ли разрушаться моя файловая система из-за множества точек монтирования? Это также просто кажется неправильным, когда ln -s должно работать. Если я подключусь по SSH к моему серверу как Джо, я могу перейти на /home/joe/storage в оболочке bash. Так почему я не могу сделать это через FTP?

В качестве примечания, имеет ли это какое-то отношение к LIST против MLSD в FTP-клиентах? У меня есть пользователь Mac, который вообще не может видеть символические ссылки как символические ссылки, даже если я поставил конечный / в ссылке.

Я бы сделал опцию mount --bind .. так как это, по крайней мере, сохранит путь в filezilla.

Также сделайте это, если вы хотите включить chroot в vsftp, чтобы пользователь видел / home / user, поскольку / это добавило бы больше безопасности, но mount --bind позволит пользователю все еще добраться до этого каталога, в то время как символическая ссылка не