Тестировали ввод ROSA Fresh/RED в домен Microsoft Active Directory. Ниже записал, что нашел, чтобы потом можно было вспомнить.
drakxtools 14.87, samba 4.6.14, MIT kerberos krb5 1.14.4.
Домен Windows называется «KELEG-HOME.RU». Вводили в домен через графическую утилиту Drakauth из состава drakxtools.
Проблема в том, что после ввода в домен создались 2 папки: /home/KELEG-HOME/ и /home/KELEG-HOME.RU. Доменные пользователи создались в /home/KELEG-HOME/, а /home/KELEG-HOME.RU осталась пустой.
В Drakauth можно выбрать 2 типа домена: Windows NT и Active Directory. Разница минимальна:
разница только в конфиге самбы, который будет записан.
Если выбран NT-домен, то будет security = domain
, если AD, то security = ads
и будет немного доп. параметров winbind, и все, в этом вся разница. См man smb.conf https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html#SECURITY
В drakxtools/perl-install/fs/remote/smb.pm функция write_smb_conf
пишет конфиг Samba, если выбрано NT, а функция write_smb_ads_conf
— если выбран домен AD, разница минимальна, как видите (выше приведены ссылки не на ветку master, а на дерево исходников на коммите, по которому я смотрел, чтобы в будущем ссылки из этой статьи вели именно на тот код, который упомянут, а не тот, который будет с накопившимися изменениями).
В drakxtools/perl-install/authentication.pm есть вызовы функции mkdir_p
для создания папок в /home
. Однако Samba сама может создавать эти папки.
В обоих случаях есть шаблон пути к автоматически создаваемой домашней папке доменного пользователя:
template homedir = /home/%D/%U
где, согласно man smb.conf
, %D
заменяется на имя домена или имя рабочей группы (workgroup), по документации не ясно, как именно получается %D
, а %U
— это имя пользователя, например, administrator
.
Из-за неясности с методом формирования %D
лезем в код Samba.
По коду winbind
в составе Samba посмотрел, насколько понял, он спрашивает у Windows: как зовется твой домен? Если тот ему отвечает, то используется имя из ответа, а в ответ Windows посылает имя из ключа реестра HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultDomainName
, судя по всему. Если Windows не отвечает, какое имя домена, то winbind использует имя домена , которое у него есть (а вот откуда оно у него, не могу точно сказать).
Ключ реестра нашел так: в коде winbind grep-ом нашел base.logon_domain.string
и загуглил эту строку.
Выдержка из samba/source3/winbindd/winbindd_pam.c, этот код присваивает домену имеющееся имя, если Windows не ответил, как зовут домен:
if (!nt_domain) { /* If the server didn't give us one, just use the one * we sent them */ nt_domain = name_domain; }
Это отвечает на вопрос, почему доменные пользователи создались в папке /home/KELEG-HOME, а не /home/KELEG-HOME.RU. Скорее всего, drakxtools создал /home/KELEG-HOME.RU, а Samba создала /home/KELEG-HOME/administrator. Собственно, можно запатчить winbind, но лучше таким не заниматься, последствия непредсказуемы.
Далее запишу, какие были автоматически созданные drakauth’ом конфиги Samba и Kerberos.
/etc/samba/smb.conf
:
[global] passdb backend = tdbsam winbind nss info = rfc2307 kerberos method = secrets only workgroup = KELEG-HOME realm = KELEG-HOME.RU netbios name = red security = ads encrypt passwords = Yes password server = * log file = /var/log/samba/log.%m max log size = 50 socket options = TCP_NODELAY os level = 0 local master = No dns proxy = No winbind uid = 10000-20000 winbind gid = 10000-20000 winbind separator = + template homedir = /home/%D/%U template shell = /bin/bash winbind enum groups = Yes winbind enum users = Yes winbind refresh tickets = true winbind offline logon = true winbind cache time = 1440 winbind use default domain = Yes
/etc/krb5.conf
:
[libdefaults] dns_lookup_kdc = false dns_lookup_realm = false default_realm = KELEG-HOME.RU [realms] KELEG-HOME.RU = { kdc = WINSERVER.KELEG-HOME.RU:88 admin_server = WINSERVER.KELEG-HOME.RU:749 default_domain = KELEG-HOME.RU } [domain_realm] .KELEG-HOME.RU = KELEG-HOME.RU KELEG-HOME.RU = KELEG-HOME.RU [kdc] profile = /etc/kerberos/krb5kdc/kdc.conf [pam] debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false [login] krb4_convert = false krb4_get_tickets = false
ls -la /etc | grep krb
-rw-r--r-- 1 root root 539 дек 12 14:40 krb5.conf drwxr-xr-x 2 root root 4096 фев 7 2018 krb5.conf.d/ -rw-r--r-- 1 root root 462 дек 13 06:36 krb5.conf.orig
Отправить ответ