Управление соединением
Использовать соединение данных можно тремя способами:
1. Отправка файлов от клиента к серверу.
2. Отправка файлов от сервера к клиенту.
3. Отправка списка файлов или каталогов от сервера к клиенту.
Третий способ необходимо пояснить. FTP-сервер посылает список файлов по соединению данных – при таком использовании канала данных появляется возможность избежать любых ограничений в строках, накладывающихся на размер списка каталога, и несколько упрощает обмен информацией.
Управляющее соединение остается в активизированном состоянии все время, пока установлено соединение клиент-сервер, но соединение данных может устанавливаться и отключаться по необходимости. Рассмотрим, как выбираются номера портов для соединения данных, и кто осуществляет активное открытие, а кто пассивное.
Основной режим передачи – потоковый режим. В этом режиме конец файла обозначает закрытие соединения данных. Из этого вытекает, что для передачи каждого файла требуется новое соединение данных. Обычная процедура выглядит следующим образом:
1. Создание соединения данных осуществляется клиентом.
2. Клиент выбирает динамически назначаемый номер порта на компьютере клиента для своего конца соединения данных и осуществляет пассивное открытие с этого порта.
3. Клиент посылает номер порта на сервер по управляющему соединению с использованием команды port.
4. Сервер принимает номер порта с управляющего соединения и осуществляет активное открытие на этот порт компьютера клиента. Сервер всегда использует порт 20 для соединения данных.
Сервер всегда осуществляет
Если клиент не выдает команду port, сервер осуществляет активное открытие на тот же самый номер порта, который использовался клиентом для управляющего соединения.
Программное обеспечение
Для работы по протоколу FTP необходимы две программы – сервер и клиент. Клиентских программ – очень много. От простейших, работающих в командной строке, до имеющих весьма развитый графический интерфейс. Любой современный Web-браузер способен выступать в роли FTP-клиента. Поэтому на клиентских программах останавливаться не будем, а перейдем сразу к программному обеспечению сервера FTP.
Сегодня стандартом de-facto для множества дистрибутивов является использование в качестве программного обеспечения пакета wu-ftp (Washington University at Saint Louis FTP daemon).
Пакет wu-ftp
Программный пакет написан в Вашингтонском университете. Достаточно гибок и настраиваем. Обычно поставляется вместе с дистрибутивом, поэтому установка его не представляет сложности. Основная задача – правильно сконфигурировать систему и настроить доступ.
Команды
Как уже упоминалось ранее, FTP-серверы имеют свои наборы команд, иногда несколько отличающиеся друг от друга. В табл. 20.4 приведен список стандартных команд сервера wu-ftp.
Таблица 20.4.
Помимо вышеприведенных команд, сервер wu-ftp имеет несколько специфичных, которые приведены в табл. 20.5.
Таблица 20.5.
Конфигурирование сервера
Конфигурирование сервера wu-ftp проводится в два этапа. Первый – компилирование сервера со специфическими для вашего случая свойствами. Этот вариант мы описывать не будем, поскольку для создания простого сервера достаточно rpm-пакета, входящего в дистрибутив. Второй этап – использование конфигурационных файлов сервера, на которых мы сейчас и остановимся.
Как вы уже знаете, конфигурационные файлы находятся в каталоге /etc. В идеале сервер wu-ftp использует следующие конфигурационные файлы:
• ftpaccess
• ftpservers
• ftpusers
• ftphosts
• ftpgroups
• ftpconversion
Рассмотрим подробно каждый конфигурационный файл.
Файл ftpaccess
Этот конфигурационный файл, используется для определения прав доступа к серверу. Здесь определяется, какие и сколько пользователей, могут получить доступ к серверу, а также важные элементы настройки безопасности сервера.
Рассмотрим подробно конфигурационные параметры, используемые в этом файле.
Управление правами доступа:
• autogroup имя_группы класс … – в том случае, если анонимный пользователь является членом указанного класса, то сервер использует заданную группу, что позволяет анонимным пользователям из разных классов получать доступ к различным наборам каталогов;
• class класс typelist шаблон_адресов … – позволяет закрепить клиента за указанным классом, исходя из IP-адреса и типа клиента, где:
– typelist – список из ключевых слов, обычно anonymous, guest и real (зарегистрированные на локальном хосте – /etc/passwd), через запятую;
– шаблон_адресов – шаблон имени или адреса хоста клиента или адрес: маска или имя файла (имя файла должно начинаться с /, а файл – содержать шаблоны адресов);