SambaADclientWinbind

Материал из Русский WINE
Перейти к: навигация, поиск
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.

Содержание

Подключение клиента AD через Winbind

Вступление

Член домена Samba - это компьютер Linux, подключенный к домену, на котором работает Samba, и не предоставляет доменные службы, такие как контроллер основного домена NT4 (PDC) или контроллер домена Active Directory (AD) (DC).

В качестве участника домена Samba вы можете:

  • Использовать пользователей и группы домена в локальных списках ACL для файлов и каталогов.
  • Настроить общие ресурсы для работы в качестве файлового сервера.
  • Настроить службы печати в качестве сервера печати.
  • Настроить PAM, чтобы разрешить пользователям домена входить в систему локально или проходить проверку подлинности на локально установленных службах.

Подготовка к установке

Общая подготовка

  • Убедитесь, что ни один процесс Samba не запущен:
# ps ax | egrep "samba|smbd|nmbd|winbindd"

Если в выводе консоли будут следующие процессы: samba, smbd, nmbd или winbindd, завершите их.

  • Если вы ранее настраивали Samba на этом компьютере:
    • Сделайте резервную копию существующего файла smb.conf. Чтобы узнать путь до файла, введите:
# smbd -b | grep "CONFIGFILE"
   CONFIGFILE: /usr/local/samba/etc/samba/smb.conf
  • Удалите все файлы базы данных Samba (файлы *.tdb и *.ldb). Для просмотра списка папок, содержащих базы данных Samba введите:
# smbd -b | egrep "LOCKDIR|STATEDIR|CACHEDIR|PRIVATE_DIR"
  LOCKDIR: /usr/local/samba/var/lock/
  STATEDIR: /usr/local/samba/var/locks/
  CACHEDIR: /usr/local/samba/var/cache/
  PRIVATE_DIR: /usr/local/samba/private/

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

Подготовка компьютера к присоединению к домену AD

Настройка DNS

Active Directory (AD) использует DNS в фоновом режиме, чтобы найти другие контроллеры домена и службы, такие как Kerberos. Таким образом, члены и серверы домена AD должны иметь возможность разрешать зоны AD DNS.

Далее описано, как вручную настроить клиенты Linux для использования DNS-серверов. Если вы используете DHCP-сервер, предоставляющий настройки DNS для ваших клиентских компьютеров, настройте ваш DHCP-сервер на отправку IP-адресов ваших DNS-серверов.

Настройка /etc/resolv.conf

Установите IP-адрес DNS-сервера и DNS-домена AD в файле /etc/resolv.conf. Например:

nameserver 172.16.0.2
search git.ru

Некоторые утилиты, такие как NetworkManager, могут перезаписывать изменения, внесенные вручную, в этом файле. Обратитесь к документации вашего дистрибутива за информацией о том, как постоянно настраивать разрешение имен.

Примечание: Вы можете настроить данный параметр используя NetworkManager, выбрав параметр "Автоматический (DHCP, только адрес)" и вручную через GUI введя сервер DNS и поисковый домен.



Тестирование разрешения DNS

Чтобы убедиться, что ваши настройки DNS верны и ваш клиент или сервер может разрешить IP-адреса и имена хостов, используйте команду nslookup. Команда доступна и в Linux и в Windows.

Прямой поиск

Чтобы определить имя хоста по его IP-адресу:

# nslookup ad.git.ru
Server:         172.16.0.2
Address:        172.16.0.2#53

Name:   AD.git.ru
Address: 172.16.0.2
Обратный поиск

Чтобы преобразовать IP-адрес в имя хоста:

# nslookup 172.16.0.2
Server:        172.16.0.2
Address:	172.16.0.2#53

1.0.99.10.in-addr.arpa	name = AD.git.ru.

Обратите внимание, что в Samba AD обратная зона не настраивается автоматически. Чтобы настроить обратную зону, см. Администрирование DNS.

Разрешение записей SRV

Active Directory (AD) использует записи SRV для поиска служб, таких как Kerberos и LDAP. Чтобы убедиться, что записи SRV разрешены правильно, используйте интерактивную оболочку nslookup:

# nslookup
Default Server:  172.16.0.2
Address:  172.16.0.2

> set type=SRV
> _ldap._tcp.git.ru.
Server:  UnKnown
Address:  172.16.0.2

_ldap._tcp.git.ru   SRV service location:
          priority       = 0
          weight         = 100
          port           = 389
          svr hostname   = ad.git.ru
git.ru      nameserver = ad.git.ru
ad.git.ru  internet address = 172.16.0.2 

Настройка Kerberos

Samba поддерживает бэк-энды Heimdal и MIT Kerberos. Чтобы настроить Kerberos для члена домена, добавьте в свой файл /etc/krb5.conf следующее:

[libdefaults] 
	default_realm = GIT.RU 
	dns_lookup_realm = false 
	dns_lookup_kdc = true

Предыдущий пример настраивает Kerberos для области GIT.RU.

Команды Samba рекомендует не устанавливать никаких дополнительных параметров в файле /etc/krb5.conf.

Если ваш файл /etc/krb5.conf содержит строку include, то она не будет работать, вы должны ее удалить.

Настройка синхронизации времени

Для синхронизации времени можно воспользоваться утилитой chrony.

Добавьте в конфигурационный файл /etc/chrony.conf адрес контроллера домена сделав его единственным сервером для синхронизации (остальные сервера удалите).

server ad.git.ru iburst

Сохраните файл конфигурации, запустите демон chrony и добавьте его в автозагрузку.

# systemctl start chronyd && systemctl enable chronyd

Разрешение имени локального хоста

Когда вы присоединяете хост к домену, Samba пытается зарегистрировать имя хоста в зоне AD DNS. Для этого утилита net должна иметь возможность разрешать имя хоста, используя DNS или используя правильную запись в файле /etc/hosts.

Чтобы убедиться, что ваше имя хоста разрешается правильно, используйте команду getent hosts. Например:

# getent hosts host1 
172.16.0.3 host1.git.ru host1

Имя хоста и полное доменное имя не должны преобразовываться в IP-адрес 127.0.0.1 или любой другой IP-адрес, отличный от того, который используется в LAN-интерфейсе члена домена.

Если выходные данные не отображаются или хост разрешен с неверным IP-адресом и вы не используете dhcp, установите правильную запись в файле /etc/hosts. Например:

127.0.0.1 localhost 
172.16.0.3 host1.git.ru host1

Если вы используете dhcp, убедитесь, что /etc/hosts содержит только строку «127.0.0.1», показанную выше. Если проблемы не устранены, обратитесь к системному администратору, который контролирует ваш DHCP-сервер.

В системах, основанных на Debian, вы также в /etc/hosts увидите строку 127.0.1.1 hostname. Удалите ее перед установкой samba.

Если вам нужно добавить псевдонимы к имени хоста, добавьте их в конец строки, начинающейся с ipaddress машин, а не со строки 127.0.0.1.

Подготовка компьютера к присоединению к домену NT4

Для присоединения компьютера к домену NT4 подготовка не требуется.

Установка Samba

См. Установка Samba

Настройка основного файла smb.conf

При настройке файла smb.conf для члена домена Unix вам нужно будет принять несколько решений.

  • Требуется ли от пользователей и групп одинаковые идентификаторы везде, включая контроллеры домена Samba AD?
  • Вы хотите, чтобы ваши пользователи и группы имели одинаковые идентификаторы у членов домена Unix?

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

  • Вы хотите, чтобы у отдельных пользователей были разные оболочки входа и/или пути к домашним каталогам Unix?

Если вы хотите, чтобы у ваших пользователей были разные оболочки входа и/или пути к домашним каталогам Unix, или если вы хотите, чтобы у них везде был одинаковый идентификатор, вам нужно будет использовать внутреннюю часть winbind 'ad' и добавить атрибуты RFC2307 в AD.

Примечание: Атрибуты RFC2307 ( uidNumber, gidNumberи т. Д.) не добавляются автоматически при создании пользователей или групп, их необходимо добавлять вручную.


Если ваши пользователи будут использовать только Samba AD DC для аутентификации, не будут хранить на нем данные или заходить на него, вы можете использовать серверную часть winbind 'rid', которая вычисляет идентификаторы пользователей и групп из RID Windows, если вы используете в том же разделе [global] файла smb.conf для каждого члена домена Unix вы получите одинаковые идентификаторы. Если вы используете бэкэнд 'rid' , вам не нужно ничего добавлять в AD, и фактически любые атрибуты RFC2307 будут игнорироваться. При использовании бэкенда 'rid' вы должны установить параметры 'template shell' и 'template homedir' в smb.conf, эти параметры глобальные, при этом каждый пользователь получит одинаковую оболочку входа и путь к домашнему каталогу Unix, в отличие от атрибутов RFC2307, где вы можете установить отдельные пути и оболочки домашних каталогов Unix.

Существует еще один способ настройки Samba, в котором вам нужно, чтобы ваши пользователи и группы имели одинаковый идентификатор везде, а пользователям нужно иметь одинаковую оболочку входа и использовать один и тот же путь к домашнему каталогу Unix. Вы можете сделать это используя бэкэнд winbind 'ad' и используя строки шаблона в smb.conf. Таким образом, вам нужно только добавить атрибуты uidNumber и gidNumbers в AD.

Решив, какой бэкэнд winbind использовать, теперь у вас есть дальнейшее решение, диапазоны, которые следует использовать с 'idmap config' в smb.conf. По умолчанию для члена домена Unix существует несколько блоков пользователей и групп:

  • Пользователи и группы локальной системы: 0-999
  • Локальные пользователи и группы Unix: начиная с 1000
  • «Хорошо известные SID»: ????
  • Пользователи и группы DOMAIN: ADUC по умолчанию запускает их с 10000
  • Доверенные домены: ????
  • Все, что не является «хорошо известным SID», членом домена или доверенным доменом: ????

Как видно из вышесказанного, вам не следует устанавливать диапазоны '*' или 'DOMAIN', начиная с 999 или менее, поскольку они будут мешать локальным системным пользователям и группам. Вы также должны оставить пробел для любых локальных пользователей и групп Unix, поэтому запуск диапазона 'idmap config' с 3000 кажется хорошим компромиссом.

Вам нужно решить, насколько велик ваш домен DOMAIN, и вам также необходимо знать, есть ли у вас доверенные домены или, понадобятся они, возможно, вам в будущем.

Имея в виду вышеуказанную информацию, вы можете установить диапазоны 'idmap config' следующим образом:

Домен	Спектр
*	3000-7999
DOMAIN	10000-999999

Если вы установите диапазон '*' выше диапазона 'DOMAIN', диапазоны будут конфликтовать, если значение 'Domain' возрастет до такой степени, что следующий идентификатор будет совпадать с идентификатором начала диапазона '*'.

С вышеупомянутыми предлагаемыми диапазонами, ни один диапазон не будет перекрывать или мешать другому.

Вы, возможно, также видели примеры диапазона '*', используемого для всего, это не рекомендуется и не должно использоваться.

Перед присоединением к домену настройте файл smb.conf члена домена :

Чтобы найти файл, введите:

# smbd  -b | grep CONFIGFILE
  CONFIGFILE: /usr/local/samba/etc/smb.conf

Чтобы создать базовый файл smb.conf, вам нужно что-то вроде этого (обратите внимание, следующая конфигурация не включает никаких строк авторизации 'idmap config', они будут добавлены позже. Также не отображаются какие-либо общие ресурсы)

[global]
   workgroup = GIT
   security = ADS
   realm = GIT.RU

   winbind refresh tickets = Yes
   vfs objects = acl_xattr
   map acl inherit = Yes
   store dos attributes = Yes

Если вы создаете новый файл smb.conf на неподсоединенной машине и добавляете эти строки, во время объединения будет создана таблица ключей:

dedicated keytab file = /etc/krb5.keytab
kerberos method = secrets and keytab

Если вы не хотите вводить домен, заданный в 'workgroup =' во время входа в систему (Просто «имя пользователя» вместо DOMAIN\username), добавьте эту строку:

winbind use default domain = yes
Примечание: Это будет работать только для домена по умолчанию. Для любых других доменов вы должны использовать 'DOMAIN \ username'.


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

load printers = no
printing = bsd
printcap name = /dev/null
disable spoolss = yes

Теперь вам нужно добавить строки 'idmap config' для вашего предпочтительного метода winbind.

Выберите бэкэнд для отображения идентификаторов в winbindd

Выберите одну из следующих ссылок, чтобы найти информацию о соответствующем бэкэнде домена Samba и какие строки idmap config необходимо добавить:

Бэкэнд Документация Man Page
tdb idmap config tdb idmap_tdb(8)
ad idmap config ad idmap_ad(8)
rid idmap config rid idmap_rid(8)
autorid idmap config autorid idmap_autorid(8)

Назначение учетной записи домена локальному root-пользователю

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

Примечание: При желании вы можете сопоставить учетную запись администратора домена с локальной учетной записью root. Настройка сопоставления позволяет администратору домена выполнять файловые операции, в качестве пользователя root члена домена Unix.


Чтобы сопоставить администратора домена с локальной учетной записью root:

  • Добавьте следующий параметр в раздел [global] вашего файла smb.conf:
username map = /usr/local/samba/etc/user.map

Создайте файл /usr/local/samba/etc/user.map со следующим содержимым:

!root = GIT\Administrator

При использовании бэкэнда ad никогда не устанавливайте атрибут uidNumber для доменной учетной записи Administrator. Если у учетной записи есть набор атрибутов, то значение будет переопределять локальный UID 0 пользователя rootна Samba AD DC и т.о. сопоставление не удастся..

Присоединение к домену

Для присоединения к домену Active Directory (AD), введите:

# net ads join -U administrator
Enter administrator's password: Passw0rd
Using short domain name -- GIT
Joined 'M1' to dns domain 'git.ru'

Если вы получили сообщение вида:

Joined "M1" to dns domain "git.ru"
No DNS domain configured for m1 Unable to perform DNS Update.
DNS update failed: NT_STATUS_INVALID_PARAMETER

Это не значит, что машина не введена в домен. Все в порядке. Ошибки нет.

Для присоединения к домену NT4, введите:

# net rpc join -U administrator
Enter administrator's password: Passw0rd
Joined domain GIT.

Настройка переключателя службы имен

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

  • Добавьте запись winbind в следующие базы данных в файле /etc/nsswitch.conf:
passwd: files winbind
group:  files winbind
  • Сохраните запись files в качестве первого источника для обеих баз данных. Это позволит NSS искать пользователей и группы домена из файлов /etc/passwd и /etc/group, прежде чем запрашивать службу Winbind.
  • Не добавляйте запись winbind в базу данных NSS shadow. Это может привести к сбою утилиты wbinfo.
Примечание: Если есть строка, содержащая директиву initgroups, добавьте [success=continue] winbind, иначе библиотека NSS не будет спрашивать winbindd о дополнительном членстве пользователя в группе. Не добавляйте строку initgroups, если она не существует.


Примечание: Не используйте те же имена пользователей в локальном файле /etc/passwd, что и в домене.


Примечание: Если вы компилируете Samba, добавьте символьные ссылки из библиотеки libnss_winbind в каталог с библиотеками ОС. Подробнее см. libnss_winbind Links. Если вы используете пакеты для установки Samba, ссылки создаются автоматически.



Запуск служб

Запустите следующие службы:

  • smbd
  • nmbd
  • winbindd
Примечание: Вы не должны запускать службу samba на члене домена. Данная служба требуется только на контроллерах домена Active Directory (AD).



Тестирование подключения Winbindd

Отправка пинга Winbindd

Чтобы проверить, может ли служба Winbindd подключаться к контроллерам домена Active Directory (AD) или к основному контроллеру домена (PDC), введите:

# wbinfo --ping-dc
checking the NETLOGON for domain[GIT] dc connection to "AD.GIT.RU" succeeded

Если предыдущая команда не была выполнена успешно, проверьте:

  • работает ли служба winbindd.
  • настроен ли ваш файл smb.conf правильно.

Использование учетных записей и групп домена в командах операционной системы

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

Библиотека libnss_winbind позволяет искать пользователей и группы домена. Например:

  • Чтобы найти пользователя домена GIT\demo01:
# getent passwd GIT\\demo01
GIT\demo01:*:10000:10000:demo01:/home/demo01:/bin/bash
  • Чтобы найти доменную группу Domain Users:
# getent group "GIT\\Domain Users"
GIT\domain users:x:10000:

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

Библиотека NSS позволяет вам использовать учетные записи и группы пользователей домена в командах. Например, чтобы установить владельца файла для пользователя домена demo01, а группу для группы домена Domain Users, введите:

# chown "GIT\\demo01:GIT\\domain users" file.txt

Ошибки

user ingroup nopasswdlogin

Если при входе в домен у вас правильный логин-пароль, в ответ ошибка, а при просмотре лога (journalctl -b) есть такая строка:

Jan 16 08:34:59 [HOSTNAME] lightdm: pam_succeed_if(lightdm:auth): requirement "user ingroup nopasswdlogin" not met by user "Administrator@winsrv.local"

отредактируйте файл /etc/pam.d/lightdm, удалив следующую строку:

auth    sufficient      pam_succeed_if.so user ingroup nopasswdlogin

credentials for user unknown

Если при входе в домен у вас правильный логин-пароль, в ответ ошибка, а при просмотре лога (journalctl -b) есть такая строка:

Jan 16 08:34:59 [HOSTNAME] lightdm:  pam_tcb(lightdm:auth): Credentials for user petr2 unknown

то ...

authentication failed for UNKNOWN USER from (uid=0)

Если при входе в домен у вас правильный логин-пароль, в ответ ошибка, а при просмотре лога (journalctl -b) есть такая строка:

Jan 16 08:34:59 [HOSTNAME] lightdm:  pam_tcb(lightdm:auth): Authentication failed for UNKNOWN USER from (uid=0)

то ...

unable to locate daemon control file

Если при входе в домен у вас правильный логин-пароль, в ответ ошибка, а при просмотре лога (journalctl -b) есть такая строка:

Jan 16 08:34:59 [HOSTNAME] lightdm:  gkr-pam: unable to locate daemon control file

то...

Источники: samba.org, linux-admins.ru unix.stackexchange.com

Samba
Search.png
Файловое хранилище Samba как файловый серверПодключение общей папкиSamba как файловый сервер в доменеSMB+LDAP
Служба каталогов
Сервер Samba как служба каталогов (AD)Изменение IP-адреса ADРепликация сервера ADРезервное копирование и восстановлениеУправление пользователямиГрупповые политикиГрупповая политика паролей
Клиент Подключение клиента AD Через WinbindЧерез SSSD
Бэкэнды идентификаторов winbind idmap config tdbidmap config adidmap config rididmap config autorid
Прочее Samba как сервер печатиПроверка конфигурационного файлаУтилиты командной строки
Информация SSSD vs WinbindУстановка Samba