SambaADclient
Содержание
- 1 Samba как член домена
- 1.1 Вступление
- 1.2 Подготовка к установке
- 1.3 Установка Samba
- 1.4 Настройка основного файла smb.conf
- 1.5 Присоединение к домену
- 1.6 Настройка переключателя службы имен
- 1.7 Запуск служб
- 1.8 Тестирование подключения Winbindd
- 2 Ошибки
Samba как член домена
Вступление
Член домена 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, могут перезаписывать изменения, внесенные вручную, в этом файле. Обратитесь к документации вашего дистрибутива за информацией о том, как постоянно настраивать разрешение имен.
Тестирование разрешения 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.
Если ваши пользователи будут использовать только 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
Чтобы полностью отключить печать, добавьте следующие строки:
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:
- Добавьте следующий параметр в раздел [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.
Запуск служб
Запустите следующие службы:
- smbd
- nmbd
- winbindd
Тестирование подключения 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 | |||
---|---|---|---|
Файловое хранилище | Samba как файловый сервер • Подключение общей папки • Samba как файловый сервер в домене | ||
Служба каталогов | |||
Сервер | Samba как служба каталогов (AD) • Изменение IP-адреса AD • Репликация сервера AD • Резервное копирование и восстановление • Управление пользователями • Групповые политики • Групповая политика паролей | ||
Клиент | Подключение клиента AD • Устранение неполадок участников домена Samba | ||
Бэкэнды идентификаторов winbind | idmap config tdb • idmap config ad • idmap config rid • idmap config autorid | ||
Прочее | Samba как сервер печати • Проверка конфигурационного файла • Утилиты командной строки • LMHOSTS • Уровень логов • Каталоги Samba • Настройка DNS | ||
Разное | Настройка Samba для привязки к определенным интерфейсам • Тестирование динамических обновлений DNS • Samba Перенастройка бэкенда BIND9 DLZ • Конфигурация DNS для Linux и Unix | ||
Информация | SSSD vs Winbind • Установка Samba |