
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
В итоге все пользователи локальной сети получают доступ к общей директории. При необходимости можно создать персонализированные директории и настроить права доступа. В моём случае это не требуется.
Ссылки
Комментарии (24)
AuToMaton
08.02.2025 15:07Не надо таких статей, ну пожалуйста. У Стругацких такое было - при вставлении трёх пальцев в отверстия, машина… типа того. Зачем на Хабре весёлые анекдоты при нулевом проникновении в существо дела?
Начнём с того, что незачем перезапускать самбу если потом собираешься лезть в файл конфигурации, страшно бьёт такое по глазам… И что есть стоковый SMB как не галлюцинация нейронки, возможно биологической? И никто уже лет пять минимум самбу вот так прям через конфиги не настраивает - file manager - properties - shared. User Shares магия называется.
На EndeavourOS с яблочными устройствами типа iPad, причём как актуальных версий так и винтажных, проблем нет. Подавался бы тот же материал не как про яблочное и самбу, а под этим углом только лень разбираться удерживает меня от криков про чушь собачью, а как именно анекдот в стиле у Убунты ещё и самба кривая - я бы принял с восторгом.
Блин, забыл позитив… Так вот, совет. Хотите что-то понять - начинайте с Arch Wiki.
AndrewDram Автор
08.02.2025 15:07Не надо таких статей, ну пожалуйста.
Обожаю эту категорию комментов) Почему не надо? Разве мало новичков, которые столкнулись с подобной проблемой и смогут найти решение на Хабре? Вы хотите обособленный междусобойчик для пары сотен «трушных админов» или полноценное русскоязычное сообщество с материалами для разных уровней квалификации?
незачем перезапускать самбу если потом собираешься лезть в файл конфигурации
Тут согласен, смысла нет, но и криминала не вижу.
И никто уже лет пять минимум самбу вот так прям через конфиги не настраивает
Получается обнуляем счетчик, я на прошлой неделе настроил.
Блин, забыл позитив… Так вот, совет. Хотите что-то понять - начинайте с Arch Wiki.
За ссылку спасибо - источник хороший.
asatost
08.02.2025 15:07Почему не надо?
Потому что в целом статья не структурирована, решение вызывает как минимум вопрос: "зачем было этим заниматься изначально?", обращение к серверу по IP.
протоколом SMB при работе с macOS и iOS-устройствами
И зачем тут SMB?
sudo chmod -R 777 /mnt/nas/shared sudo chown -R nobody:nogroup /mnt/nas/shared
Особенно, с такими правами.
Все клиенты Unix-based, NFS в "железных" NAS включается обычно соседней галкой с SMB, в любом Linux ставится точно также, а настраивается под Ваш случай ровно одной строкой в /etc/exports.
AndrewDram Автор
08.02.2025 15:07Цель стати проста - рассказать, что есть такой модуль Fruit решающий конфликты APFS и SMB при работе с не железным NAS. А какие там права у директорий значения не имеет вовсе, это просто подводка к теме.
asatost
08.02.2025 15:07рассказать, что есть такой модуль Fruit решающий конфликты APFS и SMB
Хорошо.
это просто подводка к теме
И как эта подводка подводит нас к "рассказать, что есть такой модуль Fruit"?
Давайте сравним с подводкой: у меня есть домашняя сеть в которой есть устройства под управлением Windows, MacOS и iOS. Я установил сервер на Samba, настроил общую папку, с устройств на Windows и MacOS всё работает, а с iOS не хочет.
Сразу становится понятно, почему Вы возитесь с самбой вместо nfs не так ли?
А отсутствующий в принципе фрагмент про права на папки оставляет больше резерва внимания на подключение и настройку модуля Fruit. Вы же именно с ним хотели читателя познакомить? ;)AndrewDram Автор
08.02.2025 15:07Ок ок ок, согласен, пример хороший) теперь все читатели смогут понять в чем была задумка заглянув в комментарии если к них возникнут вопросы.
13werwolf13
08.02.2025 15:07в целом с вами полностью согласен, за исключением этого:
И никто уже лет пять минимум самбу вот так прям через конфиги не настраивает - file manager - properties - shared. User Shares магия называется.
у вас что на всех серверах графическое окружение стоит? или вы ради пары самбашар какой нибудь webmin накатываете? это какой-то оверинженеринг..
LexD1
08.02.2025 15:07Выше уже накидали, но по поводу
И никто уже лет пять минимум самбу вот так прям через конфиги не настраивает
не могу не добавить: именно через конфиги настраивал SAMBA в октябре 2023-го, т.е. менее пяти лет прошло. Вполне возможно, что придётся также настраивать и в этом году.
И касательно этой претензии в целом: а почему, собственно, нет? Для меня, предположим, имеет значение результат, а каким образом я его добился, зависит уже от моих способностей\познаний (либо отсутствия таковых).
А эту книгу Стругацких я помню. Уж как заточено. И под что.
Ziptar
08.02.2025 15:07А эту книгу Стругацких я помню. Уж как заточено. И под что.
Мне прям интересно под что. А то там есть место для многозначных интерпретаций, знаете ли.
Ziptar
08.02.2025 15:07И никто уже лет пять минимум самбу вот так прям через конфиги не настраивает - file manager - properties - shared.
А меня коробит от концепции "linux server с gui"
AuToMaton
08.02.2025 15:07Отвечу сюда, ибо просто молчать не вежливо.
сервер бывает разный, на одном из флангов - домашний
по жизни куда ни сунься - всё ненужное рано или поздно понадобится
в статье ясно история с Убунты начинается - куда прёте со своим админским опытом?
Ziptar
08.02.2025 15:07сервер бывает разный, на одном из флангов - домашний
Так это самое, виртуалки. Где надо серверные функции - виртуалка с линупсом без гуя, где надо десктоп - виртуалка с гуём (с виндой в моём случае)
по жизни куда ни сунься - всё ненужное рано или поздно понадобится
Я то не против, я отреагировал на категоричное заявление о том, что уже никто лет пять... ;)
в статье ясно история с Убунты начинается - куда прёте со своим админским опытом?
Не знаю, у меня с убунтой не срослось никогда и ни разу. Десктопом я её пробовал когда там был этот юнити чудовищный, а под серверные нужны я дебиан использую - хотя бы потому, что доков и мануалов полно под него. Я то ненастоящий админ.
isden
08.02.2025 15:07Интересно. У меня несколько лет уже работает совершенно дефолтная самба (добавил в конфиг только шары), и с ios все норм. В шарах вот так:
read only = no browsable = yes valid users = <users> guest ok = no writable = yes
Плюс явно указал `create mode` и `directory mode`.
AndrewDram Автор
08.02.2025 15:07А с кириллицей и тегами тоже нет проблем?
isden
08.02.2025 15:07Интересно...
С кириллицей проблем нет. Тэги на макоси ставятся, но на ios не показываются. Я так понимаю, на всех не нативных файловых системах они должны писаться в файлы
._*
.Но вот с сабжем проблема. Я давно не писал в шары с ios. Сейчас проверил - все шары в RO. Видимо в каком-то апдейте сломалось.
LexD1
Пару лет назад пришлось по [...] возиться с smb.conf — не хотел подключаться один из СХД. Для Линукс достаточно было дописать в [global]:
client min protocol = NT1
client max protocol = SMB3
Цельной статьи по этому поводу найти почему-то не смог, нашёл в одном из комментариев на reddit.
Тема подобная то ли мало кому интересна, то ли все всё об этом знают. Мне же достаточно часто (при смене ОС, машины) приходится настраивать доступ к СХД.
Полезно, хоть и поздно.
AndrewDram Автор
У меня сложилось такое же ощущение. Но решил оставить гайд для таких, как мы. Надеюсь, кому-то поможет.
NikaLapka
тот случай, когда поиск в гугле работает быстрее и найденный результат более краткий и чёткий, https://apple.stackexchange.com/questions/424681/the-operation-couldnt-be-completed-operation-canceled-error-message-when-sa/424682#424682
LexD1
Замечательно. Хотелось бы ссылку по конфигурации smb на Linux для подключения СХД от разных производителей и сильно разного года производства.
durnoy
Интересно, что это был за сервер, который мог только SMB1 (aka NT1, aka CIFS)?
В принципе, SMB1 заслуженно по умолчанию уже никто и не поддерживает, мне кажется. Должно быть старое устройство или система.
LexD1
Seagate BlackArmor NAS. Device Capacity: 1863GB. Год приобретения: 2010.
И почему был? До сих пор есть и используется по назначению.
durnoy
На сайте Seagate про BlackArmor пишут CIFS и NFS. Интернет говорит, что NFSv3. Для домашнего (да и не только) использования NFSv3 вполне себе, а вот только SMB1 немного неожиданно. Например, в Windows 10 он по умолчанию выключен. В свежих Linux smb client тоже, вроде. Какой бы клиент ни взять, придется настраивать что-то.
LexD1
Вот честно, не понимаю в этом совершенно ничего (и даже меньше). Сеть домашняя — пара ноутбуков, пара СХД через коммутатор. В Windows попроще, всё в GUI, в Linux тыкал, тыкал и натыкал. Работает и ладно.
Уже не помню как там было в Windows 7, в Windows 10 просто повключал нужные службы.