Недавно я столкнулся с некоторыми проблемами при попытке настроить FTP-сервер определенным образом. У меня есть клиент, у которого МНОГО данных помещено в одну папку. Затем у клиента есть различные каталоги, по которым организованы данные. В конце («фильтра каталогов») у них есть символическая ссылка, которая указывает на файл в большой папке данных. Например
/lab/directory1/type2/data/owner/lab/bla/bla/file---->/lab/data/filexyz
Чтобы реплицировать и настроить FTP-сервер, я просто создал каталог с именем /lab/data/
и скопировал туда все данные. Затем я просто скопировал структуру папок с символическими ссылками.
Затем я настраиваю vsftpd. Создал локального пользователя с ложной корзиной и установил для этого домашнего каталога пользователя /lab
Проблема, с которой я сталкиваюсь, заключается в том, что когда у меня chroot_local_user=YES
включен в файле конфигурации, пользователь не может получить файл, который дает сервер 550 Failed to open file.
Почему это так. Символьная ссылка указывает на файл в их домашнем каталоге. Однако когда у меня chroot_local_use=NO
пользователь может скачивать файлы без проблем. Есть ли способ разрешить пользователю получать файлы через символические ссылки, которые находятся в их домашнем каталоге, пока он находится в тюрьме chroot?
Я ломал голову над этим. Спасибо!
Символьная ссылка - это указатель на «правильный» файл. Но если исходный файл находится за пределами тюрьмы, вы не сможете получить к нему доступ. Это цель тюрьмы. В противном случае обычный пользователь мог бы создать символическую ссылку в тюрьме на /etc/passwd
и просто прочтите это. Какая угроза безопасности!
Итак, тюрьма - это тюрьма. Вероятно, жесткая ссылка сработает, так как это «копия без дублирования используемого размера». А для FTP-сервера это как обычный файл (со всеми проблемами).
Вы можете использовать опцию привязки для монтирования, чтобы перемонтировать другую папку, чтобы FTP-сервер видел файлы как находящиеся в корне веб-сайта.
... Вы можете смонтировать / home / shared / files / в / home / website / files / вот так.
Создайте точку монтирования (каталог) в / home / website
mkdir / главная / сайт / файлы /
Смонтируйте другой каталог под этой точкой монтирования
монтировать --bind / home / shared / files / home / website / files /
Теперь окажется, что эти файлы на самом деле находятся в / home / website /, поэтому они будут доступны, даже если вы ограничите пользователя корневым каталогом этого веб-сайта ....
Взято из ЗДЕСЬ:
Установить символическую ссылку, по которой пользователи могут получить к ней доступ через FTP
Вы должны использовать что-то вроде mount --bind
У меня была эта проблема, потому что я использовал абсолютные пути к цели ссылки.
моя команда была:
ln -s /var/www/vhost/myhost.com/typo3_src/typo3_src-8.7.6/ typo3_src
... typo3_src не отображается в FTP-клиенте
когда я использовал относительные пути, это сработало:
ln -s typo3_src/typo3_src-8.7.6/ typo3_src