Samba — различия между версиями

Материал из Rosalab Wiki
Перейти к: навигация, поиск
(не показано 11 промежуточных версий 1 участника)
Строка 11: Строка 11:
 
В статье описывается создание лабораторной установки, состоящей из 1 сервера и 1 клиента, находящихся в одной подсети 192.168.122.0/24.
 
В статье описывается создание лабораторной установки, состоящей из 1 сервера и 1 клиента, находящихся в одной подсети 192.168.122.0/24.
  
Все приведенные конольные команды выполняютс яот кoot, если не указано иное. Вход в root-коноль выполняется командой
+
Все приведенные консольные команды выполняются от root, если не указано иное. Вход в root-коноль выполняется командой
 
   su -
 
   su -
 
или
 
или
 
   sudo -i
 
   sudo -i
 +
 +
В качестве образа ОС для развертывания контроллера домена Samba AD можно взять:
 +
* для виртуальных машин и железа: мини-сервер rosa2019.1 (https://abf.io/platforms/rosa2019.1/products/279)
 +
* для контейнеров (systemd-nspawn, lxc и др.): rootfs rosa2019.1 (https://abf.io/platforms/rosa2019.1/products/284)
 +
По адресу https://abf.io/platforms/rosa2019.1/products имеются иные сборки, в т.ч. для ARMv8 (aarch64).
  
 
== Настройка контроллера домена ==
 
== Настройка контроллера домена ==
Строка 24: Строка 29:
 
Установите полноквалифицированное (FQDN) доменное имя, состоящее из: имя_хоста.домен.зона, например:
 
Установите полноквалифицированное (FQDN) доменное имя, состоящее из: имя_хоста.домен.зона, например:
 
   server1.samba.loc
 
   server1.samba.loc
Тогда именем хостам будет server1, доменом — samba, доменной зоной — loc, realm — samba.loc.
+
Тогда именем хоста будет server1, доменом — samba, доменной зоной — loc, realm — samba.loc.
  
 
Избегайте использования зоны .local или выключите или перенастройте Avahi, чтобы использовать ее.
 
Избегайте использования зоны .local или выключите или перенастройте Avahi, чтобы использовать ее.
Строка 65: Строка 70:
 
   ping -c3 server1
 
   ping -c3 server1
 
проверьте корректность записей в /etc/hosts.
 
проверьте корректность записей в /etc/hosts.
 +
 +
Обратите внимание, что сеть должна запускаться до входа пользователя в систему, если используется WiFi, то настройте его соответствующим образом.
  
 
=== Запуск контроллера домена ===
 
=== Запуск контроллера домена ===
Строка 107: Строка 114:
 
</pre>
 
</pre>
 
На последнем шаге вводится пароль доменного пользователя Administrator, при вводе пароль не отображается, пароль должен быть сложным.   
 
На последнем шаге вводится пароль доменного пользователя Administrator, при вводе пароль не отображается, пароль должен быть сложным.   
DNS Forwarder — это адрес сервера, к которому перенаправляются DNS-запросу, на которые сам контроллер домена не может ответить, например, запрос DNS yandex.ru будет направлен в него. Убедитесь, что этот сервер способен выдать DNS требуемого домена:
+
DNS Forwarder — это адрес сервера, к которому перенаправляются DNS-запросу, на которые сам контроллер домена не может ответить, например, запрос DNS yandex.ru будет направлен в него.
  nslookup yandex.ru 192.168.122.1
+
Возможно, стоит указать 8.8.8.8 или иной сервер. После первоначальной настройки его можно заменить в файле
+
  /etc/samba/smb.conf
+
  
 
Сделайте
 
Сделайте
Строка 121: Строка 125:
 
И посмотрите его лог, убедитесь, что он запустился без ошибок:
 
И посмотрите его лог, убедитесь, что он запустился без ошибок:
 
   systemctl status samba
 
   systemctl status samba
 +
 +
Статус службы должен быть "active" ("запущена"), но в конце лога может быть "ошибка":
 +
  dnsupdate_nameupdate_done: Failed DNS update with exit code 29
 +
 +
Это нормально. Убедимся в этом, запустив:
 +
  samba_dnsupdate --verbose
 +
В подробном логе будет сказано про ошибки "WERR_DNS_ERROR_RECORD_ALREADY_EXISTS", которые означают, что добавляемая запись DNS уже существует. Она была создана при создании домена. Запись "Failed update of 29 entries" означает, что такая ситуация возникла 29 раз, а это количество раз и стало кодом возврата samba_dnsupdate.
 +
 +
Проверьте работу DNS-сервера, на другом компьютере, например, будущем клиенте домена, выполнив:
 +
  nslookup server1.samba.loc 192.168.122.12
 +
(подставьте свои адреса). Пример успешного ответа:
 +
<pre>
 +
$ nslookup server1.samba.loc 192.168.122.12
 +
Server:        192.168.122.12
 +
Address:        192.168.122.12#53
 +
 +
Name:  server1.samba.loc
 +
Address: 192.168.122.12
 +
</pre>
  
 
Для настройки клиентов будет полезно знать рабочую группу NT, ее можно узнать так:
 
Для настройки клиентов будет полезно знать рабочую группу NT, ее можно узнать так:
Строка 127: Строка 150:
 
workgroup = SAMBA
 
workgroup = SAMBA
 
</pre>
 
</pre>
 +
 +
Убедитесь, что этот сервер способен выдать DNS требуемого домена, выполнив на будущем '''клиенте''' домена (не на контроллере):
 +
  nslookup yandex.ru 192.168.122.1
 +
Возможно, стоит указать 8.8.8.8 или иной сервер. После первоначальной настройки контроллера его можно заменить в файле
 +
  /etc/samba/smb.conf
 +
перезапустив контроллер после изменения настроек командой
 +
  systemctl restart samba
 +
 +
== Ввод ROSA-клиента в домен ==
 +
=== Настройка сети на Linux-клиенте ===
 +
 +
На клиенте необходимо:
 +
* добавить адрес контроллера домена в DNS-серверы
 +
* добавить REALM (samba.loc в примере выше) в список доменов поиска
 +
 +
Для настройки через GUI NetworkManager откройте настройки сетевого соединения, вкладку "IPv4". К DNS-серверам добавьте адрес контролера домена, в примере выше это 192.168.122.12. В "Домены поиска" добавьте realm — samba.loc. Ниже приведен скриншот с образцом заполнения настроек.<br>
 +
[[File:Ipa-client1.png]]
 +
 +
В rosa2019.05, rosa2019.1 и новее имеется интерактивный консольный интерфейс nmtui для редактирования настроек NetworkManager. Также имеется утилита nmcli.
 +
 +
Утилиты NetworkManager редактируют файл /etc/resolv.conf. Если у вас не используется NetworkManager, то можно отредактировать этот файл напрямую, написав в нем:
 +
<pre>
 +
nameserver 192.168.122.12
 +
search samba.loc
 +
</pre>
 +
 +
Командой
 +
  ping server1
 +
проверьте сетевую доступность контроллера домена.
 +
 +
=== Подключение компьютера с ОС ROSA к домену ===
 +
 +
Установите необходимые пакеты. Для rosa2019.x:
 +
  dnf install drakxtools samba-server samba-client samba-winbind nss_ldap libnss-role pam_krb5 lib64sasl2-plug-gssapi urpmi perl-URPM
 +
Для rosa2016.1:
 +
  urpmi drakxtools samba-server samba-client samba-winbind nss_ldap libnss-role pam_krb5 lib64sasl2-plug-gssapi
 +
 +
Запустите утилиту drakauth:
 +
  drakauth
 +
Если установлена переменная окружения $DISPLAY, запустится графическая утилита, иначе псевдографическая.
 +
 +
Выберите способ аутентификации «Домен Windows»<br>
 +
[[File:DeepinScreenshot_выберите-область_20201009145252.png]]
 +
 +
Выберите тип домена Active Directory<br>
 +
[[File:DeepinScreenshot_выберите-область_20201009145300.png]]
 +
 +
В предлагаемой лабораторной установке и большинстве типовых конфигураций все необходимые параметры должны оказаться автоматически заполнены правильно на следующем шаге. Проверьте значения.<br>
 +
[[File:DeepinScreenshot_выберите-область_20201009145613.png]]
 +
 +
Укажите желаемое имя Netbios. Поле "Описание компьютера" заполнять не обязательно.<br>
 +
[[File:DeepinScreenshot_выберите-область_20201009145326.png]]
 +
 +
Нажмите "Далее". В случае успешного ввода в домен будет предложено перезагрузить систему.
 +
 +
[[Категория:ROSA Enterprise Linux Server]]

Версия 23:49, 2 марта 2021

Введение и терминология

В этой статье описано создание домена — централизированного хранилища пользователей и их аттрибутов.

Контроллер домена — программное оебспечение, обеспечивающее создание и функционирование сервера домена. В данном случае в качестве контроллера домена используется samba.

AD — Active Directory — домен разработки Microsoft. Samba реализует Samba AD — совместимый с Microsoft Active Directory домен, в который можно вводить и Linux, и Windows-клиенты.

Клиент — конечный член домена или ПО, позволяющее обспечить членство в домене.

В статье описывается создание лабораторной установки, состоящей из 1 сервера и 1 клиента, находящихся в одной подсети 192.168.122.0/24.

Все приведенные консольные команды выполняются от root, если не указано иное. Вход в root-коноль выполняется командой

 su -

или

 sudo -i

В качестве образа ОС для развертывания контроллера домена Samba AD можно взять:

По адресу https://abf.io/platforms/rosa2019.1/products имеются иные сборки, в т.ч. для ARMv8 (aarch64).

Настройка контроллера домена

Настройка сети

Важно правильно настроить сеть на клиенте и сервере. Рассмотрим настройку сети на сервере.

Установите полноквалифицированное (FQDN) доменное имя, состоящее из: имя_хоста.домен.зона, например:

 server1.samba.loc

Тогда именем хоста будет server1, доменом — samba, доменной зоной — loc, realm — samba.loc.

Избегайте использования зоны .local или выключите или перенастройте Avahi, чтобы использовать ее.

Установим имя хоста на контроллере домена:

 hostnamectl set-hostname server1.samba.loc

Посмотрите 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 необходимо добавить строку вида:

 192.168.122.12 server1.samba.loc server1

Как видите, необходимо, чтобы и FQDN, и краткое имя резолвились в IP-адрес контроллера домена. Для этого откройте файл к консольном редакторе:

 nano /etc/hosts

добавьте указанную строку, сохраните сочетанием клавиш Ctrl+O, Enter, затем закройте консольный редактор сочетанием клавиш Ctrl+X.

Командами

 ping -c3 server1.samba.loc
 ping -c3 server1

проверьте корректность записей в /etc/hosts.

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

Запуск контроллера домена

Установите необходимые для работы пакеты. На ROSA 2019.1 (>= R12) и rosa2019.05:

 dnf install samba-server /bin/ps /usr/bin/xargs /usr/bin/nslookup

На ROSA 2016.1 (R11):

 urpmi samba-server procps-ng findutils bind-utils

Отключите лишние службы из состава набора программ samba:

 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}

Если эта команда ничего не выдала, то это нормально: у вас не было баз данных от прошлых запусков контроллера домена.

Запустите интерактивную настройку домена:

 samba-tool domain provision --use-rfc2307 --interactive

Ниже приведем ее типовой вывод. В квадратных вкобках ([]) указывается значение по умолчанию, нажимайте Enter, чтобы с ним согласиться, или введите иное значение. Если сеть и имя хоста были настроены верны, то значения по умолчанию не должно потребоваться изменить.

[root@server1 ~]# samba-tool domain provision --use-rfc2307 --interactive
Realm [SAMBA.LOC]:  
Domain [SAMBA]:  
Server Role (dc, member, standalone) [dc]:  
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:  
DNS forwarder IP address (write 'none' to disable forwarding) [192.168.122.1]:  
Administrator password: 
Retype password:

На последнем шаге вводится пароль доменного пользователя Administrator, при вводе пароль не отображается, пароль должен быть сложным. DNS Forwarder — это адрес сервера, к которому перенаправляются DNS-запросу, на которые сам контроллер домена не может ответить, например, запрос DNS yandex.ru будет направлен в него.

Сделайте

 mv -v /var/lib/samba/private/krb5.conf /etc/krb5.conf

Теперь добавьте службу контроллера домена в автозапуск:

 systemctl enable samba

Запустите контроллер домена:

 systemctl restart samba

И посмотрите его лог, убедитесь, что он запустился без ошибок:

 systemctl status samba

Статус службы должен быть "active" ("запущена"), но в конце лога может быть "ошибка":

 dnsupdate_nameupdate_done: Failed DNS update with exit code 29

Это нормально. Убедимся в этом, запустив:

 samba_dnsupdate --verbose

В подробном логе будет сказано про ошибки "WERR_DNS_ERROR_RECORD_ALREADY_EXISTS", которые означают, что добавляемая запись DNS уже существует. Она была создана при создании домена. Запись "Failed update of 29 entries" означает, что такая ситуация возникла 29 раз, а это количество раз и стало кодом возврата samba_dnsupdate.

Проверьте работу DNS-сервера, на другом компьютере, например, будущем клиенте домена, выполнив:

 nslookup server1.samba.loc 192.168.122.12

(подставьте свои адреса). Пример успешного ответа:

$ nslookup server1.samba.loc 192.168.122.12
Server:         192.168.122.12
Address:        192.168.122.12#53

Name:   server1.samba.loc
Address: 192.168.122.12

Для настройки клиентов будет полезно знать рабочую группу NT, ее можно узнать так:

[root@server1 ~]# cat /etc/samba/smb.conf | grep workgroup
	workgroup = SAMBA

Убедитесь, что этот сервер способен выдать DNS требуемого домена, выполнив на будущем клиенте домена (не на контроллере):

 nslookup yandex.ru 192.168.122.1

Возможно, стоит указать 8.8.8.8 или иной сервер. После первоначальной настройки контроллера его можно заменить в файле

 /etc/samba/smb.conf

перезапустив контроллер после изменения настроек командой

 systemctl restart samba

Ввод ROSA-клиента в домен

Настройка сети на Linux-клиенте

На клиенте необходимо:

  • добавить адрес контроллера домена в DNS-серверы
  • добавить REALM (samba.loc в примере выше) в список доменов поиска

Для настройки через GUI NetworkManager откройте настройки сетевого соединения, вкладку "IPv4". К DNS-серверам добавьте адрес контролера домена, в примере выше это 192.168.122.12. В "Домены поиска" добавьте realm — samba.loc. Ниже приведен скриншот с образцом заполнения настроек.
Ipa-client1.png

В rosa2019.05, rosa2019.1 и новее имеется интерактивный консольный интерфейс nmtui для редактирования настроек NetworkManager. Также имеется утилита nmcli.

Утилиты NetworkManager редактируют файл /etc/resolv.conf. Если у вас не используется NetworkManager, то можно отредактировать этот файл напрямую, написав в нем:

nameserver 192.168.122.12
search samba.loc

Командой

 ping server1

проверьте сетевую доступность контроллера домена.

Подключение компьютера с ОС ROSA к домену

Установите необходимые пакеты. Для rosa2019.x:

 dnf install drakxtools samba-server samba-client samba-winbind nss_ldap libnss-role pam_krb5 lib64sasl2-plug-gssapi urpmi perl-URPM

Для rosa2016.1:

 urpmi drakxtools samba-server samba-client samba-winbind nss_ldap libnss-role pam_krb5 lib64sasl2-plug-gssapi

Запустите утилиту drakauth:

 drakauth

Если установлена переменная окружения $DISPLAY, запустится графическая утилита, иначе псевдографическая.

Выберите способ аутентификации «Домен Windows»
DeepinScreenshot выберите-область 20201009145252.png

Выберите тип домена Active Directory
DeepinScreenshot выберите-область 20201009145300.png

В предлагаемой лабораторной установке и большинстве типовых конфигураций все необходимые параметры должны оказаться автоматически заполнены правильно на следующем шаге. Проверьте значения.
DeepinScreenshot выберите-область 20201009145613.png

Укажите желаемое имя Netbios. Поле "Описание компьютера" заполнять не обязательно.
DeepinScreenshot выберите-область 20201009145326.png

Нажмите "Далее". В случае успешного ввода в домен будет предложено перезагрузить систему.