Поднимаю FTP-сервер на Orange\Raspberry PI

Приобрел на пробу один из самых дешевых одноплатных компьютеров, и решил сделать из него файловый сервер. Выглядеть это будет примерно так: в пустой корпус от блока питания настольного ПК я помещу сам мини-пк, жесткий диск 2.5′ на 320 Gb от ноутбука (для начала), и зарядное устройство от смартфона на 5 в. 2 ампера. Все это будет подключено и распаяно соответственно. Сервер нужен сугубо для моего личного пользования, по этому настройки пользовательского доступа минимальны, я использую root права.

Манипуляции я проводил на однаплатном ПК — Orange Pi Zero, но все ниже описанное применимо к любому «пирожку», при соблюдении некоторых условностей:

  1. Операционная система микрокомпьютера: Debian 8
  2. Подключение к локальной сети и доступ к интернет

Подготовку SD-карты и установку ОС я описывать не буду (этого хватает в сети), ровно как и подключение к консоли управления мини-пк, все делается при помощи программы PuTTY. Отмечу лишь что карточка должна быть не менее 8 gb, я пробовал с 4, но система не смогла установить необходимые пакеты, сославшись на недостаток места.

И так пирог подключен к локальной сети, к нему по USB через контроллер зацеплен HDD, двойным проводом, один из которых, отведенный на дополнительное питание, подключен к зарядному устройству, вместе с мини-пк. Запускаем все это, и подключаемся по сети через PuTTY.

Установка FTP сервера

Первым делом нужно обновить систему, как обычно две команды:

sudo apt-get update

sudo apt-get upgrade

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

sudo apt-get install vsftpd

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

Настройка доступа к FTP

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

sudo nano /etc/vsftpd.conf

Для начала отключу доступ анонимных пользователей, заменяем значение YES на NO в соответствующем параметре:

anonymous_enable=NO

Теперь дадим локальным пользователям доступ к их корневым каталогам, для этого нужно убрать знак комментария «#» с соответствующего параметра

local_enable=YES

Дам доступ на запись:

write_enable=YES

Можно так же выставить настройку отображения скрытых файлов:

force_dot_files=YES

Настрою «активный» режим FTP, это позволит избежать некоторых трудностей, и проброса дополнительных портов на роутере. Если этого не сделать, сервер будет доступен только в локальной сети. Дописываем следующие строки:

connect_from_port_20=YES

pasv_enable=NO

В случае необходимости «пассивного» режима, указываем следующие строки:

connect_from_port_20=NO
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=65536

min и max порты указываются на свое усмотрение, но их так-же нужно пробросить на роутере, вместе со стандартными 20 и 21 tcp-портами для FTP.

Закрываем файл и сохраняем изменения: Ctrl+X, Y и Enter

Теперь нужно дать доступ суперпользователю, открываем файл настройки пользователей:

sudo nano /etc/ftpusers

Это список пользователей, которые не используются сервером, закомментируем суперпользователя знаком #

#root

Выходим с сохранением. Перезапускаем FTP-сервер:

sudo service vsftpd restart

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

Подготовка HDD для хранилища

Для начала HDD необходимо отформатировать. В первую очередь, хотелось использовать разметку NTFS, но Debian упорно отказывалась записывать файлы на диск, как будто не хватало прав пользователя. В инструкции по форматированию разделов под Linux, которую я использовал в дальнейшем, не было NTFS в принципе, предлагалось лишь FAT, FAT32 и Ext3. FAT не подходят в виду ограниченности размера хранимых файлов, до 4 Gb. Ext3 не распознается в Windows подобных ос, в дальнейшем подключить HDD к десктопному ПК, и поработать с файлами не получится. Но тем не менее, Ext3 превосходит FAT, по этому выбор очевиден.

Все операции производим из под учетной записи root. И так приступим, узнаем название подключенного диска:

fdisk -l

Команда вывела список носителей, в моем случае это /dev/sdb1. Если необходимо, то размонтируем его командой umount. Форматируем в Ext3:

mkfs.ext3 -L «USB-HDD» /dev/sdb1

Значение в скобках, это будущее название HDD.

Подключение и настройка диска

Я создал пустой каталог для монтирования диска, под названием FTP:

mkdir FTP

Надо не просто примонтировать, а сделать это автоматическим действием при старте системы. Для этого нужно открыть файл:

sudo nano /etc/fstab

И добавить строку следующего плана:

UUID=ИМЯ-ДИСКА /root/FTP auto nosuid,nodev,nofail 0 0

Вместо имя диска, нужно указать значение UUID, его можно узнать следующей командой:

blkid /dev/sdb1

Консоль отобразит информацию запрашиваемого диска, находим нужное значение, которое уже можно подставить в строку с монтированием. Закрываем и сохраняем настройки в /etc/fstab.

В заключении

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

ftp://192.168.1.22

В моем случае. Сервер работает в активном режиме, по этому для доступа из Windows, нужно убрать галочку с «использовать пассивный режим» в настройках Internet Explorer. И на запрос авторизации ввести root и пароль от него. Это приведет в корневой каталог, где  будет папка FTP и примонтированный к ней HDD. Работает такая конфигурация очень приятно, на подходе тесты с «тяжелыми» файлам, думаю все будет в порядке, так как на данный момент все отлично функционирует.

Продолжение темы: Добавление нового пользователя

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

adduser FTP-User -force-badname

Обязательно установил пароль. Он автоматически получает доступ к своему домашнему каталогу /home/FTP-User там я создаю рабочую папку c именем FTP.

mkdir /home/FTP-User/FTP

Не забывайте про регистр символов в именах, в Linux он важен, так FTP и ftp — разные каталоги.

Добавлю автопритмонтирование диска к папке, открываю файл fstab на редактирование:

sudo nano /etc/fstab

Закомментирую прошлую запись загрузки символом #, и пропишу новую:

UUID=ИМЯ-ДИСКА /home/FTP-User/FTP auto nosuid,nodev,nofail 0 0

ИМЯ-ДИСКА то-же, что и в прошлой записи соответственно. Перезагружаю систему.

После старта, иду в каталог cd /home/FTP-User/FTP, и даю права на чтение и запись для содержимого папки:

chmod -R 777 *

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

Свежие комментарии

admin Автор:

2 Comments

  1. 20.06.2018
    Reply

    To log in, fill in the IP of your Raspberry Pi, your user ID and port 21 (default port of the FTP protocol). You can now transfer all your files between your computer and your Raspberry Pi

    • admin
      admin
      21.06.2018
      Reply

      Quite right.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

code