Недавно я переместил свой веб-сайт на 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 позволит пользователю все еще добраться до этого каталога, в то время как символическая ссылка не