Вы находитесь в режиме поиска по сайту.
6
августа
2020
10:36

Передача больших файлов со смартфона на ПК под Linux

6 августа 2020 10:36

Задача: загрузить фотографии по Wi-Fi со смартфона на персональный компьютер под управлением Linux.

К сожалению, решение передачи файлов с помощью программы ShareIt не подходит - нет клиента для Linux, есть лишь эмуляция.
Вариант с "облаками" (disk.yandex.ru, Диск Google, Облако Mail.ru) не рассматривал по причине накладных расходов - передача на сторонний сервер через Интернет, а затем загрузка с него же. Bluetooth не подходит - слишком медленный. Выбрал проверенный вариант с FTP.

Порядок действий:

  1. на компьютере поднял FTP сервер proftpd:
    • sudo apt-get install proftpd
    • изменил (sudo nano /etc/proftpd.conf) конфигурационный файл ProFTPd следующим образом:

Include /etc/proftpd/modules.conf
UseIPv6 off
IdentLookups off
ServerName "имя_моего_компьютера"
ServerType standalone
DeferWelcome off

MultilineRFC2228 on
DefaultServer on
ShowSymlinks off

TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200

DisplayLogin welcome.msg
DisplayChdir .message true
ListOptions "-l"

DefaultRoot /home/vladimir/ftp #имя корневого каталога ftp

<Directory /home/vladimir/ftp> # корневой каталог ftp
Umask 022 022
AllowOverwrite off
<Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD>
DenyAll
</Limit>
</Directory>

<Directory> /home/vladimir/ftp/upload/> # подкаталог "upload" - для записи, чтения, удаления
Umask 022 022
AllowOverwrite on
<Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD>
AllowAll
</Limit>
</Directory>

AllowStoreRestart on

Port 21 # стандартный порт, но можно изменить его на свой

<IfModule mod_dynmasq.c>
</IfModule>

MaxInstances 8

User proftpd
Group nogroup

Umask 022 022
AllowOverwrite on

TransferLog /var/log/proftpd/xferlog
SystemLog /var/log/proftpd/proftpd.log

<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>

<IfModule mod_ratio.c>
Ratios off
</IfModule>

<IfModule mod_delay.c>
DelayEngine on
</IfModule>

<IfModule mod_ctrls.c>
ControlsEngine off
ControlsMaxClients 2
ControlsLog /var/log/proftpd/controls.log
ControlsInterval 5
ControlsSocket /var/run/proftpd/proftpd.sock
</IfModule>

<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>

<Limit LOGIN>
AllowUser vladimir2 # дополнительный логин для ftp
DenyALL # для остальных вход запрещён
</Limit>

UserAlias ftp vladimir2 # логин ftp как псевдоним пользователя vladimir2

Include /etc/proftpd/conf.d/

  • также, изменил файл shells, добавил nologin
    При выполнении sudo nano /etc/shells добавил последнюю строку

# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/usr/sbin/nologin

  • изменил пароль пользователя ftp
    sudo passwd ftp

  • проверил конфигурацию службы
    sudo /etc/init.d/proftpd check-config

  • запустил службу proftpd:
    sudo /etc/init.d/proftpd start

  • проверил, что подключение к серверу работает
    ftp my_IP-address

ввёл имя плользователя ftp" и и пароль пользователя ftp, вошел в каталог - всё в порядке.

  1. на телефоне под Android установил Файловый менеджер с Google PlayMarket: FileManager.
    Ещё один мощный FTP клиент - AndFTP
  2. оба устройства - ПК и смартфон подключены к одной и той же локальной сети (через Wi-Fi или провод - не важно).
  3. Подключился со смартфона через «Файловый менеджер» - иконка «Удаленные службы» к FTP-серверу по его IP-адресу (ввёл логин и пароль) и передал файлы на компьютер.

Выгрузка файлов с ПК не телефон (добавление от 01.10.2021):

Если в файле конфигурации включить ограничения, передать файлы с ПК на смартфон будет нельзя.
Ограничение чтения и удаления файлов из папки "upload" на FTP выглядит следующим образом:

<Directory /home/vladimir/ftp/upload/>
<Limit READ DELE>
DenyAll
</Limit>

Вначале я использовал данные директивы, но затем удалил из файла proftpd.conf, т.к. часто бывает нужно и загружать с ПК на телефон. Теперь работает и загрузка и выгрузка на FTP.

Решение проблем с доступом - дополнение от 04.10.2021

После подключения по FTP невозможно создать файл или каталог на сервере FTP

Данную проблему встретил в операционной системе Sparky Linux (вариант Debian).

Симптомы:
На ПК под управлением Debian, после подключения к серверу FTP со смартфона невозможно создать ни файл, ни каталог, чтобы выгрузить файлы со смартфона на ПК. При этом FTP-клиент пишет ошибку на экране "Доступ запрещен" или "Файл не найден".

Основные ошибки и решения проблем:
1. Проблемы с путями

  • Проверьте, что пути в файле proftpd.conf к каталогу "public" или "upload" совпадают с реальными путями, названием папок на компьютере пользователя (например, /home/vladimir/ftp/upload и т.д.).

2. Некорректные права доступа (нет права записи и создания)

  • Выполните команду в консоли:
    sudo chmod -R 0775 /home/user/ftp
    где user - имя рабочей папки для учётной записи пользователя. Эта команда означает, что Владелец (Owner) и группа в которую он входит может читать, писать и выполнять файлы в каталогах ftp.

3. Назначение "Владельца" каталога
Проблема встречается в ОС Debain.

  • Выполните команду в терминале:
    sudo chown -R ftp:users /home/user/ftp
    где ftp - учётная запись, под которой работает proftpd, users - группа "все пользователи".

либо, для более сильного ограничения прав:
sudo chown -R user:user /home/user/ftp

Примечание: по умолчанию владелец user:user
где user - Ваше имя пользователя и группа.

При запуске proftpd в Debian с файлом конфигурации от Ubuntu возникает ошибка

Необходимо удалить в конфигурационном файле строку:
IdentLookups off


Ссылки:

Загрузить конфигурационный файл proftpd.conf:
proftpd.conf.zip - Linux Mint
proftpd_debian.zip - Debian

Комментарии: 0


Похожие публикации