SambaAD start: различия между версиями

Материал из ALT Linux Wiki
(не показаны 43 промежуточные версии 2 участников)
Строка 1: Строка 1:
{{Note|Обратите внимение, что это не официальная документация, а попытка начинающего админа объяснить материал начинающим админам. Официальная [[SambaDC|'''документация здесь''']].}}
{{Note|Обратите внимание, что это не официальная документация, а попытка начинающего админа объяснить материал начинающим админам. Официальная [[SambaDC|'''документация здесь''']].}}
'''SambaAD(DC)''' - реализация службы каталогов на Samba. В данной статье будет рассмотрена в роли домена.
'''SambaAD(DC)''' - реализация службы каталогов на Samba. В данной статье будет рассмотрена в роли домена.
{{Note|В нашем примере имя домена '''petr.ru'''; имя компьютера '''dc''', вместе с доменом '''dc.petr.ru'''}}
==Установка==
==Установка==
===Настройка статического IP===
Для контроллера домена серверу необходимо присвоить [[Etcnet start|статический IP-адрес]].
===Установка Samba===
Ставим SambaDC:
Ставим SambaDC:
  # apt-get install task-samba-dc
  # apt-get install task-samba-dc
===Очистка конфигурации===
Очищаем конфигурацию:
Очищаем конфигурацию:
  # rm -f /etc/samba/smb.conf
  # rm -f /etc/samba/smb.conf
Строка 9: Строка 18:
  # rm -rf /var/cache/samba
  # rm -rf /var/cache/samba
  # mkdir -p /var/lib/samba/sysvol
  # mkdir -p /var/lib/samba/sysvol
Вводим имя компьютера и домена:
# nano /etc/sysconfig/network


hostname dc.petr.ru
===Присваиваем имя компьютера с будущим именем домена===
domainname petr.ru
Вводим имя компьютера и домена. Вводим команды:
Вводим команды:
  # mcedit /etc/hostname
  # hostname dc.petr.ru
Вводим и сохраняем:
# domainname petr.ru
dc.petr.ru
Создаем домен:
samba-tool domain provision


  Realm [PETR.RU]: //жмем Enter
Перезагружаемся.
  Domain [PETR]: //жмем Enter
 
  Server Role (dc, member, standalone) [dc]: //жмем Enter
==Создание домена==
  DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: //жмем Enter
{{Note|Создаем домен. Т.к. мы начинающие, мы будем использовать встроенный в Samba DNS-бэкенд.}}
  DNS forwarder IP address (write 'none' to disable forwarding) [127.0.0.1]: //тут надо выставить внешний DNS, если он не прописался по-умолчанию, чтобы домен мог разрешать внешние адреса. Например 8.8.8.8.
$ su -
  Administrator password: //Вводим пароль администратора
# samba-tool domain provision
  Retype password: //Повторяем пароль администратора
 
Запускаем службу:
{{Note|Т.к. мы уже указали имя домена, он у нас будет отображаться в мастере}}
  service samba enable
  Realm [PETR.RU]:
service samba start
Жмем Enter
  Domain [PETR]:
Жмем Enter
  Server Role (dc, member, standalone) [dc]:
Оставляем dc, жмем Enter
  DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:
Оставляем Samba internal, жмем Enter.
  DNS forwarder IP address (write 'none' to disable forwarding) [127.0.0.1]:
Тут надо выставить внешний DNS, если он не прописался по-умолчанию, чтобы домен мог разрешать внешние адреса (доступ в интернет). Например 8.8.8.8.
  Administrator password:
Вводим пароль администратора
  Retype password:
Повторяем пароль администратора
 
==Запускаем службу==
  # systemctl enable --now samba


Перезагружаем сервер.
Перезагружаем сервер.


Копируем файл настроек krb5:
==Настраиваем Kerberos==
  cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
При создании домена с помощью мастера, конфиг для Kerberos уже создался. Поэтому мы его просто скопируем из папки Samba в стандартное местоположение.
 
$ su -
  # cp /var/lib/samba/private/krb5.conf /etc/krb5.conf


Правим файл:
==Настраиваем DNS==
  nano /etc/net/ifaces/eth0/resolv.conf
Прописываем IP Samba DC в настройках DNS. Правим файл:
  # mcedit /etc/net/ifaces/eth0/resolv.conf


В строчку nameserver добавляем адрес 127.0.0.1, первым по очередности.
Перед строчкой nameserver добавляем строку nameserver с адресом 127.0.0.1, первую по очередности.


Т.к. Samba использует свой DNS-сервер удаляем bind:
Т.к. мы выбрали DNS-бэкенд Samba, то удалим DNS-сервер bind:
  # apt-get remove bind
  # apt-get remove bind


Выполняем:
Перезапускаем сеть. Выполняем:
  service network restart
  # systemctl restart network


Проверка работоспособности:
==Проверка работоспособности==
 
Выполняем команды:
1)
  # samba-tool domain info 127.0.0.1
  # samba-tool domain info 127.0.0.1
2)
  # smbclient -L localhost -U administrator
  # smbclient -L localhost -U administrator
3)
{{note|Для команды '''host''' должен быть установлен пакет '''bind-utils'''}}
  host petr.ru
  $ host petr.ru
(адрес должен иметь адрес 127.0.0.1)<br>
(адрес должен иметь адрес 127.0.0.1 или свой IP)
4)Проверяем имена хостов:


Если адрес другой, правим '''/etc/net/ifaces/<имя>/resolv.conf''' и первой строчкой пишем следующее:
nameserver 127.0.0.1
и перезапускаем сеть.
# systemctl restart network
==Проверяем имена хостов==
{{note|Для работы '''Kerberos''' должен быть установлен пакет '''krb5-kdc'''}}
адрес '''_kerberos._udp.'''*адрес домена с точкой
адрес '''_kerberos._udp.'''*адрес домена с точкой


Строка 73: Строка 103:
  dc.petr.ru has address 10.0.2.5
  dc.petr.ru has address 10.0.2.5


5)Проверяем Kerberos
==Проверяем Kerberos==
  # kinit administrator
  # kinit administrator
Password for administrator@PETR.RU:
Warning: Your password will expire in 41 days on Чт 29 апр 2021 18:25:49


6)Просмотр полученного билета:
Password for administrator@PETR.RU:
Warning: Your password will expire in 41 days on Чт 29 апр 2021 18:25:49
 
Просмотр полученного билета:
  # klist
  # klist
Источник:[[ActiveDirectory/DC|[i]]]


==Управление пользователями==
==Управление пользователями==


Создать пользователя с паролем[https://wiki.samba.org/index.php/Adding_users_with_samba_tool], :
Создать пользователя с паролем[https://wiki.samba.org/index.php/Adding_users_with_samba_tool], :
  samba-tool user create <имя пользователя>
  # samba-tool user create <имя пользователя>
  samba-tool user setexpiry <имя пользователя>
  # samba-tool user setexpiry <имя пользователя>


Например,  
Например,  
  samba-tool user create ivanov --given-name='Иван Иванов' --mail-address='ivanov@stand.alt'
  # samba-tool user create ivanov --given-name='Иван Иванов' --mail-address='ivanov@stand.alt'


Просмотреть доступных пользователей:
Просмотреть доступных пользователей:
  samba-tool user list
  # samba-tool user list


Удалить пользователя:
Удалить пользователя:
  samba-tool user delete <имя пользователя>
  # samba-tool user delete <имя пользователя>


Отключить пользователя:
Отключить пользователя:
  samba-tool user disable <имя пользователя>
  # samba-tool user disable <имя пользователя>


Включить пользователя:
Включить пользователя:
  samba-tool user enable <имя пользователя>
  # samba-tool user enable <имя пользователя>


Изменить пароль пользователя:
Изменить пароль пользователя:
  samba-tool user setpassword <имя пользователя>
  # samba-tool user setpassword <имя пользователя>


Не забудьте разблокировать пользователя:
Не забудьте разблокировать пользователя:
  samba-tool user setexpiry <имя пользователя> --noexpiry
  # samba-tool user setexpiry <имя пользователя> --noexpiry


{{Attention|Не допускайте одинаковых имён для пользователя и компьютера, это может привести к коллизиям (например, такого пользователя нельзя добавить в группу). [http://support2.microsoft.com/kb/310845]}}
{{Attention|Не допускайте одинаковых имён для пользователя и компьютера, это может привести к коллизиям (например, такого пользователя нельзя добавить в группу). [http://support2.microsoft.com/kb/310845]}}


Если компьютер с таким именем заведён, удалить его можно командой:
Если компьютер с таким именем заведён, удалить его можно командой:
  pdbedit -x -m <имя>
  # pdbedit -x -m <имя>


Добавить группу:
Добавить группу:
  samba-tool group add groupname
  # samba-tool group add groupname


Добавить UNIX-группу:
Добавить UNIX-группу:
  samba-tool group add groupname --nis-domain=samdom --gid-number=<next available GID>
  # samba-tool group add groupname --nis-domain=samdom --gid-number=<next available GID>


Удалить группу:
Удалить группу:
  samba-tool group delete groupname
  # samba-tool group delete groupname


Добавить пользователя в группу:
Добавить пользователя в группу:
  samba-tool group addmembers "Domain Users" user
  # samba-tool group addmembers "Domain Users" user
  samba-tool group addmembers "Domain Users" user,user1,user2
  # samba-tool group addmembers "Domain Users" user,user1,user2


Удалить пользователя из группы:
Удалить пользователя из группы:
  samba-tool group removemembers "Domain Users" user
  # samba-tool group removemembers "Domain Users" user
  samba-tool group removemembers "Domain Users" user,user1,user2
  # samba-tool group removemembers "Domain Users" user,user1,user2


Пользователи группы:
Пользователи группы:
  samba-tool group listmembers "Domain Users" | grep username
  # samba-tool group listmembers "Domain Users" | grep username


Группы пользователя:
Группы пользователя:
  samba-tool user show ''username''
  # samba-tool user show ''username''
Смотрим значение '''memberOf'''
Смотрим значение '''memberOf'''
===Графический способ===
Для управления Samba-пользователями через GUI на отдельной рабочей станции необходимо [[Групповые политики/ADMC|поставить ADMC]].
Подключение работает только со сторонней рабочей станции/сервера. С самого КД подключить утилиту к базе AD у меня не получилось.


==Подключение компьютера==
==Подключение компьютера==
Настраиваем сеть:
Ставим пакет:
# apt-get install task-auth-ad-sssd
 
Настраиваем сеть: (или [[DHCP сервер|поднимите DHCP]] на КД)
===Настройка IP===
{{Note|Если вы используете статический адрес, настроим его с помощью etcnet и сделаем апплет-индикатор для него.}}
# apt-get install etcnet-full
# apt-get install wicd wicd-gtk
 
Запускаем службы wicd:
# systemctl enable --now wicd
 
Удаляем Network Manager:
# apt-get remove NetworkManager*


Идем в /etc/net/ifaces/eth0
Идем в /etc/net/ifaces/eth0
  cd /etc/net/ifaces/
  # cd /etc/net/ifaces/
  mkdir eth0
  # mkdir eth0
  cd eth0
  # cd eth0
Правим настройки
Правим настройки
  nano options
  # mcedit options


  BOOTPROTO=static
  BOOTPROTO=static
Строка 154: Строка 203:


Правим настройки IPv4:
Правим настройки IPv4:
  nano ipv4address
  # mcedit ipv4address


  10.0.2.10/24
  10.0.2.10/24


Правим настройки шлюза:
Правим настройки шлюза:
  nano ipv4route
  # mcedit ipv4route


  default via 10.0.2.1
  default via 10.0.2.1


Домены по-умолчанию и DNS-сервера:
Домены по-умолчанию и DNS-сервера:
  nano resolv.conf
  # mcedit resolv.conf
 
{{Note|Где, {{cmd|nameserver 10.0.2.5}} - адрес Samba-сервера с КД и DNS}}
  search petr.ru
  search petr.ru
  nameserver 10.0.2.5 //адрес Samba-сервера
  nameserver 10.0.2.5
 
Т.к. Samba использует свой DNS-сервер удаляем bind:
# apt-get remove bind


Перезапускаем сеть:
Перезапускаем сеть:
  service network restart
  # systemctl restart network


Применяем настройки DNS:
Применяем настройки DNS:
Строка 188: Строка 234:
Если не пингуется, проверяйте настройки сети и DNS и перезапускайте еще раз их.
Если не пингуется, проверяйте настройки сети и DNS и перезапускайте еще раз их.


Правим:
====Проблемы со входом в домен и сеть====
  # nano /etc/sudoers
{{Note|Доменный пользователь не входит в домен пока не зайдешь под локальным и не перезапустишь службу network}}
 
Это решается [[Etcnet#Интеграция_с_systemd,_или_что_делать_если_не_поднимается_интерфейс_при_старте.|следующим образом]]:
*в файл options настраиваемого интерфейса добавляем:
  ONBOOT=no
*включаем его загрузку через systemd:
systemctl enable network@<имя интерфейса>
в нашем примере:
systemctl enable network@eth0


Расскомментируем:
===Root из доменных пользователей===
User_Alias SUDO_USERS = %sudo
{{Note|Чтобы из-под доменных пользователей работали права суперпользователя}}


И дописываем после:
Иногда, при использовании домена, нужно выполнить действие от имени админа в простом пользователе. (Например, при подключении через Anydesk и т.п.) Если открыть Synaptic или ЦУС то появляется окошко ввода пароля. Если в консоли под простым пользователем ввести {{cmd|su-}} система откажет из-за недостатка прав.
# root ALL=(ALL)ALL


  user ALL=(ALL:ALL)ALL
При запуске GUI приложений появляется окошко ввода root-пароля. Это утилита '''beesu'''. С ее помощью можно запустить терминал с правами администратора.
  $ beesu mate-terminal
и, введя пароль суперпользователя, получить доступ к админской консоли.


{{Note|Чтобы компьютер получил время с сервера домена, надо на сервере, в Alterator в Система-Дата и время поставить галочку "работать как NTP-сервер" и нажать "применить"}}
===Ввод в домен===
{{Note|Чтобы компьютер получил время с сервера домена, надо на сервере, в {{nav|Alterator|Система|Дата и время}} поставить галочку "работать как NTP-сервер" и нажать "применить"}}
Синхронизируем время:
Синхронизируем время:
  # net time set -S petr.ru
  # net time set -S petr.ru
Строка 206: Строка 262:
  # apt-get install task-auth-ad-sssd
  # apt-get install task-auth-ad-sssd


# apt-get install etcnet-full
====GUI====
 
*{{nav|ЦУС|Пользователи|Аутентификация}}
# apt-get install wicd wicd-gtk
 
Запускаем службы wicd:
# service wicd enable
# service wicd start
 
Удаляем Network Manager:
# apt-get remove NetworkManager*
 
*ЦУС-Пользователи-Аутентификация
**Домен AD:
**Домен AD:
**домен petr.ru
**домен petr.ru
Строка 224: Строка 270:
**Вводим пароль доменного администратора
**Вводим пароль доменного администратора
**Перезагружаемся
**Перезагружаемся
{{Note|Доменный пользователь не входит в домен пока не зайдешь под локальным и не перезапустишь службу network}}
Поэтому мы делаем небольшой хак, делаем скрипт, который при запуксе системы будет перезапускать службу сети.
# cd /etc/systemd/system
# nano network-restart.service
Вводим в текстовом редакторе:
[Unit]
Description=Restart Network
After=default.target
[Service]
ExecStart=service network restart
[Install]
WantedBy=default.target


  # systemctl daemon-reload
====Консоль====
{{Note|Где:
*system-auth write ad - команда, говорящая что производится ввод в домен
*petr.ru - имя домена
*pc-1 - имя рабочей станции
*petr - имя рабочей группы
*'administrator' - имя администратора домена
*'Pa$$word' - пароль администратора домена
}}
  # system-auth write ad petr.ru pc-1 petr 'administrator' 'Pa$$word'


# systemctl enable network-restart
===AD/Samba-клиент и клонирование рабочей станции===
Если вы настроили на одном компьютере ALT Linux с AD/Samba доменом и хотите развернуть образ на другом компьютере, приготовьтесь потом сделать следующее. Каждый компьютер введенный в домен получает keytab-файл от Kerberos. И если вы уже введенную в домен систему развернете на другом компьютере, она будет конфликтовать из-за Kerberos-билета.


==GUI для управления Samba==
Чтобы не было конфликта:
[[Файл:Admin-tools.png|центр]]
*введите систему в домен
Для:
*клонируйте акронимом/подобным (склонируйте-разверните)
*управления пользователями и компьютерами
*выведите систему из домена
*Правки ADSI
*переименуйте компьютер
*Управления DNS
*удалите файл /etc/krb5.keytab
*Управления групповой политикой
*введите в домен[https://t.me/alt_linux/109774]
можно использовать утилиту [https://appimage.github.io/admin-tools/ Admin Tools].
 
Переходи в каталог со скачанной программой, распаковываем ее из архива и распаковываем:
$ admintools* --appimage-extract
Потом переходим в каталог с программой и запускаем в консоли:
$ ./AppRun
 
Для управления используйте Tab, пробел и Esc.
 
Подключение:
*username: Administrator
*password: ваш пароль
*domain: домен с точкой, вида DOMAIN.RU
 
===Особенности===
====Управления пользователями и компьютерами====
*Табом, стрелками и Enter выбираем элемент, потом табом переходим в Action и выбираем Propereties.
*Затем Edit.
====Правки ADSI====
*Делаем Action-Connect to-Computer-Select or type a domain or server-вводим имя домена (DOMAIN.RU)
 
Подключение:
*username: Administrator
*password: ваш пароль
*domain: домен с точкой, вида DOMAIN.RU
 
*Табом, стрелками и Enter выбираем элемент, потом табом переходим в Action и выбираем Propereties.
*Затем Edit.
====Управление DNS====
*Делаем Action-Connect to DNS-server-The following computer-Select or type a domain or server-вводим имя домена (DOMAIN.RU)
 
Подключение:
*username: Administrator
*password: ваш пароль
*domain: домен с точкой, вида DOMAIN.RU
 
*Табом, стрелками и Enter выбираем элемент, потом табом переходим в Action и выбираем Propereties.
*Затем Edit.
 
Здесь же можно создать всякие A, AAA и пр. записи и т.п.
====Управления групповой политикой====
Подключение:
*username: Administrator
*password: ваш пароль
*domain: домен с точкой, вида DOMAIN.RU
 
Но править политики там нельзя.


==Вторичный контроллер==
==Вторичный контроллер==
1.Пустой сервер.
1.У нас есть пустой сервер.


2.Ставим на него samba-dc.
2.Ставим на него samba-dc.
# apt-get install task-samba-dc


3.Настраиваем IP.
3.[[Etcnet_start|Настраиваем IP]].


4.Присваиваем имя DC2
4.Присваиваем имя DC2
# hostnamectl set-hostname dc2.petr.ru


4.Заводим IP-адрес для DC2 на основном домене:
5.Заводим IP-адрес для DC2 на основном домене:
 
  # samba-tool dns add 10.0.2.5 petr.ru DC2 A 10.0.2.7 -Uadministrator
  # samba-tool dns add 10.0.2.5 petr.ru DC2 A 10.0.2.7 -Uadministrator


{{Note|10.0.2.5 - адрес DC1, 10.0.2.7 - адрес DC2, DC2 имя второго контроллера домена}}
{{Note|10.0.2.5 - адрес DC1, 10.0.2.7 - адрес DC2, DC2 имя второго контроллера домена}}


5.На DC2 правим /etc/krb5.conf
6.На DC2 правим /etc/krb5.conf
 
# mcedit /etc/krb5.conf
 
  [libdefaults]
  [libdefaults]
  default_realm = PETR.RU
  default_realm = PETR.RU
  dns_lookup_realm = true
  dns_lookup_realm = false
  dns_lookup_kdc = true
  dns_lookup_kdc = true
   
 
<!--  
  [realms]
  [realms]
  PETR.RU = {
  PETR.RU = {
  default_domain = petr.ru
  default_domain = PETR.RU
  }
  }
 
  [domain_realm]
  [domain_realm]
  dc = petr.ru
  dc = petr.ru-->


6. Перезапускаем сеть и самбу
7. Перезапускаем сеть и самбу
  service samba restart
  # systemctl restart samba
  service network restart
  # systemctl restart network


7. Получаем билет и убеждаемся, что билет получен:
8. Получаем билет и убеждаемся, что билет получен:
{{Note|Внимание! Имя домена должно быть указано в верхнем регистре}}
{{Note|Внимание! Имя домена должно быть указано в верхнем регистре}}
  # kinit administrator@PETR.RU
  # kinit administrator@PETR.RU
  # klist
  # klist


7. Вводим в домен:
9. Вводим в домен:
  # samba-tool domain join petr.ru DC -Uadministrator --realm=petr.ru
  # samba-tool domain join petr.ru DC -Uadministrator --realm=petr.ru


Строка 345: Строка 343:
  Joined domain PETR (SID S-1-5-21-80639820-2350372464-3293631772) as a DC
  Joined domain PETR (SID S-1-5-21-80639820-2350372464-3293631772) as a DC


8. После успешного ввода в домен в resolvconf необходимо сменить адрес PDC на адрес вторичного DC (в нашем примере 10.0.2.7).
10. После успешного ввода в домен в resolvconf необходимо сменить адрес PDC на адрес вторичного DC (в нашем примере 10.0.2.7).


Для этого правим файл /etc/net/ifaces/eth0/resolv.conf
Для этого правим файл /etc/net/ifaces/eth0/resolv.conf
nameserver 10.0.2.7
11. Включаем и запускаем службу samba:
# systemctl enable --now samba
12. На DC2 запускаем центр согласованности знаний:
# samba-tool drs kcc -Uadministrator dc2.petr.ru
# systemctl restart network
# systemctl restart samba
13. Правим hosts Samba
Правим файл /etc/samba/lmhosts (на обоих контроллерах) - это локальный hosts файл используемый Samba.


6. Включаем и запускаем службу samba:
Прописываем туда оба домена.
10.0.2.5 dc.petr.ru
10.0.2.7 dc2.petr.ru


# service samba enable
Перезапускаем Samba:
  # service samba start
  # systemctl restart samba


7. На DC2 выполняем:
14.Донастройка сети<br>
  # samba-tool drs kcc -Uadministrator dc2.petr.ru
{{Note|Домен работает некорректно пока не не перезапустишь службу network}}
  # service network restart
*в файл options настраиваемого интерфейса добавляем:
  # service samba restart
  ONBOOT=no
*включаем его загрузку через systemd:
  systemctl enable network@<имя интерфейса>
в нашем примере:
  systemctl enable network@eth0


===Репликация===
===Репликация===
Строка 366: Строка 383:
1. Реплицируем с первичного (1-й приемник, 2-й источник)
1. Реплицируем с первичного (1-й приемник, 2-й источник)
   # samba-tool drs replicate dc2.petr.ru dc.petr.ru dc=petr,dc=ru -Uadministrator
   # samba-tool drs replicate dc2.petr.ru dc.petr.ru dc=petr,dc=ru -Uadministrator
{{Note|репликация на первичный у автора не заработала}}
2. Реплицируем на первичный (1-й приемник, 2-й источник)
2. Реплицируем на первичный (1-й приемник, 2-й источник)
   # samba-tool drs replicate dc.petr.ru dc2.petr.ru dc=petr,dc=ru -Uadministrator
   # samba-tool drs replicate dc.petr.ru dc2.petr.ru dc=petr,dc=ru -Uadministrator
3. Просмотр статуса репликации
3. Просмотр статуса репликации
   # samba-tool drs showrepl
   # samba-tool drs showrepl
Чтобы сделать репликацию в планировщике заданий, добавьте параметр пароля:
samba-tool drs replicate dc.petr.ru dc2.petr.ru dc=petr,dc=ru -Uadministrator --password=pa$$word
====Ошибки====
====Ошибки====
1.Время:
=====Время=====
  1398, WERR_TIME_SKEW
  1398, WERR_TIME_SKEW
или
или
  NT_STATUS_TIME_DIFFERENCE_AT_DC
  NT_STATUS_TIME_DIFFERENCE_AT_DC
Рассинхронизация времени на контроллерах домена. Сделайте время на контроллерах одинаковым.<br>
Рассинхронизация времени на контроллерах домена. Сделайте время на контроллерах одинаковым.<br>
2.Ошибка при репликации на второй:
=====Ошибка при репликации на второй=====
  DRS connection to dc.petr.ru failed - drsException: DRS connection to dc.petr.ru
  DRS connection to dc.petr.ru failed - drsException: DRS connection to dc.petr.ru
Выполните на вторичном контроллере:
Выполните на вторичном контроллере:
  samba-tool drs kcc -Uadministrator dc2.petr.ru
  samba-tool drs kcc -Uadministrator dc2.petr.ru
где dc2.petr.ru - ваш вторичный контроллер домена<br>
где dc2.petr.ru - ваш вторичный контроллер домена
<!-- 3.Ошибка при репликации на первый:
=====Ошибка при репликации на первый=====
  DsReplicaSync failed - drsException: DsReplicaSync failed (1311, 'WERR_NO_LOGON_SERVERS')
  DsReplicaSync failed - drsException: DsReplicaSync failed (1311, 'WERR_NO_LOGON_SERVERS')
Выполните:
Не прописаны домены в /etc/samba/lmhosts.
-->
 
==Прочее==
===Ручное обновление кэша SSSD===
Необходимое удалить его базы и перезапустить.[https://t.me/alt_linux/126457]
# systemctl stop sssd
# rm -f /var/lib/sss/db/*
# rm -f /var/lib/sss/mc/*
# systemctl start sssd
 
==Ссылки==
*[https://www.youtube.com/watch?v=Ql9kJQb9OHs Видеодемонстрация создания домена и подключения к нему клиента] ([http://vk.com/video-212607191_456239144 +vk])
{{Category navigation|title=Начинающему системному администратору|category=Начинающему системному администратору|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=Начинающему системному администратору|category=Начинающему системному администратору|sortkey={{SUBPAGENAME}}}}
[[Категория:Samba]]

Версия от 22:38, 3 декабря 2024

Примечание: Обратите внимание, что это не официальная документация, а попытка начинающего админа объяснить материал начинающим админам. Официальная документация здесь.

SambaAD(DC) - реализация службы каталогов на Samba. В данной статье будет рассмотрена в роли домена.

Примечание: В нашем примере имя домена petr.ru; имя компьютера dc, вместе с доменом dc.petr.ru


Установка

Настройка статического IP

Для контроллера домена серверу необходимо присвоить статический IP-адрес.

Установка Samba

Ставим SambaDC:

# apt-get install task-samba-dc

Очистка конфигурации

Очищаем конфигурацию:

# rm -f /etc/samba/smb.conf
# rm -rf /var/lib/samba
# rm -rf /var/cache/samba
# mkdir -p /var/lib/samba/sysvol

Присваиваем имя компьютера с будущим именем домена

Вводим имя компьютера и домена. Вводим команды:

# mcedit /etc/hostname

Вводим и сохраняем:

dc.petr.ru

Перезагружаемся.

Создание домена

Примечание: Создаем домен. Т.к. мы начинающие, мы будем использовать встроенный в Samba DNS-бэкенд.
$ su -
# samba-tool domain provision
Примечание: Т.к. мы уже указали имя домена, он у нас будет отображаться в мастере
Realm [PETR.RU]:

Жмем Enter

Domain [PETR]:

Жмем Enter

Server Role (dc, member, standalone) [dc]:

Оставляем dc, жмем Enter

DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:

Оставляем Samba internal, жмем Enter.

DNS forwarder IP address (write 'none' to disable forwarding) [127.0.0.1]:

Тут надо выставить внешний DNS, если он не прописался по-умолчанию, чтобы домен мог разрешать внешние адреса (доступ в интернет). Например 8.8.8.8.

Administrator password:

Вводим пароль администратора

Retype password:

Повторяем пароль администратора

Запускаем службу

# systemctl enable --now samba

Перезагружаем сервер.

Настраиваем Kerberos

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

$ su -
# cp /var/lib/samba/private/krb5.conf /etc/krb5.conf

Настраиваем DNS

Прописываем IP Samba DC в настройках DNS. Правим файл:

# mcedit /etc/net/ifaces/eth0/resolv.conf

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

Т.к. мы выбрали DNS-бэкенд Samba, то удалим DNS-сервер bind:

# apt-get remove bind

Перезапускаем сеть. Выполняем:

# systemctl restart network

Проверка работоспособности

Выполняем команды:

# samba-tool domain info 127.0.0.1
# smbclient -L localhost -U administrator
Примечание: Для команды host должен быть установлен пакет bind-utils
$ host petr.ru

(адрес должен иметь адрес 127.0.0.1 или свой IP)

Если адрес другой, правим /etc/net/ifaces/<имя>/resolv.conf и первой строчкой пишем следующее:

nameserver 127.0.0.1

и перезапускаем сеть.

# systemctl restart network

Проверяем имена хостов

Примечание: Для работы Kerberos должен быть установлен пакет krb5-kdc

адрес _kerberos._udp.*адрес домена с точкой

# host -t SRV _kerberos._udp.petr.ru.
_kerberos._udp.petr.ru has SRV record 0 100 88 dc.petr.ru.

адрес _ldap._tcp.*адрес домена с точкой

# host -t SRV _ldap._tcp.petr.ru.
_ldap._tcp.petr.ru has SRV record 0 100 389 dc.petr.ru.

адрес хоста.*адрес домена с точкой

# host -t A dc.petr.ru.
dc.petr.ru has address 10.0.2.5

Проверяем Kerberos

# kinit administrator
Password for administrator@PETR.RU: 
Warning: Your password will expire in 41 days on Чт 29 апр 2021 18:25:49

Просмотр полученного билета:

# klist

Источник:[i]

Управление пользователями

Создать пользователя с паролем[1], :

# samba-tool user create <имя пользователя>
# samba-tool user setexpiry <имя пользователя>

Например,

# samba-tool user create ivanov --given-name='Иван Иванов' --mail-address='ivanov@stand.alt'

Просмотреть доступных пользователей:

# samba-tool user list

Удалить пользователя:

# samba-tool user delete <имя пользователя>

Отключить пользователя:

# samba-tool user disable <имя пользователя>

Включить пользователя:

# samba-tool user enable <имя пользователя>

Изменить пароль пользователя:

# samba-tool user setpassword <имя пользователя>

Не забудьте разблокировать пользователя:

# samba-tool user setexpiry <имя пользователя> --noexpiry
Внимание! Не допускайте одинаковых имён для пользователя и компьютера, это может привести к коллизиям (например, такого пользователя нельзя добавить в группу). [2]


Если компьютер с таким именем заведён, удалить его можно командой:

# pdbedit -x -m <имя>

Добавить группу:

# samba-tool group add groupname

Добавить UNIX-группу:

# samba-tool group add groupname --nis-domain=samdom --gid-number=<next available GID>

Удалить группу:

# samba-tool group delete groupname

Добавить пользователя в группу:

# samba-tool group addmembers "Domain Users" user
# samba-tool group addmembers "Domain Users" user,user1,user2

Удалить пользователя из группы:

# samba-tool group removemembers "Domain Users" user
# samba-tool group removemembers "Domain Users" user,user1,user2

Пользователи группы:

# samba-tool group listmembers "Domain Users" | grep username

Группы пользователя:

# samba-tool user show username

Смотрим значение memberOf

Графический способ

Для управления Samba-пользователями через GUI на отдельной рабочей станции необходимо поставить ADMC.

Подключение работает только со сторонней рабочей станции/сервера. С самого КД подключить утилиту к базе AD у меня не получилось.

Подключение компьютера

Ставим пакет:

# apt-get install task-auth-ad-sssd

Настраиваем сеть: (или поднимите DHCP на КД)

Настройка IP

Примечание: Если вы используете статический адрес, настроим его с помощью etcnet и сделаем апплет-индикатор для него.
# apt-get install etcnet-full
# apt-get install wicd wicd-gtk

Запускаем службы wicd:

# systemctl enable --now wicd

Удаляем Network Manager:

# apt-get remove NetworkManager*

Идем в /etc/net/ifaces/eth0

# cd /etc/net/ifaces/
# mkdir eth0
# cd eth0

Правим настройки

# mcedit options
BOOTPROTO=static
TYPE=eth
DISABLED=no
NM_CONTROLLED=no
CONFIG_IPV4=YES

Правим настройки IPv4:

# mcedit ipv4address
10.0.2.10/24

Правим настройки шлюза:

# mcedit ipv4route
default via 10.0.2.1

Домены по-умолчанию и DNS-сервера:

# mcedit resolv.conf
Примечание: Где, nameserver 10.0.2.5 - адрес Samba-сервера с КД и DNS
search petr.ru
nameserver 10.0.2.5

Перезапускаем сеть:

# systemctl restart network

Применяем настройки DNS:

# /etc/chroot.d/resolv.all

Проверяем, пингуется ли домен:

$ ping petr.ru
PING petr.ru (10.0.2.5) 56(84) bytes of data.
64 bytes from 10.0.2.5: icmp_seq=1 ttl=128 time=0.285 ms
64 bytes from 10.0.2.5: icmp_seq=1 ttl=128 time=0.285 ms
64 bytes from 10.0.2.5: icmp_seq=1 ttl=128 time=0.285 ms
64 bytes from 10.0.2.5: icmp_seq=1 ttl=128 time=0.285 ms

Если не пингуется, проверяйте настройки сети и DNS и перезапускайте еще раз их.

Проблемы со входом в домен и сеть

Примечание: Доменный пользователь не входит в домен пока не зайдешь под локальным и не перезапустишь службу network


Это решается следующим образом:

  • в файл options настраиваемого интерфейса добавляем:
ONBOOT=no
  • включаем его загрузку через systemd:
systemctl enable network@<имя интерфейса>

в нашем примере:

systemctl enable network@eth0

Root из доменных пользователей

Примечание: Чтобы из-под доменных пользователей работали права суперпользователя


Иногда, при использовании домена, нужно выполнить действие от имени админа в простом пользователе. (Например, при подключении через Anydesk и т.п.) Если открыть Synaptic или ЦУС то появляется окошко ввода пароля. Если в консоли под простым пользователем ввести su- система откажет из-за недостатка прав.

При запуске GUI приложений появляется окошко ввода root-пароля. Это утилита beesu. С ее помощью можно запустить терминал с правами администратора.

$ beesu mate-terminal

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

Ввод в домен

Примечание: Чтобы компьютер получил время с сервера домена, надо на сервере, в Alterator ▷ Система ▷ Дата и время поставить галочку "работать как NTP-сервер" и нажать "применить"

Синхронизируем время:

# net time set -S petr.ru

Ставим пакет:

# apt-get install task-auth-ad-sssd

GUI

  • ЦУС ▷ Пользователи ▷ Аутентификация
    • Домен AD:
    • домен petr.ru
    • рабочая группа: PETR
    • имя компьютера: вводим свое
    • Вводим пароль доменного администратора
    • Перезагружаемся

Консоль

Примечание: Где:
  • system-auth write ad - команда, говорящая что производится ввод в домен
  • petr.ru - имя домена
  • pc-1 - имя рабочей станции
  • petr - имя рабочей группы
  • 'administrator' - имя администратора домена
  • 'Pa$$word' - пароль администратора домена
# system-auth write ad petr.ru pc-1 petr 'administrator' 'Pa$$word'

AD/Samba-клиент и клонирование рабочей станции

Если вы настроили на одном компьютере ALT Linux с AD/Samba доменом и хотите развернуть образ на другом компьютере, приготовьтесь потом сделать следующее. Каждый компьютер введенный в домен получает keytab-файл от Kerberos. И если вы уже введенную в домен систему развернете на другом компьютере, она будет конфликтовать из-за Kerberos-билета.

Чтобы не было конфликта:

  • введите систему в домен
  • клонируйте акронимом/подобным (склонируйте-разверните)
  • выведите систему из домена
  • переименуйте компьютер
  • удалите файл /etc/krb5.keytab
  • введите в домен[3]

Вторичный контроллер

1.У нас есть пустой сервер.

2.Ставим на него samba-dc.

# apt-get install task-samba-dc

3.Настраиваем IP.

4.Присваиваем имя DC2

# hostnamectl set-hostname dc2.petr.ru

5.Заводим IP-адрес для DC2 на основном домене:

# samba-tool dns add 10.0.2.5 petr.ru DC2 A 10.0.2.7 -Uadministrator
Примечание: 10.0.2.5 - адрес DC1, 10.0.2.7 - адрес DC2, DC2 имя второго контроллера домена


6.На DC2 правим /etc/krb5.conf

# mcedit /etc/krb5.conf
[libdefaults]
default_realm = PETR.RU
dns_lookup_realm = false
dns_lookup_kdc = true


7. Перезапускаем сеть и самбу

# systemctl restart samba
# systemctl restart network

8. Получаем билет и убеждаемся, что билет получен:

Примечание: Внимание! Имя домена должно быть указано в верхнем регистре
# kinit administrator@PETR.RU
# klist

9. Вводим в домен:

# samba-tool domain join petr.ru DC -Uadministrator --realm=petr.ru

Если всё нормально, в конце видим:

Joined domain PETR (SID S-1-5-21-80639820-2350372464-3293631772) as a DC

10. После успешного ввода в домен в resolvconf необходимо сменить адрес PDC на адрес вторичного DC (в нашем примере 10.0.2.7).

Для этого правим файл /etc/net/ifaces/eth0/resolv.conf

nameserver 10.0.2.7

11. Включаем и запускаем службу samba:

# systemctl enable --now samba

12. На DC2 запускаем центр согласованности знаний:

# samba-tool drs kcc -Uadministrator dc2.petr.ru
# systemctl restart network
# systemctl restart samba

13. Правим hosts Samba

Правим файл /etc/samba/lmhosts (на обоих контроллерах) - это локальный hosts файл используемый Samba.

Прописываем туда оба домена.

10.0.2.5 dc.petr.ru
10.0.2.7 dc2.petr.ru

Перезапускаем Samba:

# systemctl restart samba

14.Донастройка сети

Примечание: Домен работает некорректно пока не не перезапустишь службу network
  • в файл options настраиваемого интерфейса добавляем:
ONBOOT=no
  • включаем его загрузку через systemd:
systemctl enable network@<имя интерфейса>

в нашем примере:

systemctl enable network@eth0

Репликация

Внимание! Помните, что без успешной двунаправленной репликации в течение 14 дней DC исключается из Active Directory

Репликация выполняется на вторичном контроллере.

Примечание: Следите чтобы у доменов не было сильного расхождения во времени!


1. Реплицируем с первичного (1-й приемник, 2-й источник)

 # samba-tool drs replicate dc2.petr.ru dc.petr.ru dc=petr,dc=ru -Uadministrator

2. Реплицируем на первичный (1-й приемник, 2-й источник)

 # samba-tool drs replicate dc.petr.ru dc2.petr.ru dc=petr,dc=ru -Uadministrator

3. Просмотр статуса репликации

 # samba-tool drs showrepl

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

samba-tool drs replicate dc.petr.ru dc2.petr.ru dc=petr,dc=ru -Uadministrator --password=pa$$word

Ошибки

Время
1398, WERR_TIME_SKEW

или

NT_STATUS_TIME_DIFFERENCE_AT_DC

Рассинхронизация времени на контроллерах домена. Сделайте время на контроллерах одинаковым.

Ошибка при репликации на второй
DRS connection to dc.petr.ru failed - drsException: DRS connection to dc.petr.ru

Выполните на вторичном контроллере:

samba-tool drs kcc -Uadministrator dc2.petr.ru

где dc2.petr.ru - ваш вторичный контроллер домена

Ошибка при репликации на первый
DsReplicaSync failed - drsException: DsReplicaSync failed (1311, 'WERR_NO_LOGON_SERVERS')

Не прописаны домены в /etc/samba/lmhosts.

Прочее

Ручное обновление кэша SSSD

Необходимое удалить его базы и перезапустить.[4]

# systemctl stop sssd 
# rm -f /var/lib/sss/db/* 
# rm -f /var/lib/sss/mc/* 
# systemctl start sssd

Ссылки