FTP-клиенты в Linux. FTP клиенты в Ubuntu (1)

Этот документ был написан Matthew Borowski для Linux Documentation Project. Но он пока не закончен, т.к. еще не сделаны некоторые добавления. Вскоре должен появится раздел с информацией относительно работы сервера FTP.

3. Руководство начинающего по пользованию ftp

Быстрое руководство к использованию ftp.Стандартная ftp программа - настоящий ftp клиент. Она входит в большинство дистрибутивов Linux. Сначало появилась в 4.2BSD.

3.1. Запуск ftp программы

Скажем, вы хотите соединится с FTP сайтом metalab.unc.edu, чтобы получить последние исходные тексты ядра Linux.В командной строке введите:

$ ftp metalab.unc.edu

FTP программа попытается соединится с metalab.unc.edu. Другой способ сделать это - запустить ftp из командной строки без параметров, и использовать команду open с именем сайта в качестве аргумента:

$ ftp ftp> open metalab.unc.edu

3.2. Регистрация на FTP сервере

Когда вы соединитесь с FTP сайтом, система спросит ваш логин (нажмите Enter, и вы войдете под локальным именем, в данном случае под именем foo). Мы войдем как anonymous или ftp , чтобы получить доступ к общедоступному архиву.

Рано или поздно многим из нас приходит мысль попробовать себя в новом направлении. Например, в создании своего сайта или сервера, а может быть, он у вас уже есть и вы просто перешли на линукс. Не важно. Главное, что во всех этих случаях нам надо как-то закачивать файлы на сервер. В случае, если сайт располагается на хостинге, можно воспользоваться онлайн-сервисами своего хостинга (которые, к слову сказать, не всегда столь удобны, как хотелось бы), а если у нас сервер? В данной ситуации нам нужен . Сегодня представляю вашему обозрению три ftp-клиента: Filezilla , gFTP и для любителей консоли - mc.

Так, думаю что в случае с сайтом вы определились и будете использовать какой-нибудь из Linux-хостингов, ведь зачастую хостинг на Linux дешевле, чем на Windows. А в случае со своим собственным сервером будем считать, что вы уже настроили на нем FTP.

Предлагаю установить сразу все и выбрать тот, который понравится.

В Ubuntu/Debian/Mint:

Sudo apt-get install filezilla mc gftp

Sudo yum install filezilla mc gftp

Sudo pacman -S filezilla mc gftp

Ну вот. Теперь можно начинать и сам обзор. Начнем с mc. Этот консольный файловый менеджер малый, но удалый. Кроме как производить действия с файлами на локальной машине, он может еще и подключаться к серверу по FTP, устанавливать Shell-соединение и SMB-соединение. Сегодня он нас интересует только как FTP-клиент. Выбираете сверху правую или левую панель, как вам больше нравится, разницы нет, -> ftp-соединение... -> появляется окно, в нем вводим адрес сервера в виде ip-адреса или url (если хотите установить анонимное соединение с сервером) или в виде login@адрес_сервера (если хотите войти на на сервер под своим логином). После чего жмете Enter, появляется еще одно окошко, в нем вводите пароль, готово.

Дальше разберем gFTP. Однако он самый простой из графических FTP-клиентов. Простенькое оформление, нетребовательность к ресурсам, свободность. Поддерживает SSL. Снизу расположилась консоль, в которой отображаются все события, а сверху панелька для ввода данных.

И третий клиент - Filezilla. Особых отличий у него нет, разве что консоль сверху, а не снизу. Особенно порадовало наличие дерева каталогов. Да и кнопочек с различными функциями у него побольше, например, синхронизированный просмотр, или рекурсивный поиск файлов, а также сравнение каталогов и другие. Может закачивать файлы более двух гигабайт.

P.S. В данной подборке только свободные и бесплатные FTP-клиенты. Есть, конечно, и другие не менее привлекательные клиенты для подключения по протоколу FTP, но о них в следующих статьях. Не забываем голосовать за статью.

Программа ftp доступна на большинстве систем (даже Win32 идет с ftp программой).

Существует большое количество других консольных ftp клиентов. Список, приведенный здесь, далеко не полный, но включает наиболее популярные из них. Ищите их на FreshMeat , чтобы найти больше.

NcFTP

NcFTP - общеизвестный ftp клиент для пользователей Unix. Он поставляется с большинством дистрибутивов Linux, и обладает расширенными функциями, такими, как автозавершение по tab и создание закладок. Версия 2 программы NcFTP имела проблемы при работе в полноэкранном режиме. Это исправлено в версии 3 (сейчас в бета).

Он не на все 100% совместим по стандартным ftp командам. Например, get и put в NcFTP подобны mget и mput в стандартном ftp. Так, если вы хотите сохранить удаленный файл под другим именем на локальном диске, вы должны ввести get -z remotename localname . NcFTP имеет отличную помощь, которая поможет изучить вам команды.

Последняя версия NcFTP доступна по адресу http://www.ncftp.com .

lukemftp

lukemftp имеет расширенные возможностеи, которые включают: редактирование командной строки, выбор в командной строке FTP и HTTP адреса, контекстно-зависимое завершение строки, линейку продвижения процесса, поддержка IPv6, изменение времени сохранения, страничный просмотр локальных и удаленных файлов, поддержка пассивного режима (с перходом в активный режим), поддержка SOCKS и регулировка скорости передачи.

Последняя версия lukemftp находится по адресу ftp://ftp.netbsd.org/pub/NetBSD/misc/lukemftp/ .

lftp

lftp-клиент является расширенной командной строкой, основанной на FTP клиенте. Подобно bash , он имеет управление заданиями. Использует библиотеку readline GNU для ввода. Вы имеете возможность редактирования в командной строке и автозавершение ввода. lftp также имеет поддержку закладок, использование зеркал сайтов, и передачу нескольких файлов одновременно.

Вы можете получить последнюю версию lftp по адресу http://ftp.yars.free.net/projects/lftp/ .

cftp

Удобный FTP клиент, работающий в полноэкранном режиме. Возможностей у него не очень много, но это восполняется легкостью в работе. Просмотр каталогов осуществляется при помощи клавиш управления курсором и Enter.

Вы можете получить последнюю версию cftp по адресу http://ftp.giga.or.at/pub/nih/cftp/ .

yafc

Yafc очень приятный в использовании ftp клиент, с возможностями, включающими кеширование каталогов, автозавершение при вводе удаленного имени файла, элиасы (aliases), раскраску файлов, рекурсивное исполнение get/put/ls/rm, организацию очереди, множественные соединения, поддержку proxy и другие.

FTP (File Transfer Protocol) – протокол передачи файлов. Протокол FTP позволяет передавать и скачивать файлы с сервера. На сегодняшний день данный протокол не является особо популярным, так как он не поддерживает шифрование данных. Вместо FTP используют протокол SFTP (передача данных по SSH), а также протокол SCP . В этой статье рассмотрена настройка обычного FTP-сервера на базе Ubuntu.

Протокол FTP работает в режиме клиент-сервер. Сервер постоянно слушает запросы от удаленных клиентов на 21 порту. При получении запроса он управляет входом и устанавливает соединение. На протяжении сессии сервер выполняет любые команды, переданные клиентом FTP. В качестве протокола транспортного уровня используется TCP. Для передачи данных FTP использует два типа соединения:

  1. Управляющее соединение (порт 21)
  2. Соединение данных (в активном режиме порт 20, в пассивном любой порт больше 1024)

Разделение на управляющее соединение и соединение для передачи данных является эффективным. Это позволяет передавать команды и файлы независимо друг от друга.

FTP поддерживает два типа аутентификации:

  1. Анонимный (логин ftp или anonymous, пароль – электронная почта)
  2. Авторизованный (логин и пароль у каждого пользователя свой)

При работе по протоколу FTP между клиентом и сервером может быть установлено два режима: активный и пассивный. Управляющее соединение одинаково для Активного и Пассивного режима. Клиент инициирует TCP-соединение с динамического порта (1024 – 65535) к порту номер 21 на FTP-сервере, после чего происходит аутентификация. Дальнейшие действия зависят от того какой режим выбран.

В активном режиме, после аутентификации, клиент сообщает серверу также номер своего порта (из динамического диапазона 1024 – 65535) для того, чтобы сервер мог подключиться к клиенту для установки соединения передачи данных. FTP-сервер подключается к заданному номеру порта клиента используя со своей стороны номер TCP-порта 20 для передачи данных.

В пассивном режиме, после аутентификации, сервер сообщает клиенту номер TCP-порта (из динамического диапазона 1024 – 65535), к которому можно подключиться для установки соединения передачи данных.

Таким образом, в активном режиме инициатором соединения является сервер, так как он подключается к клиенту. В пассивном режиме инициатор соединения – клиент.

Активный режим “вреден” для клиента в том плане, что когда к нему по случайному порту подключается сервер, такое соединение будет скорее всего блокировано брандмауэром на стороне клиента. Таким образом, необходимо открывать порты на стороне клиента, что приводит к “дырам” в безопасности. С другой стороны, для сервера такой режим будет полезен, так как для передачи данных используется общеизвестный порт 20.

Пассивный режим “вреден” в свою очередь для сервера, но “выгоден” для клиента. Клиент будет делать оба соединения к серверу, но одно из них будет к случайному высокому порту, такое соединение будет блокировать брандмауэром на стороне сервера.

Пассивный режим используется, как правило, когда между клиентом и сервером находится межсетевой экран.

Наиболее популярные команды FTP:

Команда Описание
USER Указать имя пользователя
PASS Указать пароль
LIST Просмотр содержимого каталога
CWD Смена текущего каталога
RETR Передать файл с сервера на клиент
STOP Передать файл с клиента на сервер
TYPE Установить режим передачи
DELE Удалить файл
MDK Создать каталог
RMD Удалить каталог
PASV Использовать пассивный режим
QUIT Выход и разрыв соединения

FTP имеет три режима передачи:

  1. Поточный – непрерывная передача данных в виде потока (без обработки, обработка выполняется TCP)
  2. Блочный – FTP делит данные на блоки (заголовок, поле данных, размер файла в байтах) и передает их TCP
  3. Режим сжатия единым алгоритмом

FTP-сервер – “библиотека” файлов на хостинге, используется для хранения файлов разных форматов. Самые популярные ftp-сервера это vsftpd и proftpd. FTP-сервера нужны для того, чтобы размещать на них для публичного и приватного скачивания больших объемов данных. Часто сервера используются для анонимного (гостевого) доступа к размещенным в открытом виде дистрибутивов ПО, музыки и фото. Доступ для анонимов позволяет, как правило, только просматривать каталоги и скачивать необходимую информацию, но на некоторых серверах наоборот – есть спецкаталоги, куда любой пользователь может загрузить файл для совместного пользования.

При неанонимном доступе возможностей больше, но они ограничены тем каталогом, куда предоставлен доступ.

Перейдем к настройке сервера. Работать будем с такой схемой.

Доступ к FTP-серверу будут иметь как администратор, так и пользователь. Администратор и пользователь имеют авторизованный доступ. При этом необходимо настроить права доступа таким образом, чтобы администратор имел неограниченный доступ, а пользователь имел доступ только к своей домашней директории. Также необходимо настроить анонимный доступ.

В Ubuntu для DHCP сервера доступен демон vsftpd. Устанавливаем DHCP-сервер, это выполняется командой:

testServer$ sudo apt-get install vsftpd

По умолчанию, анонимная загрузка запрещена. Необходимо изменить конфигурацию в файле /etc/vsftpd.conf.

testServer$ sudo nano /etc/vsftpd.conf

Находим там строку “anonymous_enable” и присваиваем ей значение “Yes”. Данная строка отвечает за доступ к FTP-серверу для анонимных пользователей.

Также необходимо раскоментировать две строки: “write_enable” и “chroot_local_user”. Первая строка отвечает за возможность записи на сервер, вторая строка блокирует возможность локальных пользователей подниматься на каталог выше, чем их домашняя папка.

В конце файла конфигурации добавляем две настройки:

Данные настройки устанавливают домашние папки для анонимных и локальных пользователей.

Сохраняем конфигурацию файла сочетанием клавиш Ctrl + X (при предложении заменить текущий файл выбираем Yes). Далее необходимо перезагрузить сервер FTP командой

testServer$ sudo service vsftpd restart

Следующий этап – это создание пользователей.

Создаем суперпользователя командой:

testServer$ sudo adduser superuser

Задаем ему пароль:

testServer$ sudo passwd superuser

Даем ему неограниченные права:

testServer$ sudo adduser superuser sudo

Создаем обычного пользователя:

testServer$ sudo adduser user

Задаем ему пароль:

testServer$ sudo passwd user

Enter new UNIX password: 12345

Создаем группу пользователей для управления папками:

testServer$ sudo addgroup groupl

testServer$ sudo nano /etc/group

Находим строчку “groupl” с помощью Ctrl + W.

В эту строчку добавляем наших пользователей superuser и user.

Создаем папки для пользователей:

testServer$ sudo mkdir /srv/ftp/upload

testServer$ sudo mkdir /srv/ftp/superuser

testServer$ sudo mkdir /srv/ftp/user

Задаем права доступа для папок:

testServer$ sudo chmod 700 /srv/ftp/superuser

testServer$ sudo chmod 770 /srv/ftp/user

testServer$ sudo chmod 575 /srv/ftp/upload

Меняем владельцов папок:

testServer$ sudo chown superuser: /srv/ftp/superuser

testServer$ sudo chown user:groupl /srv/ftp/user

testServer$ sudo chown:groupl /srv/ftp/upload

Таким образом, у нас получается следующая картина:

  1. К папке superuser имеет доступ только пользователь superuser, он же является владельцем этой папки
  2. К папке user имеет доступ как user, так и superuser. Это из-за того, что мы выставили права 77 0. Вторая семерка устанавливает полные права для группы пользователей groupl, в которую мы добавили superuser.
  3. К папке upload полный доступ имеют как user, так и superuser. Для всех остальных установлены только права на чтение и выполнение 5 75 . 5 = 101 (в двоичной системе). 101 ~ r-x. То есть остальные пользователи (а к ним относится анонимный) не могут ничего записывать в папке upload.

Проверяем права доступа и владельцев командой:

testServer$ ls -l /srv/ftp

Для того, чтобы проверить доступ к FTP-серверу, необходимо в любом браузере в адресной строке набрать:

ftp://172.16.1.2

В данном случае мы попадаем как анонимный пользователь, так как не вводим имя и пароль.

Видим три папки superuser/, upload/, user/. Так как мы зашли под анонимным пользователем доступ есть только к папке upload/.

Для того, чтобы войти под именем суперпользователя вводим:

ftp://[email protected]

Вводим имя пользователя: superuser , пароль: 12345 . Под superuser’ом мы получаем доступ ко всем папкам.

Проверим напоследок обычного пользователя. Чтобы не вводить имя и пароль каждый раз при входе, можно в адресной строке написать следующее:

ftp://user:[email protected]

Под user’ом мы можем попадать только в папки upload/ и user/ . К папке superuser/ доступ закрыт.


Подписывайтесь на нашу

    FileZilla - один из лучших бесплатных FTP-менеджеров с открытым исходным кодом (open source), обладающий впечатляющими возможностями:

  • Кроссплатформенность. Работает на Windows, Linux, *BSD, Mac OS X и других ОС
  • Поддержка множества прикладных протоколов передачи данных - FTP, FTP поверх SSL/TLS (FTPS) и SSH File Transfer Protocol (SFTP), HTTP, SOCKS и FTP-Proxy
  • Поддержка протокола IPv6
  • Поддержка drag & drop
  • Мультиязычность
  • Имеется удобный мастер настройки сетевого подключения
  • Возможность настройки скорости передачи
  • Возобновление передачи файлов при обрыве соединения (докачка), а также поддержка больших файлов.
  • Поддержка очереди закачек.
  • Удаленный поиск и редактирование файлов.
  • Удобный менеджер сайтов.
  • и много других возможностей, которыми не обладают даже платные аналоги.

    Программа обладает удобным и приятным интерфейсом, в ней присутствует множество поддерживаемых языков, и кроме того, существует переносимая (portable) версия, которую можно установить на флэш-диск и пользоваться ей на других компьютерах без установки.

    После установки, Filezilla FTP клиент готов к работе без необходимости изменения каких-либо настроек. Для подключения к FTP - серверу достаточно ввести его адрес или имя, учетные данные и, при необходимости, номер порта. В программе используются всплывающие окна с подсказками при наведении курсора на поле, в которое выполняется ввод данных:

    Окно программы разделено на несколько частей - журнал состояния сеанса в верхней части, слева окно ”Локальный сайт”, где отображаются файлы и каталоги локального компьютера, окно ”Удаленный сайт”, где отображается файловая структура удаленного сервера, и в нижней части, окно, где отображается ход выполнения текущей передачи файлов.

    Контекстное меню, вызываемое правой кнопкой мышки на файлах и каталогах в окне ”Локальный сайт” позволяет выполнять определенные действия по отношению к объектам локального компьютера:

    Пункты меню позволяют выполнять перемещения по структуре каталогов, удалять и переименовывать файлы и папки и либо сразу передавать данные на сервер, при выборе пункта ”Закачать на сервер”, либо добавить выбранный объект в задание для закачки, которое можно будет выполнить позже.

    Аналогичное контекстное меню используется и по отношению к файлам и папкам в окне ”Удаленный сайт”

    Также, как и для локальной файловой системы, контекстное меню позволяет либо сразу передать выбранный объект на локальный компьютер при выборе пункта ”Скачать”, либо добавить его в задание, которое можно будет выполнить позже. Можно, например выбрать несколько файлов и папок в разных каталогах сервера, добавив их в задание и затем нажать комбинацию клавиш Ctrl+P или выбрать пункт меню ”Передача - Выполнить задание”. Для отмены выполняющегося задания используется повторное нажатие CTRL+P . Прерванное задание можно продолжить.

    Задания на прием и передачу данных сохраняются, даже если прервать сеанс связи с сервером или перезапустить программу. Для управления заданиями используется свое контекстное меню:

    Имеется возможность выполнить отмеченное задание, отменить все задания, установить приоритеты и поведение при необходимости перезаписи существующих файлов и каталогов.

    Filezilla устанавливается с настройками, которые являются оптимальными для наиболее распространенных случаев обмена файлами между локальным компьютером и серверами в локальной сети или в Интернет, однако, при необходимости настройки можно изменить, через меню ”Редактирование - Настройки”

    При плохом качестве канала связи, можно, например увеличить количество попыток соединения с сервером и время ожидания между попытками. Однако, подавляющая часть настроек уже выполнена таким образом, чтобы обеспечивать работу типовой конфигурации FTP-клиента, и их изменение без достаточной квалификации, могут лишь ухудшить работоспособность программы и удобство ее использования.