Сервер FTP (File Transfer Protocol) використовується для обміну файлами між системами. Зазвичай на FTP-сервері розміщують велику кількість файлів, наприклад, який-небудь програмний комплекс або набір музичних файлів. Прикладом FTP-сервера може послужити сервер ftp://ftp.redhat.com. На цьому сервері ви можете знайти як саму операційну систему Linux Red Hat, так і поновлення її пакетів, а також додаткові програми.
У розділі 19.3 розглянуті всі команди клієнта FTP. Зараз же просто розглянемо реєстрацію користувача на сервері і що при цьому відбувається. Припустимо, є якийсь FTP-сервер, до якого можуть підключатися не тільки звичайні користувачі, а й анонімні (див. Рис. 11.1).
Мал. 11.1. FTP-клієнт у вікні терміналу
Перед самою реєстрацією спочатку FTP-клієнт повідомить, що з'єднання з сервером FTP встановлено, а потім вас привітає сам сервер - повідомлення 220: ProFTPD 1.2.0 Server. Далі, у відповідь на запрошення Name введіть ім'я користувача (нехай буде den). Так як користувач не є анонімним, сервер повідомить вам, що потрібно ввести пароль для цього користувача. Правильно ввівши пароль, ви успішно зареєструєтесь на сервері, про що вам повідомить сервер - повідомлення 230. Також сервер вам повідомить, що вилученою системою є UNIX і що зараз використовується двійковий (binary) режим передачі файлів. Я не рекомендую змінювати цей режим на текстовий, тому що при передачі нетекстової інформації, наприклад, пакетів RPM, виконавчі файли будуть пошкоджені.
Сервер FTP wu-ftpd є розробкою Вашингтонського університету. Цей сервер дуже поширений і входить до складу практично кожного дистрибутива Linux. Для його установки потрібно встановити пакет wu-ftpd. Як і будь-який інший сервер, wu-fptd може бути постійно завантаженим в пам'ять або викликатися суперсервером inetd в міру необхідності. Перший режим називається standalone і застосовується, як правило, якщо FTP-сервера потрібно часто обробляти запити клієнтів. Другий режим використовується з метою економії пам'яті і якщо навантаження на FTP-сервер не дуже велика.
Якщо ви вирішите налаштувати роботу сервера FTP в другому режимі, в файлі inetd.conf повинен бути відповідний запис (див. Лістинг 11.1)
Лістинг 11.1. Фрагмент файлу inetd.conf
ftp stream top nowait root / usr / sbin / tcpd in.ftpd -l -a
З лістингу 11.1 видно, що FTP-сервер викликається не безпосередньо, а через демон tcpd, чим забезпечується додаткова безпека. У тому випадку, якщо ви використовуєте нову версію inetd - xinetd, формат запису у вас буде інший (див. Лістинг 11.2).
Лістинг 11.2. Фрагмент файлу xinetd.conf
Deny from 192.168.2.
Для конфігурації окремого каталогу може також використовуватися файл .ftpaccess, який розташований в цьому каталозі. У ньому містяться такі ж директиви, що і в файлі proftpd.conf, але файл .ftpaccess має пріоритет перед файлом proftpd.conf.
Анонімний FTP-сервер можна побудувати за допомогою wu-ftpd, встановивши пакет anonftp. Цей пакет можна використовувати разом з сервером ProFTPD. Пакет anonoftp поставляється в складі більшості дистрибутивів.
Зараз розглянемо, як організувати анонімний FTP-сервер за допомогою сервера ProFTPD. Для організації анонімного доступу сервер ProFTPD має директиву Anonymous. При цьому в блок Anonymous потрібно помістити директиви, конфігурують анонімну службу. У самій же директиві Anonymous необхідно вказати каталог, який буде використовуватися в якості кореневого для анонімної служби. Сервер ProFTPD виконає для цього каталогу команду enroot, перетворюючи цей каталог в кореневий для віддаленого користувача. Перед тим, як зробити це, сервер ProFTPD прочитає всі необхідні йому файли конфігурації з реального каталогу / etc.
Лістинг 11.11. Типовий блок Anonymous
UserAlias anonymous ftp
Директива RequireValidShell відключає перевірку командного інтерпретатора користувача. За замовчуванням сервер ProFTPD шукає список допустимих інтерпретаторів в файлі / etc / shells. Якщо використовуваний користувачем інтерпретатор не вказано в файлі / etc / shells, то з'єднання буде розірвано. Директива RequireValidShell off відключає таку перевірку.
Директива
Бажано також додати в блок Anonymous директиву MaxClients, яка вказує максимальне число клієнтів. Потрібно враховувати навантаження на сервер і пропускної канал для визначення максимального числа анонімних клієнтів. Справжніх користувачів сервера FTP по можливості не слід обмежувати, на відміну від анонімних. При малоскоростной каналі зв'язку, наприклад, 33 Кбіт / с, встановіть маленьке максимальну кількість анонімних клієнтів, наприклад, 5 або навіть 3. Звичайно, число клієнтів також залежить від обсягу інформації, розташованої на сервері. Якщо розміри файлів невеликі, наприклад, документація, число клієнтів можна встановити дещо більшим (10 ... 15).
При роботі з серверами wu-ftpd і ProFTPD ви можете використовувати програми ftpshut, ftpwho, ftpcount. Інструментальні засоби обох серверів мають схожі опції, але допоміжні програми для ProFTPD виводять більше корисної інформації.
Програма ftpshut зупиняє сервер. Програма ftpwho виводить інформацію про користувачів, підключених до вашого сервера. Програма ftpcount повідомляє про кількість встановлених з'єднань.
Я рекомендую використовувати розширений висновок програми ftpwho. В цьому режимі надається більше інформації (див. Лістинг 11.12).
Лістинг 11.12. Результат роботи програми ftpwho
Master proftpd process 759:
1113 2m55s proftpd: ftp - localhost.localdomain: anonymous/[email protected]: IDLE
(Host: localhost.localdomain [127.0.0.1])
1150 0m20s proftpd: den - localhost.localdomain: IDLE
(Host: localhost.localdomain [127.0.0.1])
Service class 2 users
Програма ftpcount тільки повідомляє про загальну кількість користувачів (див. Лістинг 11.13).
Лістинг 11.13. Результат роботи програми ftpcount
Master proftpd process 759:
Service class 2 users
У цьому розділі книги піде мова про конфігуруванні віртуального FTP-сервера. Створення віртуального FTP-сервера буде відбуватися з використанням сервера ProFTP.
Віртуальні FTP-вузли потрібні, якщо ви, наприклад, хочете організувати кілька вузлів FTP, один - для однієї робочої групи, інший - для другий, третій може бути анонімним і так далі. Обслуговувати відразу декілька FTP-вузлів дозволяє все той же демон proftpd.
Лістинг 11.14. Директива VirtualHost
ServerName "Virtual FTP Server"
У блоці VirtualHost можна використовувати інші директиви, наприклад, директиву Anonymous, яка створить гостьовий вузол. Можна також задати каталог або порт (див. Лістинг 11.15).
Лістинг 11.15. Приклад використання директиви VirtualHost
ServerName "Online library"
Allow from 192.168.1
UserAlias anonymous ftp
Мал. 11.2. FTP-клієнт gFTP
Як FTP-клієнта для X Window я рекомендую використовувати програму gFTP, яка має досить зручним інтерфейсом і багатими функціями. Використання gFTP настільки просте, що я не буду зупинятися на його розгляді (див. Рис. 11.2).