File Transfer Protocol (FTP) протокол TCP предназначен для загрузки и скачивания файлов между компьютерами. FTP работает на технологии клиент / сервер. Серверным компонентом является демон FTP . Он постоянно прослушивает запросы FTP с удаленных клиентов. Когда запрос получен, происходит авторизация и устанавливается соединение. На время продолжительности сессии FTP демон выполняет любые команды, посылаемые клиентом FTP.
Доступ к серверу FTP можно осуществить двумя способами:
- Anonymous [Аноним]
- Authenticated [Прошедшие проверку]
В Anonymous режиме удаленные клиенты могут получить доступ к серверу FTP с помощью учетной записи пользователя по умолчанию "anonymous" или "ftp" и электронной почты в качестве пароля. Что бы войти в режиме Authenticated пользователь должен иметь учетную запись и пароль. Доступ пользователей на сервер FTP к каталогам и файлам зависит от разрешений определенных для учетной записи используемой при авторизации. Как правило демон FTP будет скрывать корневой каталог сервера FTP и изменять его на каталог FTP Home. Это помогает скрыть остальные файлы удаленных сессий.
Vsftpd - установка FTP-сервера
Vsftpd - демон FTP доступный в Ubuntu. Он прост в установке и настройке, а так же в обслуживании. Чтобы установить Vsftpdвыполняем пишем в терминале:
Настройка Anonymous FTP
По умолчанию в Vsftpd настроен режим Anonymous. Во время установки FTP пользователь создается с домашнего каталога/home/ftp. Это FTP-каталог по умолчанию.
Если вы хотите изменить каталог по умолчанию например на /srv/ftp, то просто создайте каталог в другом месте и измените настройки домашнего каталога пользователя в FTP:
После внесения изменений перезагрузите Vsftpd:
Теперь можете копировать файлы и каталоги в /srv/ftp которые хотите распространять через Anonymous FTP
Настройка Authenticated FTP
Для того чтобы пользователи проходили авторизацию в системе и могли загружать файлы на сервер FTP, редактируем /etc/vsftpd.conf:
write_enable=YES
Перезагружаем Vsftpd
Теперь когда в системе настроена авторизация, пользователи смогут входить через свою учетную запись на FTP-сервер, где в их домашнем каталоге они смогут скачивать, загружать, создавать каталоги и т.д.
Anonymous пользователи не могут загружать файлы на FTP-сервер. Чтобы изменить этот параметр, Вы должны убрать # передanon_upload_enable и перезапустить Vsftpd:
Моя задача была поднять FTP-сервер + открыть к нему доступ из интернета. Для выполнения этой задачи был выбран сервер proftpd. О его установке и настройке я хочу поведать Вам сегодня. В статье написано пошагово как это сделать:
Устанавливаем пакет proftpd:
sudo aptitude install proftpdОтвечаем на появившийся вопрос о способе запуска: «самостоятельно». Открываем файл /etc/shells:
sudo gedit /etc/shellsДобавляем в него строку:
/bin/falseСоздаем в /HOME каталоге папку FTP-shared(Не обязательно в корне /HOME и не обязательно такое имя папки, это просто пример):
sudo mkdir /home/FTP-sharedТеперь создаем пользователя с именем userftp(ну или что поинтересней):
sudo useradd userftp -p pass -d /home/FTP-shared -s /bin/falseВместо «pass» – ввести свое слово или фразу в качестве пароля(не вводите только цифры, работать не будет).В папке FTP-shared создаем две вложенные папки(называем как хотим):
sudo mkdir /home/FTP-shared/public
sudo mkdir /home/FTP-shared/uploadПрисвоим права созданным папкам:
sudo chmod 755 /home/FTP-shared
sudo chmod 755 /home/FTP-shared/public
sudo chmod 777 /home/FTP-shared/uploadFTP-shared и public – только чтение. upload – запись. Переименовываем имеющийся конфигурационный файл proftpd.conf и создаем новый:
sudo mv /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.old
sudo gedit /etc/proftpd/proftpd.confДобавляем в него: proftpd Если Вы создавали структуру папок, имя пользоватля и т.д не как в статье, то редактируйте данный файл под себя. После произведенных действий фтп-сервер будет иметь следующие параметры доступа:
user (пользователь): test
password (пароль): pass (тот, что присвоен для userftp)Можно создать несколько пользователей, но все они должны быть прописаны в файле proftpd.conf. Если нужно сделать анонимный доступ, следует закомментировать обе секции для test и раскомментировать секцию для Anonymous. Сервер запущен, но с параметрами по умолчанию, перезагружаем его:
sudo /etc/init.d/proftpd restartЧто бы узнать, кто подключен к фтп-серверу в данный момент используется команда ftptop (клавиша t меняет отображение, q – выход). Полезные советы: Если нужно подключить какую-либо папку к фтп-серверу (например, проверить работу только что созданного фтп-сервера) без редактирования конфига пригодится команда:
sudo mount -o bind /здесь/путь/папки/что/я/хочу/расшарить/ /home/FTP-shared/publicили с доступом на запись:
sudo mount -o bind /здесь/путь/папки/что/я/хочу/расшарить/ /home/FTP-shared/uploadТаким образом можно в срочном порядке временно подключить папку или диск и потом отмонтировать командой:
sudo umount /home/FTP-shared/public
sudo umount /home/FTP-shared/uploadДля постоянного доступа к нужным папкам подключаем их посредством fstab. Бэкап файла fstab:
sudo cp /etc/fstab /etc/fstab.oldОткрываем файл /etc/fstab:
sudo gedit /etc/fstabи добавляем нужные пути:
/здесь/путь/папки/что/я/хочу/расшарить /home/FTP-shared/public none bind 0 0Теперь даже при рестарте компьютера информация будет доступна, если сервер за роутером то только в локальной сети. Что бы увидеть фтп-сервер из интернета нужно дать ему внешний ip-адрес. Для этого следует открыть нужный порт (в данном случае 21) для локального адреса (вида 192.168.xxx.xxx) на котором висит сервер, для доступа извне. Следующим шагом нужно дать внешнему динамическому IP-адресу постоянный адрес. Сделать это можно при помощи сервиса DynDNS.com(регистрируемся), создав при помощи его удобный и запоминающийся адрес (вида moi-server.homeip.net). Устанавливаем ddclient:
sudo apt-get install ddclientВводим регистрационные данные с DynDNS.com на вопросы пакета. Изменяем ServerName «server» в файле proftpd.confна ServerName «moi-server.homeip.net». Перезагружаем фтп-сервер:
sudo /etc/init.d/proftpd restartПользуемся Автор статьи - Монахов Сергей Спасибо за предоставленную статью
В качестве FTP-сервера я выбрал vsftpd. Разработчик позиционирует его как very security, т. е. очень безопасный. Безопасность лишней никогда не бывает.sudo apt-get install vsftpd
Настройки vsftpd сервера находятся в файле /etc/vsftpd.conf
Первым делом сделаем резервную копиюsudo cp /etc/vsftpd.conf/ etc/vsftpd.conf_original
А потом очистим содержимое файлаcat /dev/null > /etc/vsftpd.conf
И откроем его для редактированияsudo nano /etc/vsftpd.conf
В моем случае сервер будет работать следующим образом. Для анонимных пользователей разрешен доступ на скачивание из папки /home/ftp. Эта папка является домашней для пользователя ftp (он же anonymous). Любое изменение файлов, включая загрузку, запрещено. Подключаться анонимусы будут без пароля.
Анонимный доступ я открыл для обмена файлами с друзьями. А для себя сделал следующие настройки. На сервере есть локальные пользователи. Отрываем для них доступ с полными правами в определенную папку, т. е. файлы и папки можно не только скачивать, но и загружать, переименовывать, удалять и т. д.
Настройки самого сервера опишу в примере своего конфиг файла. Файл настроек vsftpd сервера имеет следующую структуру: опция=параметр. Параметр может быть значением YES или NO, числом, строковым значением. Строки начинающиеся с символа # являются комментариями и на настройки не влияют.
Пример настройки:#vsftpd будет загружаться в автономном режиме и сам позаботится о прослушивании и перехвате входящих соединений. inetd использоваться не будет
listen=YES
#работать в фоновом режиме
background=YES
#если на сервере несколько сетевых интерфейсов, можно прямо прописать какой из них прослушивать
listen_address=192.168.1.100
#максимальное количество подключений
max_clients=20
#максимальное количество подключений с одного ip
max_per_ip=10
#
#разрешить доступ анонимным пользователям
anonymous_enable=YES
#папка анонимусов
anon_root=/home/ftp
#не спрашивать пароль
no_anon_password=YES
#
#разрешить доступ локальным пользователям
local_enable=YES
#папка локальных пользователей
local_root=/media/files
#
#включить команду "async ABOR" для "плохих" клиентов
async_abor_enable=YES
#разрешить изменение файлов
write_enable=YES
#
#скачивать и загружать данные в режиме ASCII
#ascii_download_enable=YES
#ascii_upload_enable=YES
#
#вся пользовательская и груповая информация в списке директорий, выводится как "ftp"
hide_ids=YES
#детальный отчет о скачиваниях и загрузках (пишется в /var/log/vsftpd.log)
xferlog_enable=YES
#активируем 20-й порт
connect_from_port_20=YES
#приветствие при подключении
ftpd_banner=Welcome to home FTP server.
#пустая папка "для безопасности"
secure_chroot_dir=/var/run/vsftpd/empty
#имя сервиса PAM, который будет использоваться vsftp
pam_service_name=passwd
Так выглядит мой файл конфигурации vsftpd сервера.
Запускаем ftp серверsudo vsftpd
У меня все заработало сразу же, если у вас не подключается, проверьте еще раз настройки. При запуске возможно некоторые ошибки. Например:
500 OOPS: config file not owned by correct user – измените владельца файлов конфигураций пользователей на roor:root
500 OOPS: vsftpd: refusing to run with writable anonymous root – изменить права каталога указаного в anon_root на 555
425 Security: bad IP connecting – добавить опцию pasv_promiscuous=YES, хотя добавление этой опции является нежелательным.
Подключаемся:user@user-pc:~$ ftp 192.168.1.100
Connected to 192.168.1.100.
220 Welcome to user`s FTP server.
Name (192.168.1.100:user): ftp
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
Чтобы можно было подключаться из интернета необходимо, чтобы сервер имел внешний ip-адрес, либо можно воспользоваться сервисами вроде DynDNS.org. Об этом я писал в статье Удаленный доступ без прямого ip.








