Настройка и установка Samba-сервера на Ubuntu 22.04/20.04 для общего доступа к файлам

В этом руководстве мы разберем, как установить и настроить Samba сервер на Ubuntu 22.04/20.04 для организации файлового обмена в локальной сети. Samba представляет собой бесплатное программное обеспечение с открытым исходным кодом, реализующее протокол SMB/CIFS для Unix и Linux, что позволяет осуществлять обмен файлами и печать между системами Unix/Linux, Windows и macOS в пределах локальной сети.

Samba, как правило, устанавливается и функционирует на Linux. Она включает в себя ряд программ, каждая из которых выполняет свои специфические, но взаимосвязанные задачи, среди которых наиболее значимые:

  • smbd: осуществляет поддержку сервиса SMB/CIFS для обмена файлами и организации печати, а также способен выполнять функции контроллера домена Windows.
  • Демон nmbd отвечает за предоставление службы имен NetBIOS и обрабатывает запросы на разрешение имен. Он также обеспечивает возможность другим устройствам в сети находить сервер Samba.

Инструкция по установке Samba-сервера на Ubuntu

Samba присутствует в большинстве Linux-дистрибутивов. Для установки Samba в Ubuntu достаточно выполнить в терминале следующую команду.

sudo apt install samba samba-common-bin

Актуальная стабильная версия — 4.12.0, которая была выпущена 3 марта 2019 года. Для проверки установленной версии Samba, выполните

smbd --version

Version 4.7.6-Ubuntu

Для проверки, активен ли сервис Samba, введите следующую команду.

systemctl status smbd nmbd

Для запуска этих двух сервисов выполните следующую команду:

sudo systemctl start smbd nmbd

После старта smbd начнет принимать соединения на TCP-портах 139 и 445. В то же время nmbd будет работать на UDP-портах 137 и 138.

  • TCP 139: применяется для передачи файлов, организации печати и выполнения различных других действий.
  • TCP 445: порт CIFS без использования NetBIOS.
  • UDP 137: применяется для сетевого обозрения NetBIOS.
  • UDP 138: применяется для службы имен NetBIOS.

Если вы активировали брандмауэр UFW на Ubuntu, необходимо открыть упомянутые порты в брандмауэре, используя следующую команду.

sudo ufw allow samba

Настройка частного доступа через Samba.

В данном разделе мы рассмотрим процесс настройки частного общего доступа Samba, для доступа к которому клиенту потребуется ввести имя пользователя и пароль. Главный файл конфигурации Samba располагается по следующему пути: /etc/samba/smb.conf.Его можно изменить в терминале, используя текстовый редактор командной строки, например, nano.

sudo nano /etc/samba/smb.conf

В разделе [global] проверьте, чтобы значение workgroup соответствовало настройкам рабочей группы на компьютерах с Windows.

workgroup = WORKGROUP

Общий доступ к файлам Samba на Ubuntu

Вы можете найти настройки на вашем компьютере с Windows, перейдя в Панель управления > Система и безопасность > Система.

samba сервер на ubuntu

Пролистайте вниз до самого низа файла. (В текстовом редакторе nano вы можете это сделать, нажав CTRL+W, а затем CTRL+V.) Вставьте новый раздел, как указано ниже.

[Private] comment = требует имя пользователя и пароль для доступа path = /srv/samba/private/ browseable = yes guest ok = no writable = yes valid users = @samba

  • Private — это название папки, которая будет видна в сети Windows.
  • Комментарий представляет собой общее описание папки.
  • Параметр path определяет путь к общей директории. В качестве примера я привожу /srv/samba/private/, но вы можете указать папку в своём домашнем каталоге.
  • browseable = yes: Позволяет другим компьютерам в сети обнаруживать сервер Samba и его общие ресурсы. Если установить значение на no, пользователям потребуется знать имя сервера Samba и вручную вводить путь в файловом менеджере для доступа к общей папке.
  • guest ok = no: Запрещает доступ для гостей. Это означает, что для получения доступа к общей папке на клиентском компьютере необходимо ввести имя пользователя и пароль.
  • writable = yes : Дает клиентам возможность как читать, так и записывать данные.
  • действительные пользователи = @samba: Доступ к данному общему ресурсу Samba предоставляется исключительно участникам группы samba.
Читайте также:  Установка Visual Studio Code на Ubuntu 20.04

Сохраните и закройте документ. (В текстовом редакторе nano для сохранения файла нажмите Ctrl+O, затем подтвердите имя файла, нажав Enter. Чтобы выйти из редактора, используйте Ctrl+X.) Теперь необходимо создать пользователя для Samba. Сначала следует создать обычную учетную запись пользователя в Linux, воспользовавшись следующей командой. Замените username на нужное имя пользователя.

sudo adduser username

Вам будет предложено задать пароль для Unix. Затем необходимо создать отдельный пароль Samba для нового пользователя, используя следующую команду:

sudo smbpasswd - a username

Сформируйте группу samba.

sudo groupadd samba

Добавьте данного пользователя в группу Samba.

sudo gpasswd - a username samba

Создайте директорию для конфиденциального ресурса.

sudo mkdir - p /srv/samba/private/

Группа samba должна обладать правами на чтение, запись и выполнение в общей директории. Для предоставления этих прав выполните следующую команду. (Если команда setfacl отсутствует в вашей системе, установите пакет acl с помощью команды sudo apt install acl.)

sudo setfacl - R - m "g:samba:rwx" /srv/samba/private/

После этого выполните следующую команду для проверки синтаксических ошибок.

testparm

Теперь нужно просто перезапустить демоны smbd и nmbd.

sudo systemctl restart smbd nmbd

Как организовать общую папку Samba без необходимости аутентификации

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

  • В глобальном разделе конфигурационного файла Samba установите параметр security на значение user. Несмотря на возможность создания общей папки с использованием режима security = share, данный режим безопасности является устаревшим. Рекомендуется воздержаться от использования режима share.
  • В глобальном разделе конфигурационного файла Samba установите параметр map to guest = bad user. Это позволит smbd применять учетную запись гостя для аутентификации клиентов, у которых нет зарегистрированной учетной записи на сервере Samba. Благодаря этому, пользователям Samba не потребуется вводить пароль, так как используется учетная запись гостя.
  • Укажите значение guest ok = yes в настройках общего ресурса, чтобы предоставить доступ гостям.
  • Выдайте права на чтение, запись и выполнение для общего ресурса учетной записи nobody, являющейся стандартной учетной записью для гостей.

На самом деле, первые два условия уже соблюдены, так как Samba по умолчанию применяет эти два параметра.

Вот последовательное руководство по созданию общей папки. В начале откройте и внесите изменения в конфигурационный файл Samba.

sudo nano /etc/samba/smb.conf

В разделе [global] проверьте, чтобы значение workgroup соответствовало настройкам рабочей группы на компьютерах с Windows.

workgroup = WORKGROUP

Общий доступ к файлам Samba на Ubuntu

Вы можете найти настройку на вашем компьютере с Windows, перейдя в Панель управления > Система и безопасность > Система.

samba сервер на ubuntu

Прокрутите в самый низ файла и добавьте следующие строки.

[public] comment = общая папка, не нужно вводить имя пользователя и пароль path = /srv/samba/public/ browseable = да writable = да guest ok = да

Сохраните изменения и закройте файл. Затем создайте директорию /srv/samba/public/.

sudo mkdir - p /srv/samba/public

Убедитесь, что учетная запись nobody обладает правами на чтение, запись и выполнение в общей папке, используя следующую команду. (Если в вашей системе отсутствует команда setfacl, установите пакет acl с помощью команды sudo apt install acl.)

Читайте также:  Использование System-Config-Samba на Ubuntu 16.04

sudo setfacl - R - m "u:nobody:rwx" /srv/samba/public/

Перезапустите службы smbd и nmbd.

sudo systemctl restart smbd nmbd

Подключение к общей папке Samba с операционной системой Windows.

На компьютере с операционной системой Windows, который подключен к той же сети, откройте проводник и выберите раздел «Сеть» в левой части окна. Если появится соответствующее сообщение, кликните на него и активируйте функции обнаружения сети и совместного использования файлов.

Общий доступ к файлам отключен. Некоторые сетевые компьютеры и устройства могут быть невидимы.

В адресной строке Проводника введите \ и добавьте IP-адрес Samba-сервера, например: \192.168.0.102. После этого вам откроется список общих ресурсов, доступных на Samba-сервере.

доступ к расшаренной папке Samba из Windows

Далее дважды кликните по общей папке. Чтобы открыть закрытую папку, необходимо ввести учетные данные samba — имя пользователя и пароль. Для доступа к публичной папке вводить их не требуется.

доступ к общей папке Samba с Windows 10

После подключения вы сможете просматривать, создавать и удалять файлы в общей папке Samba.

Ошибка соединения

При получении следующей ошибки:

У вас нет разрешения на доступ к \\hostname\share-name. Обратитесь к администратору сети, чтобы запросить доступ.

Попробуйте подключиться к общей папке Samba через командную строку. Для этого откройте командную строку и выполните следующую команду, чтобы завершить текущую сессию Samba.

net use \\samba-server-ip\share-name /delete

Подключитесь к общей папке Samba, используя следующую команду:

net use \\samba-server-ip\share-name /user:samba-username password

После того как вы выполните указанную команду, откройте вкладку «Сеть» в Проводнике, и у вас появится возможность получить доступ к общей папке Samba.

Подключение накопителя в операционной системе Windows

Операционная система Windows предоставляет возможность сопоставления буквы диска (например, S:) с удаленной папкой. Для того чтобы связать диск S: с общей папкой Samba, щелкните правой кнопкой мыши на нужной общей папке и выберите пункт «Подключить сетевой диск». Затем выберите желаемую букву диска и нажмите «Готово».

сопоставление сетевого диска samba

После настройки сопоставления диска приложения смогут обращаться к файлам в общей папке Samba через диск S:. Эта общая папка будет автоматически подключаться при входе в вашу учетную запись на компьютере с Windows.

Получение доступа к папке Samba Share через файловый менеджер Nautilus в Linux

При использовании файлового менеджера Nautilus нажмите на пункт «Другие местоположения» в левом меню. В нижней части экрана найдите опцию «Подключиться к серверу». Для доступа к общей папке Samba введите smb:// и укажите IP-адрес сервера Samba, затем нажмите Enter. Например:

  • smb://192.168.0.102

Samba-file-share-ubuntu

Вы сможете ознакомиться со списком общих ресурсов на сервере Samba.

Samba-ресурсы

При попытке доступа к закрытой общей папке вам будет необходимо ввести учетные данные Samba, такие как имя пользователя и пароль. Если вы собираетесь открыть общую папку, можете выбрать вариант подключения в качестве анонимного пользователя.

Аутентификация паролем для общих ресурсов Samba.

Если вам отображается данное сообщение об ошибке,

не удалось получить список расшаренных ресурсов с сервера

не удалось получить список общих ресурсов с сервера

Попробуйте устранить эту ошибку, смонтировав Samba-ресурс через командную строку, как описано далее.

Автоматическая настройка монтирования Samba-ресурса через командную строку в Linux.

Примечание: Автоматическое подключение Samba-ресурсов осуществляется на клиентских устройствах. Данные команды следует выполнять на клиенте Samba, если он работает на системе Linux. Не следует проводить эту операцию непосредственно на сервере Samba.

Чтобы автоматически подключать Samba-ресурс при загрузке системы, можно воспользоваться командной строкой для монтирования, а затем внести соответствующую запись в файл /etc/fstab. Для этого необходимо установить пакет cifs-utils.

sudo dnf install cifs-utils

sudo apt install cifs-utils

После этого необходимо установить точку монтирования для ресурса Samba.

sudo mkdir /mnt/samba-private

Теперь вы можете применить данную команду для подключения приватной общей папки.

Читайте также:  Выпущен Ubuntu 14.04 LTS Alpha-1

sudo mount - t cifs - o username=your_samba_username //192.168.0.102/private /mnt/samba-private/

Система попросит вас ввести пароль Samba. После этого ресурс будет подключен в папке /mnt/samba-private/.

Для автоматического монтирования Samba-ресурса необходимо внести изменения в файл /etc/fstab.

sudo nano /etc/fstab

Вставьте указанную строку в файл.

//192.168.0.102/private /mnt/samba-private cifs x-systemd. automount,_netdev, credentials=/etc/samba-credential.conf, uid=1000,gid=1000,x-gvfs-show 0 0

  • //192.168.0.102/private : адрес сервера Samba и название ресурса.
  • /mnt/samba-private : место для монтирования Samba-ресурса.
  • CIFS: разновидность файловой системы
  • Опция x-systemd. automount указывает systemd на создание автоматической единицы для монтирования файловой системы. Это используется для того, чтобы удалённая файловая система подключалась только после того, как будет установлен сетевой доступ.
  • _netdev: Указывает, что для монтирования необходима работающая сеть.
  • Linux должен искать данные для аутентификации в файле /etc/samba-credential.conf.
  • По умолчанию смонтированная файловая система будет принадлежать пользователю root. Чтобы изменить владельца файловой системы, используются параметры uid и gid. Обычно применяются значения uid и gid текущего пользователя, которые стандартно равны 1000.
  • Опция x-gvfs-show позволяет отобразить смонтированную файловую систему в файловом менеджере, если вы работаете в окружении рабочего стола GNOME или его производных.

Сохраните файл и закройте его. Далее создайте файл с учетными данными.

sudo nano /etc/samba-credential.conf

Вставьте в файл приведенные ниже строки.

username=your_samba_username password=samba_password domain=WORKGROUP

Закройте файл после сохранения. Убедитесь, что доступ к файлу для чтения имеет только пользователь root.

sudo chmod 600 /etc/samba-credential.conf

При перезагрузке компьютера с операционной системой Linux Samba-ресурс будет автоматически подключён. Кроме того, вы можете использовать следующую команду для подключения Samba-ресурса без необходимости перезагрузки.

sudo mount - a

Если вы столкнулись с ошибкой доступа и можете обнаружить следующую строку, выполнив команду sudo dmesg,

VFS: cifs_mount failed w/return code = -13

Скорее всего, причина заключается в ошибке ввода в файле /etc/samba-credential.

Не получается записать данные в ресурс Samba?

Монтаж CIFS, упомянутый ранее, дает возможность записывать данные в Samba-ресурс. Если вы сталкиваетесь с данной ошибкой при попытке создать файл:

Файловая система только для чтения

Убедитесь, что в конфигурационном файле Samba значение параметра writable установлено на yes. Иногда общая папка Samba может находиться на внешнем жестком диске, поэтому важно, чтобы внешний жесткий диск был смонтирован в режиме чтения и записи на сервере Samba. Например, я произвел монтирование своего жесткого диска btrfs, добавив соответствующую строку в /etc/fstab.

LABEL=5TB /mnt/5TB btrfs defaults 0 0

Выясняется, что опция defaults не позволяет проводить операции записи. Чтобы активировать возможность записи, необходимо добавить опцию rw.

LABEL=5TB /mnt/5TB btrfs defaults, rw 0 0

После этого отключите жесткий диск. Для этого вам потребуется использовать вашу личную точку монтирования.

sudo umount /mnt/5TB

И установите его обратно.

sudo mount - a

Рекомендации по диагностике проблем

Если ваш сервер Samba функционирует неправильно, вам стоит проверить журналы, находящиеся в каталоге /var/log/samba/. Чтобы записывать больше информации, вы можете добавить следующую строку в раздел [global] файла /etc/samba/smb.conf для увеличения уровня ведения журнала.

log level = 2

Легкий метод улучшения эффективности Samba

Для улучшения сетевой производительности сервера рекомендуется активировать алгоритм TCP BBR.

  • Увеличить скорость работы сети в Ubuntu можно просто, активировав TCP BBR.

Заключение

Вот и всё! Надеюсь, этот урок оказался полезным для настройки сервера Samba на Ubuntu. Если вам понравилась эта статья, не забудьте подписаться на нашу бесплатную рассылку. Также вам может быть интересно ознакомиться с нашей следующей статьей о том, как делиться принтером в локальной сети.

  • Конфигурация сервера печати CUPS на Ubuntu (Bonjour, IPP, Samba, AirPrint)

Чтобы использовать Samba через Интернет, необходимо настроить VPN WireGuard для шифрования протокола SMB/CIFS. WireGuard применяет аутентификацию с открытыми ключами в режиме «равный равному», что позволяет отказаться от парольной аутентификации в Samba, при условии, что брандмауэр настроен так, чтобы разрешать доступ к Samba только клиентам VPN, блокируя все остальные IP-адреса.

  • Создание персонального сервера WireGuard VPN на Ubuntu 22.04/20.04/18.04.

Желаете достичь более высокой производительности? Рассмотрите возможность использования NFS (сетевой файловой системы) вместо Samba.

  • Как настроить NFS для совместного доступа на Ubuntu 20.04 и 18.04