anonymous
написал 18 февраля 2005 года в 16:33 (1600 просмотров)
Ведет себя
неопределенно; открыл 1814 темы в форуме, оставил 5575 комментариев на сайте.
Pureftpd собран с опцией --with-diraliases. Создал файл /etc/pureftpd-dir-aliases, прописал в нем нужные алиасы и перазапустил pureftpd. Приконнектился к серверу. Ввожу «site alias», получаю список доступных алиасов (все прописанные мной в /etc/pureftpd-dir-aliases), однако самих алиасов в корневом каталоге нет и в ответ на команду «cd somealias» получаю ответ «550 Can’t change directory to somealias: No such file or directory»
Буду очень благодарен, если кто-нибудь подскажет, в чем проблема.
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
а с правами на директории, к которым у тебя выставлены алиасы, всё нормально?
Вроде бы да, везде 755
а покажи, как у тебя выглядит /etc/pureftpd-dir-aliases
# Начало файла /etc/pureftpd-dir-aliases
downloads
/home/negus/downloads
distfiles
/usr/portage/distfiles
# Конец файла
Алиасы заданы просто для проверки работы сервера.
Да кстати, проблем с чтением этого файла pureftpd, судя по логам, не испытывает. Для проверки я задавал некорректные строки, вот тогда в логах появлялась запись, что файл поврежден. А так все нормально, к тому же сервер выдает эти алиасы как доступные в ответ на команду «site alias».
а ты, случаем, не на 'downloads' пробовал зайти? На неё не пустит с ФТПшника, т.к. она находится в домашней директории пользователя, в которую ходить могут только сам пользователь и рут.
Почему не пустит, ведь права на /home/negus/downloads выставлены как 755, т.е. каждый может просматривать содержимое каталога. К тому ж я делал для проверки ссылку на /home/negus/downloads, расположенную в /home/ftp, и по ней спокойно заходил в нужный каталог (естественно через фтп). А вот алиасы не работают ;(
На сколько я понимаю, dir. aliases должно работать следующим образом:
1. есть фтп-сервер, в домашнем каталоге которого (/home/ftp) расположены следующие подкаталоги:
/
|-incoming/
|-video/
|-music/
2. задаю алиас в /etc/pureftpd-dir-aliases, например,
downloads
/home/negus/downloads
3. коннекчусь к серверу и вижу в корне фтп новую директорию downloads
/
|-downloads/ <- вот алиас на /home/negus/downloads
|-incoming/
|-video/
|-music/
4. когда я захожу в downloads, то фтп-север редиректит меня в /home/negus/downloads
Однако, когда я выполняю 3-й шаг, то каталог downloads в списке директорий отсутствует, т.е. корень фтп выглядит как в шаге 1. Выполняю команду «site alias». Сервер выводит перечень доступных алиасов, в котором, как и положено, присутствует «downloads /home/negus/downloads». Выполняю «cd downloads», в ответ получаю ругательство, что нет такой директории (это естественно ;), ведь в списке ее нет).
а у тебя пользователи, случайно, в chroot окружение своих домашних директорий не загнаны?
Есть такое дело, сервер запущен с параметром «-A». Я думал об этом, вот только не знаю, является ли это причиной, ведь по симлинку переход получается за пределы корневой директории сервера.
И еще, вспомнил, я делал алиас на вложенный каталог внутри директории фтп-сервера (somealias /home/ftp/path/to/somedirectory), но это тоже не работало.
Нуу, а что есть «корневая директория сервера». Таковой директорией является домашний каталог залогиневшегося пользователя (для пользователя negus: /home/negus). Если в настройках ФТПшника этот пользователь находится в chroot’е, то он за пределы своей домашней директории вылезти не может (даже по символической ссылке). Так что, кто и куда у тебя там вылазил, остаётся только догадываться.
Если ты про это: «К тому ж я делал для проверки ссылку на /home/negus/downloads, расположенную в /home/ftp, и по ней спокойно заходил в нужный каталог (естественно через фтп)», то тут тоже не всё ясно. Ссылка находилась в /home/ftp и ссылалсь на /home/negus/downloads, так? Тогда остаётся вопрос: если пользователь в чруте, то как он оказался в каталоге /home/ftp (который далеко не его домашний), чтобы перейти по символической ссылке? Значит, можно сделать вывод, что он не был в чруте.
Прошу прощения за недостаточно ясное изложение ситуации.
На сервер я логинюсь как анонимный пользователь, поэтому и попадаю в каталог сервера (/home/ftp).
В общем с возникшей проблемой я разобрался (спасибо fly4life за помощь), поэтому считаю своим долгом закрыть эту тему.
Камнем преткновения, действительно, оказалось использование chroot окружения. Прописывать алиасы необходимо было, отталкиваясь от каталога фтп-сервера как от корневого. Поясню на примере. Домашний каталого фтп-сервера /home/ftp, в нем имеется каталог video/clips. Следующая запись будет неверной:
clips
/home/ftp/video/clips
т.к. путь для алиаса выходить за chroot окружение. Зато следующая запись будет правильной:
clips
/video/clips
Вот, соственно говоря, и все. Единственное, что хотелось бы добавить, это то, что использование алиасов оказалось не совсем удобным. Во-первых, пользователь может увидеть доступные алиасы только по команде «script alias» (а об ее существовании не многие знают), а во-вторых, использование алиасов оказывается ограничено каталогом ftp-сервера. Таким образом, более удобным оказалось использование простых ссылок.
тогда уж лучше бы тебе mount --bind … использовать.
более приятная штука, особенно, когда нужное находится за пределами доступности корня ftp.
плюс к тому, можно, таким образом, ужесточать доступ до файлов: к примеру, /mnt/video имеет права a+rwx, в то время как для пользователей ftp можно, скажем, только читать. это, в общем-то, логично, поэтому mount — bind -o ro … даст нужный эффект