Установка и запуск
Для предоставления сервиса FTP в дистрибутивы ОС ОН Орёл и ОС СН Смоленск входит пакет vsftpd.
По умолчанию он не устанавливается.
Установить пакет можно с помощью графического менеджера пакетов или из командной строки командой
После установки сервис запускается автоматически, режим запуска описан ниже.
Дополнительно в дистрибутивы входит графический инструмент для администрирования сервера FTP fly-admin-ftp.
Установить его можно с помощью графического менеджера пакетов или из командной строки командой
Настройка
При установке сервиса автоматически создается конфигурационный файл /etc/vsftpd.conf,
в который записываются значения наиболее важных параметров по умолчанию.
В файле с настройками используются три различных типа параметров:
- Логические параметры - параметры, содержащие только логические значения: либо YES либо NO;
- Числовые параметры - параметры, содержащие значения в числах, т.н. время в секундах или номер порта для соединения;
- Строковые параметры - содержат строку, т.н. путь к каталогу в файловой системе на диске, например: /run/vsftpd/;
В файле с настройками присутствуют не все параметры, это означает, что для отсутствующих параметров используется значение по умолчанию, обозначаемое как "Default:" в "man vsftpd.conf".
Файл настройки, создаваемый при установке пакета, изменяет некоторые значения настроек "по умолчанию".
Полный список параметров настройки и их значения "по умолчанию" можно посмотреть с помощью команды
Выбор IP-протокола
Для выбора IP-протокола предназначены два связанных логических параметра.
Их значения по умолчанию разрешают работу по протоколам IPv4 и IPv6
listen=NO # работать только по протоколу IPv4. По умолчанию значение NO. Если установить значение YES, то параметр listen_ipv6 нужно установить в NO listen_ipv6=YES # работать по протоколам и IPv4 и IPv6. По умолчанию значение YES. Если установить значение NO, то параметр listen нужно установить в YES, чтобы сохранилась возможность работать только по протоколу IPv4
Далее в примерах используется конфигурация выбора протокола, установленная по умолчанию.
FTP для локальных пользователей и только для чтения
Сразу после установки
- Сервис "слушает" протоколы IPv4 и IPv6;
- Анонимный доступ запрещен;
- Вход локальных пользователей разрешен, но запись им запрещена;
- При входе пользователь попадает в корень файловой системы.
Настройка сервера сразу после установки:
# Выбрана работа по IPv4 и по IPv6
listen=NO
listen_ipv6=YES
# Анонимный доступ запрещён.
anonymous_enable=NO
# Вход локальных пользователей разрешен
local_enable=YES
# Для локальных пользователей запись при входе через FTP запрещена. Как разрешить запись - см. ниже.
#write_enable=YES
# Включена выдача пользователям сообщения при входе в каталог (сообщения ищутся в файле .message)
dirmessage_enable=YES
# Отображать время в локальной временной зоне. По умолчанию - в GMT
use_localtime=YES
# Включено журналирование операций записи/скачивания.
xferlog_enable=YES
# Использовать 20-й порт для исходящих соединений (см. ниже)
connect_from_port_20=YES
# Имя специального пустого каталога, недоступного пользователю ftp для записи
# Используется как безопасный chroot() когда сервису vsftpd не нужен файловый доступ.
secure_chroot_dir=/run/vsftpd/empty
# Имя сервиса для авторизации через PAM
pam_service_name=vsftpd
# Размещение сертификатов для защищенных соединений
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
# Раскомментировать, чтобы указать на использование файловой системы UTF8
# utf8_filesystem=YES
FTP для локальных пользователей: разрешение на запись
Для краткости, повторяющиеся комментарии удалены, показаны изменения по отношению к предыдущему файлу:
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
# Для локальных пользователей запись при входе через FTP разрешена
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
# Раскомментировать, чтобы указать на использование файловой системы UTF8
#utf8_filesystem=YES
# локальные пользователи при входе будут перенесены ("chroot()") в домашний каталог
chroot_local_user=yes
# При использовании совместно с включенным chroot_local_user
означает список пользователей, которые не помещаются в chroot().
# По умолчанию список содержится в файле /etc/vsftpd.chroot_list
, но можно указать любой другой путь к файлу используя chroot_list_file опцию.
chroot_list_enable=yes
chroot_list_file=/etc/vsftpd.chroot_list
FTP для анонимных пользователей: только чтение
Анонимные пользователи после входа попадают в каталог /srv/ftp
.
Каталог может быть изменен параметром anon_root
listen=NO
listen_ipv6=YES
# Анонимный доступ разрешен
anonymous_enable=YES
local_enable=YES
#write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
# Раскомментировать, чтобы указать на использование файловой системы UTF8
# utf8_filesystem=YES
Журнал событий
Журнал событий по умолчанию записывается в файл /var/log/vsftpd.log.
Имя файла журнала событий может быть изменено в файле настроек /etc/vsftp.conf:
# You may override where the log file goes if you like. The default is shown
# below.
#xferlog_file=/var/log/vsftpd.log
Сервис не ведёт запись журнала, если файл журнала не существует.
Чтобы запись журнала началась, нужно создать этот файл, и перезапустить службу:
touch /var/log/vsftpd.log
service vsftpd restart
Дополнения
Сообщения пользователю при входе в каталог
Включаются опцией dirmessage_enable=YES
.
Имя файла, в котором ищутся сообщения, по умолчанию .message
, может быть изменено параметром message_file
20-й порт и работа в пассивном режиме
При работе по протоколу FTP между клиентом и сервером устанавливается два соединения:
- управляющее (по нему идут команды)
- и соединение передачи данных (по нему передаются файлы).
Управляющее соединение одинаково для Активного и Пассивного режима.
Клиент инициирует TCP-соединение с динамического порта (1024-65535) к порту номер 21 на FTP-сервере и говорит «Привет! Я хочу подключиться к тебе. Вот мое имя и мой пароль».
Дальнейшие действия зависят от того, какой режим FTP (Активный или Пассивный) выбран.
- В активном режиме, когда клиент говорит «Привет!», он так же сообщает серверу номер порта (из динамического диапазона 1024-65535) для того, чтобы сервер мог подключиться к клиенту для установки соединения для передачи данных.
FTP-сервер подключается к заданному номеру порта клиента используя со своей стороны номер TCP-порта 20 для передачи данных. - В пассивном режиме, после того как клиент сказал «Привет!», сервер сообщает клиенту номер TCP-порта (из динамического диапазона 1024-65535), к которому можно подключиться для установки соединения передачи данных.
Главное отличие между активным режимом FTP и пассивным режимом FTP – это сторона, которая открывает соединение для передачи данных.
В активном режиме, клиент должен принять соединение от FTP-сервера. В пассивном режиме, клиент всегда инициирует соединение.
Ошибка "500 OOPS: vsftpd: refusing to run with writable root inside chroot ()"
Из соображений обеспечения максимальной безопасности vsftpd не позволяет пользователям осуществлять запись в свои домашние каталоги.
Появление ошибки 500 обозначает, что:
на сервере включено разрешение на запись (write_enable=YES),
сервер обнаружил вход совершенно нормального локального пользователя,
совершенно нормально имеющего право записи в свой собственный домашний каталог,
и, на основании наличия такого права, сервер отказывается впустить пользователя.
Для настройки разрешений на запись см. раздел "FTP для локальных пользователей: разрешение на запись".