- Настройка FTP-сервера
Введение#
Общие сведения об FTP#
File Transfer Protocol (FTP) — один из первых протоколов передачи данных в Интернете. Он используется для передачи файлов между сервером и клиентом. Протокол FTP предоставляет пользователям доступ к файлам на удаленной системе с помощью набора стандартных команд без необходимости входить в систему. В дополнение к этому FTP-сервер предоставляет следующие функции.
-
Классификация абонентов
По умолчанию FTP-сервер классифицирует пользователей на реальных, гостевых и анонимных на основе их статуса входа в систему. Эти три типа имеют разные права доступа. Реальные пользователи имеют полные права доступа, тогда как анонимные — только разрешение на загрузку ресурсов.
-
Записи команд и файла журнала
Протокол FTP может использовать syslogd для записи данных, включая прошлые команды и сведения о пользовательских передачах (например, время передачи и размер файла). Данные журнала доступны пользователям в каталоге /var/log/.
-
Ограничение области доступа пользователей
FTP может ограничивать рабочую область пользователя его домашним каталогом. Когда пользователь входит в систему через FTP, его домашний каталог — это корневой каталог, отображаемый системой. Эта среда определяется операцией change root (сокращенно chroot). Таким образом, пользователи получают доступ только к основному каталогу, но не к важным каталогам, таким как /etc, /home и /usr/local. Это защищает систему и обеспечивает ее безопасность.
Используемый порт FTP-сервера#
Для сервиса FTP необходимо несколько сетевых портов. Сервер использует следующие порты.
- Командный канал. Номер порта по умолчанию — 21.
- Канал данных. Номер порта по умолчанию — 20.
Порт 21 используется для получения запросов на подключение от FTP-клиента, а порт 20 используется FTP-сервером для инициативного подключения к FTP-клиенту.
Общие сведения об vsftpd#
Протокол FTP имеет долгую историю и использует незашифрованный режим передачи, поэтому считается небезопасным. В этом разделе описывается сервис vsftpd (Very Secure FTP Daemon — “Очень безопасный FTP-демон”) для более безопасного использования FTP.
Демон vsftpd предназначен для создания FTP-сервера, ориентированного на безопасность. Он разработан для обеспечения следующих возможностей.
- Начальный пользователь сервиса vsftpd — это обычный пользователь с малыми правами в системе. Кроме того, vsftpd использует chroot для изменения корневого каталога, предотвращая риск недопустимого использования системных инструментов.
- Любая команда vsftpd, требующая высокого уровня прав для выполнения, контролируется специальной программой верхнего уровня. Эта программа верхнего уровня имеет малые права и не влияет на систему.
- Сервис vsftpd включает в себя большинство дополнительных команд (таких как dir, ls и cd), используемых в FTP. Как правило, система не обязана предоставлять дополнительные команды, и их применение не несет ей угрозы.
Использование vsftpd#
Установка vsftpd#
Чтобы использовать этот сервис, необходимо установить программное обеспечение vsftpd. Если источник YUM настроен, выполните от имени пользователя root следующую команду, чтобы установить сервис vsftpd:
# dnf install vsftpd
Управление сервисами#
Чтобы запустить, остановить или перезапустить сервис vsftpd, выполните соответствующую команду от имени пользователя root.
-
Запуск сервисов vsftpd
# systemctl start vsftpd
Вы можете выполнить команду netstat, чтобы проверить, включен ли для связи порт 21. Если отображается следующая информация, сервис vsftpd включен.
# netstat -tulnp | grep 21 tcp6 0 0 :::21 :::* LISTEN 19716/vsftpd
ПРИМЕЧАНИЕ.
Если команда netstat не существует, запустите команду dnf install net-tools, чтобы установить программное обеспечение net-tools, а затем выполните команду netstat. -
Остановка сервисов vsftpd
# systemctl stop vsftpd
-
Перезапуск сервиса vsftpd
# systemctl restart vsftpd
Настройка vsftpd#
Файлы конфигурации vsftpd#
Файл конфигурации vsftpd можно редактировать для управления пользовательскими разрешениями. Описание файлов конфигурации vsftpd приведено в таблице 1 . Вы можете изменять файлы конфигурации по мере необходимости. Используйте команду man, чтобы просмотреть дополнительные значения параметров.
Таблица 1. Файлы конфигурации vsftpd
Описание конфигурации по умолчанию#
ПРИМЕЧАНИЕ.
Содержимое конфигурации в этом документе приводится только для справки. Вы можете изменить его в соответствии с требованиями узла (например, для усиления защиты).
В системе openEuler сервис vsftpd по умолчанию не открыт для анонимных пользователей. Чтобы просмотреть главный файл конфигурации, запустите команду vim. Содержимое будет следующим:
$ vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
Параметры описаны в таблице 2 .
Таблица 2. Описание параметров
Установка местного времени#
Обзор#
В системе openEuler сервис vsftpd по умолчанию использует среднее время по Гринвичу (GMT), которое может отличаться от местного времени. Например, время GMT на 8 часов отстает от пекинского. Необходимо изменить время GMT на местное, иначе время на сервере и на клиенте не будет совпадать, из-за чего возможны ошибки при отправке и загрузке файлов.
Метод настройки#
Чтобы установить для vsftpd местное время, выполните от имени пользователя root следующие действия.
-
Откройте файл vsftpd.conf и измените значение use_localtime на YES. Выполните следующую команду:
# vim /etc/vsftpd/vsftpd.conf
Измените содержимое файла следующим образом:
use_localtime=YES
-
Перезапустите сервис vsftpd.
# systemctl restart vsftpd
-
Настройте сервис vsftpd на автоматический запуск при включении питания.
# systemctl enable vsftpd
Настройка приветственной информации#
При использовании сервиса vsftpd обычно должен существовать файл приветственной информации. Чтобы настроить для сервиса файл welcome.txt, выполните от имени пользователя root следующие действия.
-
Откройте файл конфигурации vsftpd.conf, добавьте приветственную информацию в файл, сохраните файл и выйдите из него.
# vim /etc/vsftpd/vsftpd.conf
Необходимо добавить следующие строки конфигурации:
banner_file=/etc/vsftpd/welcome.txt
-
Создайте приветственную информацию. То есть откройте файл welcome.txt, введите приветственную информацию, сохраните файл и выйдите из него.
# vim /etc/vsftpd/welcome.txt
Ниже приведен пример.
Welcome to this FTP server!
Настройка разрешения на вход для системной учетной записи#
Как правило, пользователям требуется ограничить права входа для некоторых учетных записей. Вы можете задать ограничения необходимым образом.
Для ограничения входа системных учетных записей используются два файла. По умолчанию файлы следующие.
- /etc/vsftpd/ftpusers — этот файл контролируется модулем PAM и определяется настройками в файле /etc/pam.d/vsftpd.
- /etc/vsftpd/user_list — этот файл задается userlist_file в конфигурации vsftpd.conf и предоставляется из vsftpd.
Оба файла должны существовать и иметь одинаковое содержимое. Вы можете записать учетные записи, чьи UID меньше 500, в два файла, обратившись к файлу /etc/passwd. Каждая строка указывает учетную запись.
Чтобы ограничить вход для системных учетных записей, добавьте эти записи в /etc/vsftpd/ftpusers и /etc/vsftpd/user_list от имени пользователя root.
Откройте файл user_list, чтобы просмотреть информацию об учетных записях в текущем файле. Команда и выходные данные имеют следующий вид:
$ vim /etc/vsftpd/user_list
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
Проверка настройки FTP-сервиса#
Для проверки можно использовать FTP-клиент, предоставляемый openEuler. Команда и ее вывод следующие. Введите имя пользователя (существующего пользователя в системе) и пароль, когда появится запрос. Если отобразится сообщение “Login successful” (Вход выполнен), это означает, что FTP-сервер настроен.
$ ftp localhost
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220-Welcome to this FTP server!
220
Name (localhost:root): USERNAME
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> bye
221 Goodbye.
ПРИМЕЧАНИЕ.
Если команда ftp не существует, запустите команду dnf install ftp от имени пользователя root, чтобы установить программное обеспечение ftp, а затем выполните команду ftp.
Настройка брандмауэра#
Чтобы открыть доступ к FTP-сервису из Интернета, необходимо настроить брандмауэр и SElinux от имени пользователя root.
# firewall-cmd --add-service=ftp --permanent
success
# firewall-cmd --reload
success
# setsebool -P ftpd_full_access on
Передача файлов#
Обзор#
В этом разделе описывается, как передавать файлы после запуска сервиса vsftpd.
Подключение к серверу#
Формат команды
ftp [hostname | ip-address]
Здесь hostname указывает имя узла, а ip-address задает IP-адрес сервера.
Требования
Запустите следующую команду в интерфейсе командной строки (CLI) операционной системы openEuler:
$ ftp ip-address
Введите имя пользователя и пароль, когда появится запрос. Если после успешной проверки подлинности отображается следующая информация, то FTP-соединение установлено. В этом случае вы получили доступ к каталогу подключенного сервера.
ftp>
В этом приглашении вы можете вводить различные команды для выполнения соответствующих операций.
-
Отобразите текущий путь сервера.
ftp>pwd
-
Отобразите локальный путь. Вы можете отправлять по этому пути файлы в соответствующее расположение на FTP-сервере.
ftp>lcd
-
Выйдите из текущего окна и вернитесь в локальный терминал Linux.
ftp>!
Загрузка файла#
Как правило, для загрузки файлов используется команда get или mget.
Использование команды get
-
Описание функции: передает файлы с удаленного узла на локальный.
-
Формат команды: get [remote-file] [local-file]
Здесь remote-file указывает удаленный файл, а local-file — локальный.
-
Например, следующая команда позволяет получить файл /home/openEuler/openEuler.htm с удаленного сервера в локальный каталог /home/myopenEuler/ и изменить имя файла на myopenEuler.htm.
ftp> get /home/openEuler/openEuler.htm /home/myopenEuler/myopenEuler.htm
Использование команды mget
-
Описание функции: получает пакет файлов с удаленного узла на локальный.
-
Формат команды: mget [remote-file]
Здесь remote-file указывает удаленный файл.
-
Например, чтобы получить все файлы из каталога /home/openEuler/ на сервере, выполните следующую команду:
ftp> cd /home/openEuler/ ftp> mget *.*
ПРИМЕЧАНИЕ.
— В этом случае отображается сообщение при каждой загрузке файла. Чтобы заблокировать вывод сведений в командной строке, перед запуском mget *.* выполните команду prompt off.
— Файлы загружаются в текущий каталог на узле Linux. Например, если вы запустите команду ftp в /home/myopenEuler/, то все файлы будут загружаться в /home/myopenEuler/.
Отправка файла#
Как правило, для отправки файлов используется команда put или mput.
Использование команды put
-
Функция: передает локальный файл на удаленный узел.
-
Формат команды: put [local-file] [remote-file]
Здесь remote-file указывает удаленный файл, а local-file — локальный.
-
Например, следующая команда позволяет передать локальный файл myopenEuler.htm на удаленный узел /home/openEuler/ и изменить имя файла на openEuler.htm:
ftp> put myopenEuler.htm /home/openEuler/openEuler.htm
Использование команды mput
-
Функция: передает пакет файлов с локального узла на удаленный.
-
Формат команды: mput [local-file]
Здесь local-file указывает локальный файл.
-
Например, чтобы передать все HTM-файлы из локального каталога в каталог /home/openEuler/ на сервере, выполните следующую команду:
ftp> cd /home/openEuler/ ftp> mput *.htm
Удаление файла#
Как правило, для удаления файла используется команда delete или mdelete.
Использование команды delete
-
Описание функции: удаляет один или несколько файлов с удаленного сервера.
-
Формат команды: delete [remote-file]
Здесь remote-file указывает удаленный файл.
-
Например, чтобы удалить файл /home/openEuler/openEuler.htm с удаленного сервера, выполните следующую команду:
ftp> cd /home/openEuler/ ftp> delete openEuler.htm
Использование команды mdelete
-
Описание функции: удаляет файлы с удаленного сервера. Эта функция используется для пакетного удаления файлов.
-
Формат команды: mdelete [remote-file]
Здесь remote-file указывает удаленный файл.
-
Например, чтобы удалить все файлы, имена которых начинаются на букву a, из каталога /home/openEuler/ на удаленном сервере, выполните следующую команду:
ftp> cd /home/openEuler/ ftp> mdelete a*
Отключение от сервера#
Для отключения от сервера используйте команду bye.
ftp> bye