We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Автономный сетевой файловый сервер на базе Termux: настройка Samba, NFS и WebDAV с поддержкой LDAP-аутентификации

Пошаговое руководство по созданию автономного файлового сервера на базе Termux: Samba, NFS и WebDAV, а также интеграция LDAP-аутентификации для управления доступом.

Мобильные устройства на 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 и настройкой совместимости клиентов? Обратитесь в РыбинскЛАБ: мы поможем спроектировать и внедрить рабочий стек файловых сервисов под ваши условия эксплуатации.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен и доработан перед публикацией.

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

Связаться со мной
Поддержать проект