Сервер Samba
Samba представляет собой программный пакет с открытым исходным кодом, дающий сетевым администраторам возможность гибко и свободно настраивать, конфигурировать и выбирать системы и оборудование, то есть устанавливать на компьютерах с UNIX/Linux-подобными ОС имитации устройств с Windows. Это упрощает выполнение задач по обмену файлами (как файл-серверам) или задавать параметры печати в качестве принт-серверов.
Samba обеспечивает свободный доступ к:
- дискам Linux – к Windows-компьютерам;
- дискам Windows – к оборудованию с ПО Linux;
- принтерам Linux – к Windows-компьютерам;
- принтерам Windows – к Linux-системам.
Настройка сети
Для обеспечения работы Samba используются протоколы SMB и CIFS.
В отличие от SMB, CIFS имеет более широкий функционал – этот протокол способен поддерживать символические и жесткие ссылки, а также файлы больших размеров.
Но в настоящее время CIFS почти не используется, так как в последних версиях Windows (начиная с версии 8) используются протоколы SMB2 или SMB3, которые по сути являются обновленной версией CIFS.
В качестве примера ниже описывается создание лабораторной инфраструктуры, состоящей из одного сервера и одного клиента, находящихся в одной подсети 192.168.122.0/24. Все приведенные консольные команды выполняются от пользователя root, если не указано иное.
Важно правильно настроить сеть на клиенте и сервере. В простых случаях, в том числе при поднятии тестовых стендов, необходимо, чтобы клиент и сервер находились в одной подсети. Например, чтобы у ВМ с сервером был IP-адрес 192.168.10.2, а у ВМ с клиентом – 192.168.10.3.
Для настройки сети на сервере необходимо выполнить следующие шаги:
- Установить полное доменное имя (FQDN) в формате <имя_хоста>.<домен>.<зона>, например samba1.rosa.lan.
В этом случае именем хоста будет samba1, доменом – rosa, доменной зоной – lan, realm – rosa.lan.
Следует избегать использования зоны .local, или выключить ее, или перенастроить Avahi, чтобы использовать ее.
Для установки имени хоста на контроллере домена используется команда:
sudo hostnamectl set-hostname samba1.rosa.lan
Посмотреть IP-адрес можно с помощью команды:
/sbin/ip a
Пример вывода:
[root@server1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: host0@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 32:e2:0b:ba:17:c5 brd ff:ff:ff:ff:ff:ff link-
netnsid 0
inet 169.254.212.10/16 brd 169.254.255.255 scope link host0\ valid_lft forever preferred_lft forever
inet 192.168.122.12/24 brd 192.168.122.255 scope global\ dynamic
host0
valid_lft 2577sec preferred_lft 2577sec inet6\ fe80::30e2:bff:feba:17c5/64 scope link valid_lft forever\ preferred_lft forever
В данном примере IPv4-адрес – 192.168.122.12.
- Добавить в файл
/etc/hostsстроку такого вида, чтобы и FQDN, и краткое имя выводились в IP-адрес контроллера домена:
192.168.122.12 samba1.rosa.lan samba1
- Проверить корректность записей в файле
/etc/hostsкомандой:
ping -c3 samba1.rosa.lan ping -c3 samba1
Следует обратить внимание, что сеть должна запускаться до входа пользователя в Систему. Если используется подключение к сети по WiFi, то необходимо настроить его соответствующим образом.
Запуск контроллера домена
Контроллер домена – сервер, управляющий доступом к сетевым ресурсам в рамках одного домена (группы хостов или сетей, которые объединены общими политиками безопасности).
Для запуска контроллера домена нужно выполнить следующие шаги:
- Установить необходимые для работы пакеты:
sudo dnf install samba-server /bin/ps /usr/bin/xargs\ /usr/bin/nslookup
- Отключить лишние службы из состава набора программ Samba, так как их обособленная работа не требуется и будет мешать контроллеру домена:
sudo systemctl disable --now smb nmb winbind
- Убедиться, что они действительно выключены, используя команду, вывод которой должен быть пустым:
ps ax | grep -E "samba|smbd|nmbd|winbindd" | grep -v grep
- Удалить старые файлы настроек, оставив их резервные копии:
mv -v /etc/samba/smb.conf /etc/samba/smb.conf.old mv -v\ /etc/krb5.conf /etc/krb5.conf.old
- Определить старые БД, путь к которым можно узнать командой:
smbd -b | grep -E "LOCKDIR|STATEDIR|CACHEDIR|PRIVATE_DIR"
- Использовать для очистки старых БД команду:
smbd -b | grep -E "LOCKDIR|STATEDIR|CACHEDIR|PRIVATE_DIR" |\ awk
'{print $NF}' | xargs -I'{}' rm -fv '{}'/*.{tdb,ldb}
Если эта команда ничего не выдала, то БД от прошлых запусков контроллера домена не было.
- Отключить службу systemd-resolved на порту 53, которая может препятствовать работе DNS-сервера, встроенного в Samba или основанного на BIND. Чтобы устранить конфликт, необходимо отключить механизм DNS Stub Listener командой:
mkdir -p /etc/systemd/resolved.conf.d
echo -e '[Resolve]\nDNSStubListener=no' >\ /etc/systemd/resolved.conf.d/no53port.conf
sudo systemctl try-restart systemd-resolved
После перезапуска systemd-resolved порт 53 освободится и станет доступен для использования контроллером домена.
- Запустить интерактивную настройку домена:
samba-tool domain provision --use-rfc2307 --interactive
Ниже приведен ее типовой вывод. В квадратных скобках () указывается значение по умолчанию. Следует нажать клавишу Enter, чтобы согласиться с предложенным, или ввести иное значение. Если сеть и имя хоста были настроены верно, то нет необходимости изменять значения по умолчанию:
[root@server1 ~]# samba-tool domain provision --use-rfc2307\ --interactive
Realm [ROSA.LAN]:
Domain [ROSA]:
Server Role (dc, member, standalone) [dc]:
DNS backend (SAMBA_INTERNAL, BIND9_DLZ, BIND9_FLATFILE, NONE) [SAMBA_INTERNAL]:
DNS forwarder IP address (write 'none' to disable forwarding) [192.168.122.1]:
Administrator password:
Retype password:
На последнем шаге необходимо ввести пароль доменного пользователя Administrator; при вводе пароль не отображается; пароль должен быть сложным.
Примечание:
- При выборе типа "DNS backend" рекомендуется использовать BIND9_DLZ, если планируется интеграция с внешним DNS-сервером BIND.
- Использование BIND9_FLATFILE не поддерживается и будет исключено из будущих версий Samba.
Перенаправление
DNS Forwarder – это адрес сервера, к которому перенаправляются DNS-запросы, на которые сам контроллер домена не может ответить, например, запрос DNS yandex.ru будет направлен в него.
Для настройки перенаправления нужно провести следующие действия:
- Выполнить команду:
mv -v /var/lib/samba/private/krb5.conf /etc/krb5.conf
- Добавить службу контроллера домена в автозапуск:
sudo systemctl enable samba
- Запустить контроллер домена:
sudo systemctl restart samba
- Посмотреть лог контроллера домена и убедиться, что он запустился без ошибок:
systemctl status samba
Статус службы должен быть active (запущена), но в конце лога может быть ошибка, например:
dnsupdate_nameupdate_done: Failed DNS update with exit code 29
- Убедиться, что сведения об ошибке не являются критическими, запустив команду:
sudo samba_dnsupdate --verbose
В подробном логе будет запись про ошибки "WERR_DNS_ERROR_RECORD_ALREADY_EXISTS", которые означают, что добавляемая запись DNS уже существует. Она была создана при создании домена. Запись "Failed update of 29 entries" означает, что такая ситуация возникла 29 раз, что и стало кодом возврата samba_dnsupdate.
- Проверить работу DNS-сервера на другом компьютере, например, на будущем клиенте домена, выполнив команду:
nslookup samba1.rosa.lan 192.168.122.12
Для корректного выполнения необходимо подставить в пример реальные IP-адреса.
Пример успешного ответа:
$ nslookup samba1.rosa.lan 192.168.122.12
Server: 192.168.122.12
Address: 192.168.122.12#53
Name: samba1.rosa.lan
Address: 192.168.122.12
Для настройки клиентов будет полезно знать рабочую группу NT с помощью команды:
[root@server1 ~]# cat /etc/samba/smb.conf | grep workgroup =\ SAMBA
Следует убедиться, что этот сервер способен выдать DNS требуемого домена, выполнив на будущем клиенте домена (не на контроллере) команду, например:
nslookup yandex.ru 192.168.122.1
После первоначальной настройки контроллера его можно заменить в файле /etc/samba/smb.conf, перезапустив контроллер после изменения настроек командой:
sudo systemctl restart samba
После успешной настройки контроллера домена рекомендуется создать хотя бы одного пользователя домена. Это позволит проверить корректность функционирования службы аутентификации и в дальнейшем использовать учётные записи для входа клиентов в домен.
Для создания нового пользователя следует выполнить следующую команду:
samba-tool user create <имя_пользователя>
Пример:
samba-tool user create IvanovVP
После ввода команды будет запрошен пароль для новой учётной записи. Пароль должен соответствовать установленной политике безопасности и быть достаточно сложным.
Использование внешнего DNS-сервера BIND
Контроллер домена Samba может использовать встроенный механизм обработки DNS-запросов (SAMBA_INTERNAL) или быть настроен для работы с внешним DNS-сервером BIND. В ряде случаев рекомендуется использовать BIND с поддержкой DLZ-модуля.
Для начала необходимо установить пакет bind:
sudo dnf install bind
По умолчанию служба BIND настроена на прослушивание только интерфейса loopback (127.0.0.1). Чтобы разрешить обработку запросов на всех сетевых интерфейсах, следует изменить конфигурацию:
sudo sed -i '/listen-on\|allow-query/ s|{.\+}|{ any; }|' /etc/named.conf
Затем необходимо включить использование DLZ-модуля:
echo 'include "/var/lib/samba/bind-dns/named.conf";' >> /etc/named.conf
Служба systemd-resolved может занимать порт 53, используемый DNS-сервером BIND. Чтобы устранить конфликт, необходимо отключить DNS Stub Listener:
mkdir -p /etc/systemd/resolved.conf.d
echo -e '[Resolve]\nDNSStubListener=no' > /etc/systemd/resolved.conf.d/no53port.conf
sudo systemctl try-restart systemd-resolved
Запуск службы BIND
Для того чтобы добавить BIND в автозагрузку и запустить службу, используется команда:
sudo systemctl enable --now named
Для проверки статуса службы:
systemctl status named
В ходе выполнения команды samba-tool domain provision необходимо выбрать тип DNS-сервера, при этом:
- при использовании BIND следует указать BIND9_DLZ в качестве типа DNS backend.
- не рекомендуется использовать BIND9_FLATFILE, так как он не поддерживается и будет удалён в будущих версиях Samba.
Подключение клиента ROSA к домену
Для полноценной работы доменной инфраструктуры необходимо подключить клиентскую машину с ОС РОСА "ХРОМ" к созданному домену. Это позволяет пользователям аутентифицироваться через контроллер домена, а также использовать единые политики безопасности.
Для настройки сети на клиенте следует:
- убедиться, что клиент находится в одной подсети с контроллером домена и имеет доступ к нему по сети;
- добавить IP-адрес контроллера домена в список DNS-серверов;
- добавить имя домена (realm) в список доменов поиска одним из следующих способов:
- через графический интерфейс утилиты NetworkManager необходимо перейти в "Параметры системы ⟶ блок "Сеть и связь" ⟶ Соединения":
- открыть настройки сетевого подключения;
- перейти во вкладку "IPv4" (рисунок 15);
- в поле "DNS-серверы" указать IP-адрес контроллера домена (например, 192.168.122.12);
- в поле "Домены поиска" указать имя домена (например, samba.loc);
- сохранить изменения;

Рисунок 15 – Настройка сети в графическом интерфейсе утилиты NetworkManager
- через утилиту nmtui или вручную:
- в ROSA 2019.05 и новее можно использовать утилиту nmtui;
- при использовании resolv.conf вручную убедиться, что он не перезаписывается DHCP-клиентом;
- при отсутствии NetworkManager можно вручную отредактировать файл
/etc/resolv.conf, добавив строки:
nameserver 192.168.122.12
search samba.loc
- проверить сетевую доступность контроллера:
ping server1.samba.loc
на клиентской машине установить следующие пакеты:
sudo dnf install drakxtools samba-server samba-client samba-winbind nss_ldap libnss-role pam_krb5 lib64sasl2-plug-gssapi urpmi perl-URPM
Для подключения к домену с помощью drakauth необходимо:
- запустить утилиту
drakauthкомандой:
drakauth
Если переменная окружения $DISPLAY установлена, откроется графический интерфейс, в противном случае будет доступен псевдографический режим;
- выбрать способ аутентификации – "Домен Windows" (рисунок 16);

Рисунок 16 – Выбор способа аутентификации в графическом интерфейсе drakauth
- указать тип домена — "Active Directory" (рисунок 17);

Рисунок 17 – Выбор типа домена в графическом интерфейсе drakauth
- убедиться, что поля домена и сервера заполнены автоматически (рисунок 18). При необходимости внести корректировки;

Рисунок 18 – Проверка параметров конфигурации в графическом интерфейсе drakauth
- указать имя NetBIOS, например client1; поле "Описание компьютера" заполнять необязательно (рисунок 19);

Рисунок 19 – Добавление описания для домена в графическом интерфейсе drakauth
- ввести логин и пароль администратора домена (рисунок 20);

Рисунок 20 – Назначение логина и пароля для администратора домена в графическом интерфейсе drakauth
В случае успешного ввода в домен будет предложено перезагрузить Систему; в случае возникновения ошибок при подключении домена на экран будет выведено соответствующее окно с сообщением и предложением проверить установленные настройки;
- после перезагрузки можно проверить подключение командой:
wbinfo -u
Команда должна отобразить список доменных пользователей. Также можно проверить вход в Систему под доменной учётной записью.