Мобильные устройства на Android сегодня способны выполнять роль «карманного» сетевого узла хранения данных. Termux позволяет развернуть полноценные сервисы обмена файлами: Samba для совместимости с Windows/macOS, NFS для сценариев в локальной сети Linux и WebDAV для доступа из браузера/клиентов. В этой статье мы соберём автономный сетевой файловый сервер на базе Termux и добавим аутентификацию через LDAP, чтобы доступ к ресурсам был централизованным и управляемым.
Материал ориентирован на работу в вашей локальной сети. Перед публикацией сервиса наружу обеспечьте корректную сетевую изоляцию, права и безопасность. Вся настройка ниже предполагает соблюдение требований действующего законодательства РФ и условий вашей локальной сети.
Архитектура решения
- Termux: среда выполнения и пакетный менеджер (pkg).
- Хранилище: директории в файловой системе Android (обычно доступ к внешнему хранилищу предоставляется через соответствующие разрешения).
- Сервисы:
- Samba (SMB/CIFS) — удобен для Windows.
- NFS — удобен для Linux.
- WebDAV — удобен для браузеров и мобильных клиентов.
- LDAP: единая база учётных записей для аутентификации.
Для практичности мы рассмотрим схему, где LDAP используется для сопоставления пользователя и выдачи доступа. Точный вариант интеграции зависит от выбранных компонентов и способа хранения «разрешений» на файловые ресурсы. На практике часто сочетают LDAP для идентификации и локальные правила файловой системы для авторизации.
Подготовка Termux
Убедитесь, что у вашего устройства есть стабильный доступ к сети (Wi‑Fi), корректные разрешения на файловый доступ и достаточно места. Далее — установка базовых пакетов.
pkg update
pkg upgrade -y
pkg install -y proot tar coreutils openssh termux-api curl wget sed awk grep procps nano
Далее установим компоненты для сетевых сервисов. Важно: состав пакетов и их имена могут отличаться в зависимости от версии Termux и репозиториев.
pkg install -y samba samba-ad-dc nfs-utils wdfs-tools davfs2
Если пакет для NFS или WebDAV недоступен в вашем окружении, обычно используют альтернативные реализации (например, отдельный сервер WebDAV на базе Python/Node или развертывание nginx/caddy при наличии). Ниже приведён универсальный подход: вначале поднимаем Samba и готовим базовую схему, затем NFS и WebDAV.
Выбор и подготовка директорий
Создайте структуру каталогов под общие ресурсы. Для примера используем корневой путь /data/storage (в зависимости от версии Android доступ может отличаться). На практике удобнее заранее определить рабочий путь.
mkdir -p $HOME/storage/share
mkdir -p $HOME/storage/share/public
mkdir -p $HOME/storage/share/secure
Задайте права так, чтобы серверные процессы могли читать/писать в нужных местах. На Android права и владельцы могут вести себя нестандартно из-за особенностей песочницы. Поэтому ориентируйтесь на фактическую возможность чтения/записи от имени процессов.
chmod -R 0770 $HOME/storage/share
Развёртывание Samba (SMB/CIFS)
Настройка Samba включает создание конфигурационного файла, задание секций [global] и ресурсов. Для автономного сервера логично определить рабочую группу, NetBIOS-имя и права на шаринги.
Создайте конфигурацию Samba:
mkdir -p $HOME/etc/samba
nano $HOME/etc/samba/smb.conf
Пример конфигурации:
[global]
workgroup = WORKGROUP
server string = Termux File Server
security = user
map to guest = Bad User
log file = $HOME/var/log/samba/%m.log
max log size = 50
printcap name = /dev/null
load printers = no
# Разделение доступа лучше делать через файловые права и корректное сопоставление пользователей
# LDAP интеграцию рассматриваем ниже как часть логики идентификации.
[public]
path = $HOME/storage/share/public
browseable = yes
writable = yes
guest ok = no
valid users = @ldap-users
[secure]
path = $HOME/storage/share/secure
browseable = yes
writable = yes
guest ok = no
valid users = @ldap-users
Создайте пользователей и группу-контейнер для сопоставления. Если вы используете LDAP, группа может быть виртуальной по смыслу. В базовом варианте подготовьте локальные пользователи (или псевдополитику), а LDAP используйте для верификации пароля и сопоставления идентичности.
Создание локальной группы:
groupadd ldap-users || true
И локальных учёток (пример):
useradd -m -G ldap-users user1 2>/dev/null || true
passwd user1
Запуск Samba:
mkdir -p $HOME/var/log/samba
smbd -D -s $HOME/etc/samba/smb.conf
Проверка порта (при необходимости):
ss -tulpn | grep -E ':(139|445)' || true
Интеграция LDAP-аутентификации: практический подход
LDAP можно использовать для централизованной проверки логина/пароля и получения атрибутов пользователя. На практике в Linux/Unix обычно применяют NSS/PAM (например, SSSD или libnss-ldap + libpam-ldap). Однако в Termux среда не всегда поддерживает классическую системную интеграцию так, как полноценная дистрибуция. Поэтому самый устойчивый подход для Termux — организовать:
- Аутентификацию через LDAP на уровне прокси/обвязки или приложения.
- Авторизацию через файловые права и сопоставление пользователей/групп.
- Унификацию: одна и та же логика LDAP должна применяться для SMB/NFS/WebDAV (в рамках возможностей вашей сборки).
Чтобы не усложнять до уровня «полноценного AD DC», чаще выбирают схему: LDAP подтверждает личность, а дальше запрос мапится на локальные учётные записи или группы, которые реально используются в политике доступа файловой системы.
NFS: экспорт ресурсов в локальную сеть
NFS чаще всего используется в Linux-клиентах. Мы экспортируем каталоги public и secure с правами, соответствующими требованиям.
Создайте файл экспорта:
nano $HOME/etc/exports
Пример:
$HOME/storage/share/public (rw,sync,no_subtree_check,no_root_squash)
$HOME/storage/share/secure (rw,sync,no_subtree_check)
В реальном проекте лучше ограничивать IP-клиенты и использовать root_squash (или вовсе запрет суперпользователя) для снижения рисков. Также важно учитывать, что NFS в зависимости от версии требует согласования версий протокола и параметров маппинга UID/GID.
Подготовка служб NFS в Termux может потребовать дополнительных шагов (например, запуск rpcbind). Если ваша сборка NFS работает нестандартно, ориентируйтесь на фактическую доступность демонов.
Попробуйте старт:
rpcbind -w & 2>/dev/null || true
exportfs -ra 2>/dev/null || true
rpc.nfsd 2 2>/dev/null || true
Проверка активных портов NFS:
ss -tulpn | grep -E '(:2049)' || true
Для LDAP-аутентификации в NFS обычно используется не LDAP напрямую, а согласование UID/GID (например, через nss_ldap на клиенте). Если ваши клиенты поддерживают LDAP через NSS/PAM, то маппинг будет корректным. В серверной части для Termux это зависит от поддержки NSS. Поэтому для надёжности рекомендуется:
- либо использовать локальный маппинг UID/GID для пользователей, которые имеют доступ;
- либо настроить клиентов так, чтобы UID/GID соответствовали LDAP;
- либо применять дополнительные уровни аутентификации (которые выходят за рамки «чистой» NFS модели).
WebDAV: доступ через браузер и клиенты
WebDAV удобен тем, что доступен большинству клиентов: подключение как сетевого диска, управление файлами в браузере (с соответствующими расширениями), мобильные приложения.
Для WebDAV в Termux практичен вариант на базе встроенного Python HTTP сервера, если он доступен, или отдельного легковесного сервера. Рассмотрим рабочий подход: используем wsgidav (WebDAV server для Python) — он поддерживает авторизацию и легко встраивается в вашу схему.
Установка:
pkg install -y python
pip install --upgrade pip
pip install wsgidav
Конфиг WebDAV:
mkdir -p $HOME/etc/wsgidav
nano $HOME/etc/wsgidav/config.ini
Пример конфигурации с базовыми настройками (в части LDAP будет сделан акцент на сопоставление через провайдер аутентификации; конкретные реализации зависят от версии wsgidav и доступных модулей):
[global]
port = 8080
host = 0.0.0.0
provider_mapping = /public=$HOME/storage/share/public, /secure=$HOME/storage/share/secure
verbose = 1
# Настройка авторизации через модуль провайдера (тут зависит от того, какой механизм LDAP вы применяете)
# Обычно реализуют проверку пользователя/пароля через LDAP и выдачу прав по группам.
# placeholder для логики: вместо прямого LDAP можно маппить на локальный список разрешённых.
auth_method = basic
Запуск:
wsgidav --host 0.0.0.0 --port 8080 --config $HOME/etc/wsgidav/config.ini
Если вы хотите полноценную LDAP-аутентификацию именно для WebDAV, ключевой момент — использовать авторизационный бэкенд, который умеет проверять учётку через LDAP. В Termux это обычно делается через кастомный authentication handler (в Python) или через внешний слой, который умеет LDAP.
Важно: не храните LDAP-пароли и секреты в открытом виде в конфиге. Используйте переменные окружения или защищённое хранилище (в пределах возможностей Android/Termux).
Сетевая публикация в локальной сети и изоляция
Сервис должен быть доступен в вашей локальной сети. Если вы используете VPN, используйте его только для создания локальной сети (не для обхода блокировок). Примерно это выглядит так: устройствам выдается доступ к одному L2/L3 сегменту, а маршрутизация и правила фаервола остаются в рамках вашей инфраструктуры.
Для Termux-подсистем проверьте, что доступны необходимые порты:
- SMB: обычно
445(и иногда139) - NFS: обычно
2049+ вспомогательные RPC порты (зависят от реализации) - WebDAV:
8080(пример)
Рекомендация по безопасности: ограничьте источники доступа по IP и используйте строгие права на файловые каталоги.
Логирование, мониторинг и обслуживание
Чтобы администрирование не превратилось в «угадывание причин», включите логирование и регулярно проверяйте:
- логи Samba (
log fileв конфиге) - логи WebDAV (консоль/файл)
- наличие ошибок маппинга UID/GID для NFS
Постарайтесь завести автоматический старт сервисов после перезапуска Termux/устройства (например, через скрипт запуска в Termux). Учитывайте, что автозапуск на Android может требовать дополнительных настроек.
Практические проверки с клиентов
После запуска проверьте доступ:
- Windows/macOS для Samba: доступ к \server\public или добавление сетевого расположения.
- Linux для NFS: команда монтирования с корректными параметрами.
- Браузер для WebDAV:
http://server:8080/public.
Пример монтирования NFS на клиенте Linux (адаптируйте под вашу сеть/параметры):
sudo mount -t nfs -o vers=4 server_ip:/path/to/public /mnt/public
Заключение
Автономный файловый сервер на базе Termux способен закрыть множество задач: от привычного SMB-доступа до интеграции WebDAV для удобной работы из браузера. Добавление LDAP-аутентификации позволяет централизованно управлять доступом, а правильная настройка прав на файловой системе — обеспечить реальную авторизацию. При этом важно помнить про особенности Termux и Android: часть классических Linux-интеграций (NSS/PAM) может потребовать адаптаций, поэтому выбирайте прагматичную схему сопоставления пользователей и строго ограничивайте доступ в локальной сети.
Нужна помощь с подбором компонентов под вашу версию Termux/Android, безопасной схемой LDAP и настройкой совместимости клиентов? Обратитесь в РыбинскЛАБ: мы поможем спроектировать и внедрить рабочий стек файловых сервисов под ваши условия эксплуатации.