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
В итоге все пользователи локальной сети получают доступ к общей директории. При необходимости можно создать персонализированные директории и настроить права доступа. В моём случае это не требуется.
Ссылки
ссылка на оригинал статьи https://habr.com/ru/articles/880722/
Добавить комментарий