Понадобилось моей жене сохранить изображения и видеозаписи, сделанные с помощью её телефона, вне этого самого телефона — на жёсткий диск. Так как компьютер в квартире только один, да и тот мой, встала задача: насколько возможно упростить как саму передачу, так и просмотр, удаление файлов. Нужно это было для того, чтобы жена могла это делать самостоятельно и, желательно, со своего телефона. Ведь я не особо хочу сам этим периодически заниматься, а уж тем более не хочется передавать управление своим ПК для этих нужд, ведь тогда не получится играть в игры и смотреть ютубчик после работки.

Было найдено решение достаточно простое: поднять FTP-сервер и с помощью FTP-клиента передавать файлы с iPhone на компьютер. Но со своей спецификой: мне хотелось это сделать как можно проще для себя, поэтому инструкция не универсальна.

Локальный FTP-сервер в Filezilla

Создать пользователя для подключения по FTP в Linux

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

# useradd -m ИМЯ_ПОЛЬЗОВАТЕЛЯ -p ПАРОЛЬ

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

# cd /home/ИМЯ_ПОЛЬЗОВАТЕЛЯ/
# rm -rf .bash_history .bashrc .bash_profile

После подключения к сервису пользователь будет видеть свою домашнюю папку, соответственно, загруженные файлы будут находиться по пути /home/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.

FTP-сервер на Linux для передачи данных с iPhone

В качестве сервера я выбрал vsftpd, он очень простой и его конфигурация под мои нужды минимальна. Устанавливаем демон в ArchLinux:

# pacman -S vsftpd

Или Ubuntu/Debian:

# apt-get install vsftpd

Конфигурационный файл /etc/vsftpd.conf у меня получился такой:

# запрещаем подключения для анонимных пользователей
anonymous_enable=NO
# разрешаем подключения для пользователей системы
# (для подключения мы создали пользователя ранее)
local_enable=YES
# разрешаем запись
write_enable=YES
# не пишем логи
xferlog_enable=NO
# ограничиваем область видимости для локальных
# пользователей их домашней директорией, чтобы они не могли
# исследовать всю файловую систему
chroot_local_user=YES
chroot_list_enable=YES
allow_writeable_chroot=YES
# в этом файле храниться список пользователей,
# для которых актуально ограничение
chroot_list_file=/etc/vsftpd.chroot_list

# разрешаем логин только для пользователей, перечисленных в файле
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.user_list

# ждём подключения по IPv4
listen=YES
# как вариант, можно ждать подключения по IPv6
# listen_ipv6=YES
# но, к сожалению, не одновременно

# нужно для работы демона в systemd
pam_service_name=vsftpd
# https://ozi-blog.ru/vsftpd-failed-to-retrieve-directory-listing/
seccomp_sandbox=NO

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

Добавим нашего пользователя в файлы, указанные в конфигурационном:

# echo ИМЯ_ПОЛЬЗОВАТЕЛЯ > etc/vsftpd.chroot_list
# echo ИМЯ_ПОЛЬЗОВАТЕЛЯ > /etc/vsftpd.user_list

Теперь можно запустить FTP-сервер для передачи данных с iPhone:

# systemctl start vsftpd

И проверить, всё ли запустилось:

# systemctl status vsftpd

Должна быть зелёненькая строка статуса, примерно как на изображении ниже.

systemctl статус active демона vsftpd

Если всё хорошо, то вводим в консоле:

# ifconfig

Узнаём свой ip-адрес и пытаемся локально подключиться через FTP-клиент, к примеру, FileZilla, используя имя пользователя и пароль, созданные ранее. Если, опять же, всё хорошо, то включаем vsftpd для автозагрузки:

# systemctl enable vsftpd

Если же по какой-то причине у вас не получается запустить vsftpd, то я бы посоветовал откатить конфигурационный файл, переустановив пакет (бекапа же мы не сделали). Затем, добавляя по одной-две строчки в /etc/vsftpd.conf, пробовать его перезапускать и проверять статус:

# systemctl restart vsftpd
# systemctl status vsftpd

FTP-клиент для iPhone

Настройка FTP-сервера для передачи данных с iPhone у меня заняла где-то 30 минут. Ещё часа 2 я искал FTP-клиент. Лучше даже не пробовать вводить в App Store запрос «FTP client», там или всё платное (а я парень хозяйственный, и такое не подходит), или не рабочее, или позволяет только скачать файлы, но не загружать их.

Рекомендую зайти немного с другого конца и поискать файловый менеджер с поддержкой FTP. Я вот нашёл ES File Explorer — он позволяет сохранить FTP-сервер для переподключений, просматривать, скачивать, загружать и удалять с него файлы. Но это случилось только после двух часов мучений и заигрываний с всевозможными FTP-клиентами. Вполне вероятно, есть файловый менеджер и лучше, просто я до него не дошёл.

Как это работает

  1. Настраиваете видимость устройств в своём роутере. В идеале, все видят всех. Я уже делал это когда-то для модема MT-PON-AT-4 от ByFly. Тут для каждого роутера своя инструкция, в моём текущем, к примеру, всё работает из коробки.
  2. Подключаете компьютер к сети роутера, скорее всего это уже сделано. Узнаёте ip-адрес компьютера с помощью команды ifconfig (советую назначить для MAC-адреса сетевой карты компьютера постоянный ip-адрес).
  3. Подключаете телефон к Wi-Fi сети роутера.
  4. Открываете FTP-клиент на iPhone и подключаетесь к серверу, указав ip-адрес, имя пользователя и пароль, полученные/назначенные ранее.
  5. Скачиваете/загружаете/удаляете файлы на своём FTP-сервере и жёстком диске через телефон.

Навигация по записям