Много литературы есть по этому поводу, и повторяться не хотелось бы, но по просьбам трудящихся постараюсь вкратце без особо глубоких умных объяснений написать как настроить этот простой и очень хороший сервис в linux.
В отличие от samba, которой нужна очень тонкая настройка, сервис vsftpd работает почти с нуля. То есть, вы можете, прям после установки его с пакета, запустить с дефолтным конфигом и он будет работать. Что мы можем сделать, то это создать каталоги для работы с ftp. Обычно это каталоги pub (public), incoming. Первый создается для чтения, второй – для записи. Поэтому создаем вышеуказанные каталоги. Создать их надо в каталоге /var/ftp/ или где-то в другом месте, но тогда нужно сделать ссылку на эти каталоги в /var/ftp/. При установке linux можно смонтировать каталог /var/ как отдельный раздел и тогда его можно полностью или частично задействовать под ftp. Итак, создаем каталог /vat/ftp/pub/.
# mkdir /var/ftp/pub
; создаем каталог pub
# chmod 2775 /var/ftp/pub
; назначаем права доступа к каталогу – каталог на чтение; чтение, запись и запуск файлов для собственника (root) и пользователей группы (alias), чтение и запуск файлов для других
# chown root.alias /var/ftp/pub
; назначаем собственника каталога (root)и группу (alias), пользователи которой будут иметь вышеуказанные права
Теперь создадим каталог /var/ftp/incoming:
# mkdir /var/ftp/incoming
; создаем каталог incoming
# chmod 3777 /var/ftp/pub
; назначаем права доступа к каталогу – каталог на чтение и запуск; запись, чтение и запуск файлов для всех
# chown root.alias /var/ftp/pub
; назначаем собственника каталога (root) и группу (alias), пользователи которой будут иметь вышеуказанные права
Теперь разберем немного дефолтный конфиг /etc/vsftpd/vsftpd.conf. Первое, что нужно сделать – обратить внимание на то, имеют ли доступ к вышеперечисленным каталогам анонимные пользователи. Обычно имеют. Поэтому в конфиге параметр anonymous_enable=YES — оставляем раскомментированым.
Строчка local_enable=YES означает разрешение локальным пользователям с использованием /etc/passwd для аутентификации заходить на ftp. Далее строка write_enable=YES разрешает писать в каталоги (тоже надо). anon_upload_enable=YES – разрешаем загрузку аноним пользователям в разрешенные каталоги. anon_mkdir_write_enable=NO – запрещаем анонимным пользователям плодить каталоги. chown_uploads=YES и chown_username=alias – автоматически меняют права на загруженные файлы. Оставляем закомментированными.
Далее пропускаем несущественные настройки и переходим к строке chroot_list_enable=YES – «запирать» пользователей в домашнем каталоге. То есть при входе на ftp как не анонимный пользователь (вводя логин и пароль), вы попадете в свой домашний каталог и никуда из него не выберетесь, если эта сточка закомментирована или стоит chroot_list_enable=NO, то все пользователи будут попадать в корневой каталог. Строчка chroot_list_file=/etc/vsftpd/chroot_list – неотъемлемая часть предыдущей настройки – здесь в столбик прописываются пользователи, которых в случае chroot_list_enable=YES нужно «запирать» в своем каталоге.
Можно добавить список портов для пассивного режима работы, через которые будут передаваться данные. Это делается строчками pasv_min_port=30000 и pasv_max_port=30999 – выделяем 1000 портов для передачи данных. В случае использования межсетевого экрана эти строчки обязательны. Ну и еще одна важная строчка — userlist_enable=YES – при userlist_deny=YES (default) не разрешать пользователям, определенным в файле /etc/vsftpd/user_list, входить по ftp, при этом даже не спрашивать пароль. При userlist_deny=NO – только этим пользователям из файла разрешать вход по ftp. Вот такая, немного запутанная опция.
Сохраняем конфиг, перезапускаем сервис и работаем. Как я и говорил, мы не будем касаться глубоких настроек этого чудного демона – их много, они сложные и мощные, и востребованы в случае, если вы настраиваете ftp как провайдер для своих клиентов. Там и виртуальные пользователи, там и доступ по шелу, там привязка к адресу клиента и много другое. Более подробно можно изучить сервис, прочитав мануал, который есть, наверное, в каждом дистрибутиве linux.
Чуть не забыл… Если есть межсетевой экран, то нужно обязательно разрешить порт 21/tcp для коннекта и порты для передачи данных (у нас 30000-30999). Для iptables это выглядит примерно так:
/sbin/iptables -A INPUT -p tcp —dport 21 -d X.X.X.X -j ACCEPT
/sbin/iptables -A INPUT -p tcp —dport 30000:30999 -d X.X.X.X -j ACCEPT
где Х.Х.Х.Х — ip адрес вашего ftp-сервера.
Успехов!
Сергей
Ноябрь 22, 2014 at 09:05
Не подскажете в чем проблемма?
Установил vsftpd, в конфиге прописал
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
Добавил пользователя, назвачил домашнюю папку.
Конектится все ОК, но пользователь может бродить по всей системе. Как ему ограничить выход из своей папки?