создано при помощи ИИ
создано при помощи ИИ

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)


  1. LexD1
    08.02.2025 15:07

    Пару лет назад пришлось по [...] возиться с smb.conf — не хотел подключаться один из СХД. Для Линукс достаточно было дописать в [global]:

    client min protocol = NT1
    client max protocol = SMB3

    Цельной статьи по этому поводу найти почему-то не смог, нашёл в одном из комментариев на reddit.

    Тема подобная то ли мало кому интересна, то ли все всё об этом знают. Мне же достаточно часто (при смене ОС, машины) приходится настраивать доступ к СХД.

    Полезно, хоть и поздно.


    1. AndrewDram Автор
      08.02.2025 15:07

      Тема подобная то ли мало кому интересна, то ли все всё об этом знают

      У меня сложилось такое же ощущение. Но решил оставить гайд для таких, как мы. Надеюсь, кому-то поможет.


      1. NikaLapka
        08.02.2025 15:07

        тот случай, когда поиск в гугле работает быстрее и найденный результат более краткий и чёткий, https://apple.stackexchange.com/questions/424681/the-operation-couldnt-be-completed-operation-canceled-error-message-when-sa/424682#424682


        1. LexD1
          08.02.2025 15:07

          Замечательно. Хотелось бы ссылку по конфигурации smb на Linux для подключения СХД от разных производителей и сильно разного года производства.


    1. durnoy
      08.02.2025 15:07

      Интересно, что это был за сервер, который мог только SMB1 (aka NT1, aka CIFS)?

      В принципе, SMB1 заслуженно по умолчанию уже никто и не поддерживает, мне кажется. Должно быть старое устройство или система.


      1. LexD1
        08.02.2025 15:07

        что это был за сервер, который мог только SMB1

        Seagate BlackArmor NAS. Device Capacity: 1863GB. Год приобретения: 2010.

        И почему был? До сих пор есть и используется по назначению.


        1. durnoy
          08.02.2025 15:07

          На сайте Seagate про BlackArmor пишут CIFS и NFS. Интернет говорит, что NFSv3. Для домашнего (да и не только) использования NFSv3 вполне себе, а вот только SMB1 немного неожиданно. Например, в Windows 10 он по умолчанию выключен. В свежих Linux smb client тоже, вроде. Какой бы клиент ни взять, придется настраивать что-то.


          1. LexD1
            08.02.2025 15:07

            Вот честно, не понимаю в этом совершенно ничего (и даже меньше). Сеть домашняя — пара ноутбуков, пара СХД через коммутатор. В Windows попроще, всё в GUI, в Linux тыкал, тыкал и натыкал. Работает и ладно.

            Уже не помню как там было в Windows 7, в Windows 10 просто повключал нужные службы.


  1. AuToMaton
    08.02.2025 15:07

    Не надо таких статей, ну пожалуйста. У Стругацких такое было - при вставлении трёх пальцев в отверстия, машина… типа того. Зачем на Хабре весёлые анекдоты при нулевом проникновении в существо дела?

    Начнём с того, что незачем перезапускать самбу если потом собираешься лезть в файл конфигурации, страшно бьёт такое по глазам… И что есть стоковый SMB как не галлюцинация нейронки, возможно биологической? И никто уже лет пять минимум самбу вот так прям через конфиги не настраивает - file manager - properties - shared. User Shares магия называется.

    На EndeavourOS с яблочными устройствами типа iPad, причём как актуальных версий так и винтажных, проблем нет. Подавался бы тот же материал не как про яблочное и самбу, а под этим углом только лень разбираться удерживает меня от криков про чушь собачью, а как именно анекдот в стиле у Убунты ещё и самба кривая - я бы принял с восторгом.

    Блин, забыл позитив… Так вот, совет. Хотите что-то понять - начинайте с Arch Wiki.


    1. AndrewDram Автор
      08.02.2025 15:07

      Не надо таких статей, ну пожалуйста.

      Обожаю эту категорию комментов) Почему не надо? Разве мало новичков, которые столкнулись с подобной проблемой и смогут найти решение на Хабре? Вы хотите обособленный междусобойчик для пары сотен «трушных админов» или полноценное русскоязычное сообщество с материалами для разных уровней квалификации?

      незачем перезапускать самбу если потом собираешься лезть в файл конфигурации

      Тут согласен, смысла нет, но и криминала не вижу.

      И никто уже лет пять минимум самбу вот так прям через конфиги не настраивает

      Получается обнуляем счетчик, я на прошлой неделе настроил.

      Блин, забыл позитив… Так вот, совет. Хотите что-то понять - начинайте с Arch Wiki.

      За ссылку спасибо - источник хороший.


      1. 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.


        1. AndrewDram Автор
          08.02.2025 15:07

          Цель стати проста - рассказать, что есть такой модуль Fruit решающий конфликты APFS и SMB при работе с не железным NAS. А какие там права у директорий значения не имеет вовсе, это просто подводка к теме.


          1. asatost
            08.02.2025 15:07

            рассказать, что есть такой модуль Fruit решающий конфликты APFS и SMB

            Хорошо.

            это просто подводка к теме

            И как эта подводка подводит нас к "рассказать, что есть такой модуль Fruit"?
            Давайте сравним с подводкой: у меня есть домашняя сеть в которой есть устройства под управлением Windows, MacOS и iOS. Я установил сервер на Samba, настроил общую папку, с устройств на Windows и MacOS всё работает, а с iOS не хочет.
            Сразу становится понятно, почему Вы возитесь с самбой вместо nfs не так ли?
            А отсутствующий в принципе фрагмент про права на папки оставляет больше резерва внимания на подключение и настройку модуля Fruit. Вы же именно с ним хотели читателя познакомить? ;)


            1. AndrewDram Автор
              08.02.2025 15:07

              Ок ок ок, согласен, пример хороший) теперь все читатели смогут понять в чем была задумка заглянув в комментарии если к них возникнут вопросы.


    1. 13werwolf13
      08.02.2025 15:07

      в целом с вами полностью согласен, за исключением этого:

      И никто уже лет пять минимум самбу вот так прям через конфиги не настраивает - file manager - properties - shared. User Shares магия называется.

      у вас что на всех серверах графическое окружение стоит? или вы ради пары самбашар какой нибудь webmin накатываете? это какой-то оверинженеринг..


    1. LexD1
      08.02.2025 15:07

      Выше уже накидали, но по поводу

      И никто уже лет пять минимум самбу вот так прям через конфиги не настраивает

      не могу не добавить: именно через конфиги настраивал SAMBA в октябре 2023-го, т.е. менее пяти лет прошло. Вполне возможно, что придётся также настраивать и в этом году.

      И касательно этой претензии в целом: а почему, собственно, нет? Для меня, предположим, имеет значение результат, а каким образом я его добился, зависит уже от моих способностей\познаний (либо отсутствия таковых).

      А эту книгу Стругацких я помню. Уж как заточено. И под что.


      1. Ziptar
        08.02.2025 15:07

        А эту книгу Стругацких я помню. Уж как заточено. И под что.

        Мне прям интересно под что. А то там есть место для многозначных интерпретаций, знаете ли.


    1. Ziptar
      08.02.2025 15:07

      И никто уже лет пять минимум самбу вот так прям через конфиги не настраивает - file manager - properties - shared.

      А меня коробит от концепции "linux server с gui"


      1. AuToMaton
        08.02.2025 15:07

        Отвечу сюда, ибо просто молчать не вежливо.

        • сервер бывает разный, на одном из флангов - домашний

        • по жизни куда ни сунься - всё ненужное рано или поздно понадобится

        • в статье ясно история с Убунты начинается - куда прёте со своим админским опытом?


        1. Ziptar
          08.02.2025 15:07

          сервер бывает разный, на одном из флангов - домашний

          Так это самое, виртуалки. Где надо серверные функции - виртуалка с линупсом без гуя, где надо десктоп - виртуалка с гуём (с виндой в моём случае)

          по жизни куда ни сунься - всё ненужное рано или поздно понадобится

          Я то не против, я отреагировал на категоричное заявление о том, что уже никто лет пять... ;)

          в статье ясно история с Убунты начинается - куда прёте со своим админским опытом?

          Не знаю, у меня с убунтой не срослось никогда и ни разу. Десктопом я её пробовал когда там был этот юнити чудовищный, а под серверные нужны я дебиан использую - хотя бы потому, что доков и мануалов полно под него. Я то ненастоящий админ.


  1. isden
    08.02.2025 15:07

    Интересно. У меня несколько лет уже работает совершенно дефолтная самба (добавил в конфиг только шары), и с ios все норм. В шарах вот так:

        read only = no
        browsable = yes
        valid users = <users>
        guest ok = no
        writable = yes

    Плюс явно указал `create mode` и `directory mode`.


    1. AndrewDram Автор
      08.02.2025 15:07

      А с кириллицей и тегами тоже нет проблем?


      1. isden
        08.02.2025 15:07

        Интересно...

        С кириллицей проблем нет. Тэги на макоси ставятся, но на ios не показываются. Я так понимаю, на всех не нативных файловых системах они должны писаться в файлы ._* .

        Но вот с сабжем проблема. Я давно не писал в шары с ios. Сейчас проверил - все шары в RO. Видимо в каком-то апдейте сломалось.


        1. AndrewDram Автор
          08.02.2025 15:07

          Теперь вы знаете как это победить)