![создано при помощи ИИ создано при помощи ИИ](https://www.pvsm.ru/images/2025/02/08/yablochnyi-SMB-ili-kak-podrujit-Samba-s-iOS.jpg)
Samba — мощный и гибкий инструмент для организации совместного доступа к файлам и принтерам в сетях на базе Windows и Linux (еще и Unix). Будучи открытым решением, оно позволяет строить как домашние серверы, так и корпоративные инфраструктуры.
Как инженер в сфере телеком/IT, я работаю с различными системами и решениями для организации эффективной IT-инфраструктуры. В этом гайде я разберу настройку Samba, и поделюсь опытом реализации pet-проекта NAS/медиа - сервера.
Сегодня расскажу о проблемах с протоколом SMB при работе с macOS и iOS-устройствами и опишу процесс настройки NAS.
Настройка Samba на Ubuntu
Установил на старый ПК Ubuntu Server 24.04.1 LTS.
Установка и настройка Samba
Установил на сервер Samba
sudo apt install samba -y
Создал директорию, которую буду расшаривать, и наделил её "правами всевластия":
sudo mkdir -p /mnt/nas/shared
sudo chmod -R 777 /mnt/nas/shared # знаю, что так не делается, но это pet-проект и доступ только из локалки;
sudo chown -R nobody:nogroup /mnt/nas/shared
После этого перезапустил SMB:
sudo systemctl restart smbd
Далее открыл файл конфигурации:
sudo nano /etc/samba/smb.conf
Добавил новый раздел [shared]
и прописал путь и разрешения:
[shared]
path = /mnt/nas/shared
public = yes
guest ok = yes
browseable = yes
read only = no
writable = yes
force user = nobody
force group = nogroup
create mask = 0777
directory mask = 0777
После этого снова перезапустил SMB и радостно подключился к созданному диску по ip:
sudo systemctl restart smbd
Проблемы с доступом на iOS
Но самое интересное началось позже. При подключении к удалённому серверу с iOS через стоковое приложение "Файлы" я столкнулся с ограничением прав — доступ был только на чтение. При этом на macOS такой проблемы не было. Немного погуглив, я заподозрил, что проблема может быть в несовместимости версий протокола SMB. Хоть и звучит неубедительно (обратную совместимость никто не отменял) — решил проверить.
Я вернулся в конфигурацию smb.conf
и добавил в раздел [global]
следующие настройки:
[global]
security = user
server min protocol = SMB2
server max protocol = SMB3
smb encrypt = auto
ntlm auth = yes
Как и ожидалось, это не помогло
Я ещё несколько дней гуглил, тестировал, менял конфиг — и снова по кругу.
Решение проблемы
Решение оказалось неожиданно простым. Стоковый SMB не очень хорошо дружит с Apple File System (APFS) так как изначально SMB создавался Windows, а у Apple был свой сетевой файловый протокол AFP (на данный момент устаревший).
Для исправления проблем с совместимостью с устройствами Apple необходимо использовать VFS модуль Fruit за который скажем спасибо Ralph Böhme из SerNet. VFS Fruit определяет как хранить метаданные, ресурсные форки и обеспечивает корректную кодировку текста. Ссылку на документацию Samba и VFS Fruit приложил в конце статьи.
Я добавил в [global]
следующие параметры и проблемы с совместимостью были решены.
# Исправление проблем совместимости с macOS/iOS
vfs objects = catia fruit streams_xattr
fruit:metadata = stream
fruit:model = MacSamba
fruit:veto_appledouble = no
fruit:posix_rename = yes
fruit:zero_file_id = yes
fruit:wipe_intentionally_left_blank_rfork = yes
fruit:delete_empty_adfiles = yes
fruit:time machine = yes
В итоге все пользователи локальной сети получают доступ к общей директории. При необходимости можно создать персонализированные директории и настроить права доступа. В моём случае это не требуется.
Ссылки
Автор: AndrewDram