Рекурсивные разрешения папок в TrueNAS Scale: настройка SMB/NFS | AdminWiki
Timeweb Cloud — сервера, Kubernetes, S3, Terraform. Лучшие цены IaaS.
Попробовать

Настройки общей папки с рекурсивными разрешениями в TrueNAS Scale: Полное руководство

16 марта 2026 8 мин. чтения #acl #linux permissions #nfs #smb #truenas scale #настройка прав #общая папка #разрешения рекурсивно

Представь, что ты развернул файловый сервер на TrueNAS Scale, создал общую папку для команды, но новые файлы и подкаталоги наследуют не те права доступа, которые ты ожидал. Или при попытке настроить доступ через SMB или NFS сталкиваешься с ошибками "Permission denied". Давай разберем, как правильно настроить рекурсивные разрешения для общих папок в TrueNAS Scale, чтобы твоя файловая система была одновременно безопасной и удобной.

Что такое рекурсивные разрешения и зачем они нужны?

Рекурсивное применение разрешений — это процесс изменения прав доступа не только для указанного каталога, но и для всех файлов и подкаталогов внутри него. В контексте TrueNAS Scale это критически важно для:

  • Корректной работы SMB/CIFS общих ресурсов в смешанных сетях (Windows/Linux/macOS)
  • Настройки NFS-шаринга для Unix-подобных систем
  • Создания структурированных рабочих пространств с единой политикой доступа
  • Миграции данных между системами с сохранением нужных атрибутов
Важно: TrueNAS Scale основан на Debian Linux и использует стандартные механизмы прав доступа POSIX, расширенные ACL (Access Control Lists). Понимание этих основ — ключ к успешной настройке.

Подготовка: Создание набора данных (Dataset) с правильными ACL

Перед настройкой общей папки нужно правильно создать Dataset — базовую единицу хранения в TrueNAS. От его начальных настроек зависит многое.

Шаг 1: Создание Dataset через веб-интерфейс

  1. Перейди в Storage → Datasets
  2. Выбери родительский пул и нажми Add Dataset
  3. В разделе Advanced Options → Share Type выбери:
Тип доступа Когда использовать Влияние на ACL
Generic Универсальный доступ, смешанные ОС Использует POSIX ACL с расширенными возможностями
SMB Преимущественно Windows-клиенты Включает поддержку Windows ACL (NFSv4)
Apps Для контейнеров и приложений TrueNAS Специальные настройки для изоляции
Внимание: После создания Dataset изменить Share Type без потери данных сложно. Выбирай тип в зависимости от преобладающих клиентов. Для смешанных сред выбирай Generic.

Шаг 2: Настройка базовых разрешений при создании

В том же окне создания Dataset прокрути до Advanced Options → ACL Mode:

Рекомендуемые настройки
ACL Type:            OPEN (для SMB) или PASSTHROUGH (для NFS/смешанного)
ACL Mode:            RESTRICTED (рекомендуется)
Case Sensitivity:    SENSITIVE (если важен регистр в именах)

Настройка рекурсивных разрешений через веб-интерфейс

Метод 1: Редактор ACL (рекомендуемый способ)

  1. Перейди в Storage → Datasets
  2. Найди нужный Dataset, нажми на три точки → Edit Permissions
  3. Выбери Use ACL Manager
  4. В интерфейсе ACL Manager:
Настройки ACL
1. Добавь пользователей/группы через "Add Item"
2. Для каждого элемента задай:
   - Permission: Read/Write/Execute
   - Type: Allow/Deny
   - Flags: File Inherit / Directory Inherit
3. ВАЖНО: Отметь "Apply permissions recursively"
4. Также отметь "Apply permissions to child datasets" если нужно

Флаги наследования (Flags) — это ключ к рекурсивности:

  • File Inherit (f): Правило применяется к новым файлам
  • Directory Inherit (d): Правило применяется к новым каталогам
  • Inherit Only (i): Правило только для наследования (не для текущего каталога)

Метод 2: Через оболочку (Shell) с максимальным контролем

Иногда веб-интерфейс не дает нужной гибкости. Давай подключимся по SSH и настроим всё вручную.

bash
# 1. Подключись к TrueNAS Scale по SSH
ssh admin@truenas.local

# 2. Перейди в корень твоего Dataset
cd /mnt/pool-name/dataset-name

# 3. Просмотр текущих разрешений (ACL)
getfacl .

# 4. Пример: Рекурсивная установка владельца и группы
chown -R appuser:appgroup .

# 5. Пример: Рекурсивная установка базовых прав 755 для каталогов и 644 для файлов
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

# 6. Более продвинутый вариант с setfacl (расширенные ACL)
# Установка рекурсивных ACL для пользователя 'john' с полными правами
setfacl -R -m u:john:rwx .

# 7. Установка наследования: новые файлы получат rw-, новые каталоги rwx
setfacl -R -m d:u:john:rwx .

# 8. Просмотр результата с рекурсией
getfacl -R . | less
Осторожно с флагом -R! Он применяет изменения рекурсивно ко ВСЕМУ содержимому. Сначала протестируй команды на небольшом подкаталоге. Особенно внимательным будь с chown -R в системных директориях.

Интеграция с общими ресурсами (SMB/NFS)

Настройка SMB-шары с рекурсивными правами

  1. Перейди в Sharing → SMBAdd
  2. Выбери созданный Dataset
  3. В Advanced Options обрати внимание на:
Важные параметры SMB
Auxiliary Parameters:  # Дополнительные smb.conf параметры
  force user = appuser           # Все файлы создаются от имени appuser
  force group = appgroup         # Все файлы создаются с группой appgroup
  create mask = 0664             # Права для новых файлов
  directory mask = 0775          # Права для новых каталогов
  inherit permissions = yes      # Наследовать права родителя
  inherit owner = yes            # Наследовать владельца

Настройка NFS-шары

Для NFS важно, чтобы UID/GID пользователей на клиенте совпадали с UID/GID на сервере.

bash
# На клиентской машине (например, Ubuntu)
# 1. Узнай UID пользователя
id -u username  # Например: 1001

# 2. На TrueNAS создай пользователя с таким же UID
# Через веб: Credentials → Local Users → Add
# Или через shell:
sudo midclt call user.create '{
  "username": "remoteuser",
  "full_name": "Remote User",
  "uid": 1001,
  "group": 1001,
  "password": "securepassword"
}'

Типичные проблемы и решения

Проблема 1: Новые файлы не наследуют права

Решение: Проверь флаги наследования в ACL:

bash
# Просмотр ACL с флагами
getfacl dataset-name/

# Должны быть строки типа:
# default:user::rwx
# default:user:john:rwx           # default означает наследование

# Если default-записей нет, добавь их:
setfacl -m d:u:john:rwx dataset-name/

Проблема 2: Windows-клиенты не видят файлы

Решение: Настрой правильного владельца и проверь SMB-параметры:

bash
# 1. Установи владельца, которого знает Windows
chown -R 'DOMAIN\\user' /mnt/pool/dataset

# 2. Или используй force user в SMB-настройках
# force user = windowsuser
# map archive = no    # Отключи атрибут archive для совместимости

Проблема 3: Рекурсивные изменения затрагивают скрытые файлы

Решение: Используй точные команды find:

bash
# Изменить права только для обычных файлов (не скрытых, не системных)
find . -type f -name "*" ! -name ".*" -exec chmod 644 {} \;

# Или исключить определенные каталоги
find . -type f -path "./backup/*" -prune -o -exec chmod 644 {} \;

Автоматизация через задачи (Tasks)

Для поддержания порядка создай периодическую задачу:

  1. Перейди в Tasks → Cron Jobs
  2. Нажми Add
  3. Настрой команду для исправления прав:
config
# Пример команды для Cron
find /mnt/pool/dataset -type d -exec chmod 755 {} \;
find /mnt/pool/dataset -type f -exec chmod 644 {} \;
chown -R appuser:appgroup /mnt/pool/dataset

# Или скрипт с логированием
#!/bin/bash
LOG="/var/log/fix-permissions.log"
echo "$(date): Starting permission fix" >> $LOG
find /mnt/pool/dataset -type d -exec chmod 755 {} \; 2>> $LOG
find /mnt/pool/dataset -type f -exec chmod 644 {} \; 2>> $LOG
echo "$(date): Permission fix completed" >> $LOG
Профессиональный совет: Вместо периодического "исправления" прав лучше правильно настроить наследование при создании Dataset. Крон-задачи — это костыль, а не решение. Используй их только для legacy-систем или особых случаев.

Проверка и мониторинг

После настройки проверь работу:

bash
# 1. Проверь рекурсивные права
find /mnt/pool/dataset -printf "%m %u:%g %p\n" | head -20

# 2. Проверь ACL рекурсивно
getfacl -R /mnt/pool/dataset | grep -E "(user|group):.*:rwx" | head -10

# 3. Создай тестовые файлы и проверь наследование
touch /mnt/pool/dataset/testfile.txt
mkdir /mnt/pool/dataset/testdir
ls -la /mnt/pool/dataset/test*
getfacl /mnt/pool/dataset/testfile.txt

# 4. Проверь доступ с клиента
# Для SMB:
smbclient //truenas/dataset-name -U username
# Для NFS:
showmount -e truenas.local

Правильная настройка рекурсивных разрешений в TrueNAS Scale — это не разовая акция, а процесс. Начни с четкого плана: кто, что и как должен делать с файлами. Настрой ACL с наследованием при создании Dataset. Протестируй на небольшом наборе данных. И только потом масштабируй на рабочие директории. Помни, что безопасность и удобство — это баланс: слишком открытые права приведут к уязвимостям, слишком строгие — к неработоспособности.

TrueNAS Scale дает все инструменты для тонкой настройки. Веб-интерфейс подходит для базовых сценариев, а Shell — для сложных. Главное — понимать, что ты делаешь и зачем. Удачи в настройке!

Поделиться:
Сохранить гайд? В закладки браузера