Конфигурация Samba-сервера на CentOS 8/RHEL 8 для файлового обмена

В данном пособии мы рассмотрим процесс установки и настройки Samba-сервера на CentOS 8/RHEL8 для обмена файлами в локальной сети. Samba представляет собой бесплатную и открытую реализацию протокола SMB/CIFS для систем Unix и Linux, которая обеспечивает возможность совместного использования файлов и печати между устройствами на Linux, Windows и macOS в локальной сети.

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

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

Установка Samba-сервера на CentOS 8/RHEL 8.

Samba предустановлена во многих дистрибутивах Linux. Для установки Samba на CentOS 8 или RHEL 8 используйте следующую команду в терминале.

sudo dnf install samba

Чтобы узнать версию Samba, выполните следующую команду:

smbd --version

Версия 4.10.4

После этого выполните следующую команду для запуска служб smbd и nmbd.

sudo systemctl start smb nmb

Активируйте автозапуск при старте системы.

sudo systemctl enable smb nmb

Для проверки функционирования службы Samba выполните следующие команды.

systemctl status smb nmb

После запуска службы SMB она будет принимать запросы на TCP-портах 139 и 445. Служба NMBD будет осуществлять прослушивание на UDP-портах 137 и 138.

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

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

В данной статье будет применяться стандартное название рабочей группы в Windows.

workgroup = WORKGROUP

Настоятельно рекомендуется применять параметр hosts allow для формирования белого списка IP-адресов, что поможет избежать несанкционированного доступа. Включите следующую строку в раздел [global], чтобы разрешить локальному хосту и клиентам из сети 192.168.0.0/24 доступ к службам Samba. Если ваш диапазон сети отличается, замените 192.168.0 на нужные значения.

hosts allow = 127. 192.168.0

Совет: также возможно применять нотацию CIDR для указания сетевого диапазона, к примеру, hosts allow = 127.0.0.1 192.168.0.0/24.

Прокрутите страницу до самого низа файла. (В редакторе 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.
Читайте также:  Задать максимальную глубину поиска в Linux

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

sudo adduser username

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

sudo smbpasswd - a username

Организуйте коллектив для игры на самбе.

sudo groupadd samba

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

sudo gpasswd - a username samba

Создайте каталог для личного общего ресурса.

sudo mkdir - p /srv/samba/private/

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

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

Кроме того, необходимо установить для этого каталога метку samba_share_t, чтобы SELinux разрешил Samba доступ к чтению и записи в него.

sudo chcon - t samba_share_t /srv/samba/private/ - R

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

testparm

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

sudo systemctl restart smb nmb

Создание общей папки Samba без необходимости аутентификации.

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

  • В глобальной секции конфигурационного файла Samba задайте значение security равным user.
  • В глобальном разделе конфигурационного файла Samba задайте значение map для пользователя «гость» как «плохой пользователь». Это позволит процессу smbd использовать учетную запись гостя для аутентификации клиентов, не имеющих зарегистрированной учетной записи на сервере Samba. Поскольку речь идет об учетной записи гостя, клиентам Samba не потребуется вводить пароль.
  • Настройте параметр guest ok = yes в конфигурации общего доступа, чтобы разрешить доступ пользователям без учетной записи.
  • Дайте учетной записи nobody, являющейся стандартной для гостей, разрешения на чтение, запись и выполнение в общедоступной папке.
Читайте также:  Два метода обновления Ubuntu 22.04 до 22.10 (через графический интерфейс и терминал)

Откройте файл конфигурации Samba для редактирования.

sudo nano /etc/samba/smb.conf

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

workgroup = WORKGROUP

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

samba-centos8-rhel8

Вставьте эту строку в раздел [global].

map to guest = bad user

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

[public] comment = публичный доступ, нет необходимости вводить имя пользователя и пароль path = /srv/samba/public/ browseable = yes writable = yes guest ok = yes

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

sudo mkdir - p /srv/samba/public

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

sudo chmod 777 /srv/samba/public/ - R

Кроме того, необходимо отметить этот каталог как samba_share_t, чтобы SELinux позволял Samba выполнять операции чтения и записи в него.

sudo chcon - t samba_share_t /srv/samba/public/ - R

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

sudo systemctl restart smb nmb

Получение доступа к общей папке 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 позволяет связывать буквы дисков, такие как S:, с удалёнными каталогами. Чтобы установить связь между буквой диска S: и общей папкой Samba, кликните правой кнопкой мыши по папке Samba и выберите опцию «Сопоставить сетевой диск». После этого укажите букву диска и нажмите «Готово».

подключение сетевого диска через samba

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

Читайте также:  Публикация локального хоста в Интернет с использованием PageKite на Ubuntu

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

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

  • smb://192.168.0.102

Samba на CentOS 8

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

samba расшаривания

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

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

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

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

sudo dnf install cifs-utils

sudo apt install cifs-utils

Создайте точку для подключения Samba-ресурса.

sudo mkdir /mnt/samba-private

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

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

  • IP-адрес Samba-сервера: 192.168.0.102, имя сетевого ресурса — private.
  • /mnt/samba-private: директория для монтирования Samba-ресурса.
  • CIFS — это разновидность файловой системы.
  • Опция x-systemd. automount указывает systemd создать юнит для автоматического монтирования файловой системы. Это полезно, так как позволяет монтировать удаленные файловые системы, когда доступ к сети становится доступен.
  • _netdev: Это обозначает, что для монтирования необходима сеть.
  • Система Linux должна осуществлять поиск учетных данных в файле /etc/samba-credential.conf.
  • По умолчанию файловая система, которая была смонтирована, будет находиться в собственности пользователя root. Мы применяем uid и gid для изменения прав собственности на эту файловую систему. Обычно используются ваши личные uid и gid, которые по умолчанию равны 1000.
  • Если вы работаете в среде рабочего стола 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-сервер функционирует не так, как следует, стоит заглянуть в журналы, расположенные в директории /var/log/samba/. Чтобы получить более детальную информацию, можно добавить следующую строку в раздел [global] файла /etc/samba/smb.conf для повышения уровня логирования.

log level = 2

Итог

На этом все! Надеюсь, данный учебник оказался полезным для настройки сервера Samba на CentOS 8/RHEL8. Если вы нашли информацию ценной, не забудьте подписаться на нашу бесплатную рассылку. Также можете ознакомиться со следующей статьей о том, как поделиться принтером в локальной сети.

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