Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
samba_ad [2014/03/20 15:22] metallic [Введение] |
samba_ad [2023/10/02 16:40] metallic [Настройка] |
||
---|---|---|---|
Строка 3: | Строка 3: | ||
===== Введение ===== | ===== Введение ===== | ||
- | Задача: | + | Задача: |
Имеем: домен domain.local, | Имеем: домен domain.local, | ||
===== Настройка ===== | ===== Настройка ===== | ||
+ | |||
+ | 1. В DNS домена регистрируем fileserver, в итоге получаем fqdn: fileserver.domail.local | ||
+ | |||
+ | 2. На файловом сервере настраиваем разрешение имен, правим / | ||
+ | |||
+ | domain domail.local | ||
+ | search domail.local | ||
+ | nameserver 192.168.0.2 | ||
+ | nameserver 192.168.0.3 | ||
+ | | ||
+ | После чего обязательно тестируем, | ||
+ | |||
+ | Также обязательно надо синхронизировать время между DC и файловым сервером, | ||
+ | |||
+ | 3. На файловом сервере ставим все необходимо ПО. | ||
+ | Debian 8: | ||
+ | |||
+ | # apt-get install samba winbind krb5-user libpam-krb5 libnss-winbind | ||
+ | | ||
+ | Centos 7: | ||
+ | |||
+ | # yum install samba samba-winbind krb5-workstation samba-winbind-clients | ||
+ | | ||
+ | 4. Редактируем / | ||
+ | |||
+ | [libdefaults] | ||
+ | default_realm = DOMAIN.LOCAL | ||
+ | clockskew = 300 | ||
+ | v4_instance_resolve = false | ||
+ | | ||
+ | [realms] | ||
+ | DOMAIN.LOCAL = { | ||
+ | kdc = dc1.domail.local | ||
+ | kdc = dc2.domail.local | ||
+ | admin_server = dc1.domail.local | ||
+ | default_domain = DOMAIN.LOCAL | ||
+ | } | ||
+ | | ||
+ | [domain_realm] | ||
+ | .domail.local. = DOMAIN.LOCAL. | ||
+ | | ||
+ | Получаем тикет керберос: | ||
+ | |||
+ | # kinit admin | ||
+ | Password for admin@DOMAIN.LOCAL: | ||
+ | |||
+ | Проверяем, | ||
+ | |||
+ | # klist | ||
+ | Ticket cache: FILE:/ | ||
+ | Default principal: admin@DOMAIN.LOCAL | ||
+ | | ||
+ | Valid starting | ||
+ | 20.03.2014 15: | ||
+ | renew until 21.03.2014 15:48:19 | ||
+ | |||
+ | Этот тикет нам нужен только для подключения самбы к доменту, | ||
+ | |||
+ | 5. Редактируем / | ||
+ | |||
+ | [global] | ||
+ | security = ads | ||
+ | netbios name = fileserver | ||
+ | server string = | ||
+ | realm = DOMAIN.LOCAL | ||
+ | workgroup = DOMAIN | ||
+ | # password server = dc1.domail.local dc2.domail.local | ||
+ | idmap config * : range = 3000-20000 | ||
+ | idmap config * : backend = tdb | ||
+ | client use spnego = yes | ||
+ | winbind enum users = yes | ||
+ | winbind enum groups = yes | ||
+ | winbind use default domain = yes | ||
+ | | ||
+ | domain master = no | ||
+ | local master = no | ||
+ | preferred master = no | ||
+ | os level = 1 | ||
+ | | ||
+ | unix charset = UTF-8 | ||
+ | dos charset = CP866 | ||
+ | display charset = UTF-8 | ||
+ | | ||
+ | load printers = no | ||
+ | show add printer wizard = no | ||
+ | printcap name = /dev/null | ||
+ | disable spoolss = yes | ||
+ | |||
+ | Тут коментировать особенно нечего, | ||
+ | |||
+ | # service samba restart | ||
+ | [ ok ] Stopping Samba daemons: nmbd smbd. | ||
+ | [ ok ] Starting Samba daemons: smbd. | ||
+ | |||
+ | # service winbind restart | ||
+ | [ ok ] Stopping the Winbind daemon: winbind. | ||
+ | [ ok ] Starting the Winbind daemon: winbind. | ||
+ | |||
+ | |||
+ | 6. Подключаемся к домену: | ||
+ | |||
+ | # net ads join -U admin --no-dns-updates | ||
+ | Enter admin' | ||
+ | Using short domain name -- DOMAIN | ||
+ | Joined ' | ||
+ | |||
+ | Опция --no-dns-updates говорит не обновлять днс-запись, | ||
+ | |||
+ | 7. Теперь чтобы система использовала winbind для поиска пользователей и групп редактируем / | ||
+ | |||
+ | passwd: | ||
+ | group: | ||
+ | shadow: | ||
+ | | ||
+ | hosts: | ||
+ | networks: | ||
+ | | ||
+ | protocols: | ||
+ | services: | ||
+ | ethers: | ||
+ | rpc: db files | ||
+ | | ||
+ | netgroup: | ||
+ | |||
+ | Тут всего лишь добавлено ключевое слово winbind в поля passwd и group. | ||
+ | |||
+ | Вот и все. Теперь еще раз на всякий случай перезапускаемся. | ||
+ | |||
+ | |||
+ | Debian 8: | ||
+ | # service samba restart | ||
+ | [ ok ] Stopping Samba daemons: nmbd smbd. | ||
+ | [ ok ] Starting Samba daemons: smbd. | ||
+ | |||
+ | # service winbind restart | ||
+ | [ ok ] Stopping the Winbind daemon: winbind. | ||
+ | [ ok ] Starting the Winbind daemon: winbind. | ||
+ | |||
+ | Centos 7: | ||
+ | # systemctl enable smb | ||
+ | # systemctl enable winbind | ||
+ | # systemctl restart smb | ||
+ | # systemctl restart winbind | ||
+ | |||
+ | И тестируем: | ||
+ | |||
+ | # wbinfo -p | ||
+ | Ping to winbindd succeeded | ||
+ | |||
+ | # wbinfo -t | ||
+ | checking the trust secret for domain DOMAIN via RPC calls succeeded | ||
+ | |||
+ | # id admin | ||
+ | uid=500(admin) gid=502(domain users) группы=502(domain users), | ||
+ | | ||
+ | # wbinfo -u | ||
+ | admin | ||
+ | гость | ||
+ | ... | ||
+ | | ||
+ | # wbinfo -g | ||
+ | domain users | ||
+ | гости домена | ||
+ | клонируемые контроллеры домена | ||
+ | контроллеры домена - только чтение | ||
+ | контроллеры домена | ||
+ | компьютеры домена | ||
+ | владельцы-создатели групповой политики | ||
+ | администраторы домена | ||
+ | ... | ||
+ | |||
+ | # net ads testjoin | ||
+ | Join is OK | ||
+ | |||
+ | # net ads info | ||
+ | LDAP server: X.X.X.X | ||
+ | LDAP server name: DC1.domain.org | ||
+ | Realm: DOMAIN.ORG | ||
+ | Bind Path: dc=DOMAIN, | ||
+ | LDAP port: 389 | ||
+ | Server time: Птн, 17 Июл 2015 18:29:53 MSK | ||
+ | KDC server: X.X.X.X | ||
+ | Server time offset: -32 | ||
+ | |||
+ | |||
+ | |||
+ | Если все ОК, система видит доменных пользователей и группы, | ||
+ | |||
+ | [shara] | ||
+ | path = / | ||
+ | writeable = yes | ||
+ | browsable = yes | ||
+ | valid users = @DOMAIN\group1, | ||
+ | read list = | ||
+ | write list = | ||
+ | create mask = 0777 | ||
+ | force directory mode = 0777 | ||
+ | | ||
+ | |||
+ | <note tip> | ||
+ | База tdb с привязкой ID к доменным пользователям храниться тут: | ||
+ | |||
+ | # ls -1 / | ||
+ | account_policy.tdb | ||
+ | group_mapping.tdb | ||
+ | passdb.tdb | ||
+ | printers | ||
+ | registry.tdb | ||
+ | secrets.tdb | ||
+ | share_info.tdb | ||
+ | usershares | ||
+ | winbindd_idmap.tdb | ||
+ | |||
+ | В случае каких либо глюков, | ||
+ | |||
+ | net cache flush | ||
+ | rm / | ||
+ | |||
+ | Но в этом случае возможно придется заново перенастраивать права доступа к файловой системе, | ||
+ | </ | ||
+ | |||
+ | <note tip> | ||
+ | Если запустить winbind с ключем -n, то он не будет кешировать результаты запросов к AD. | ||
+ | |||
+ | В debian редактируем файл / | ||
+ | WINBINDD_OPTS=" | ||
+ | |||
+ | В redhat редактируем файл / | ||
+ | WINBINDOPTIONS=" | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | Для сопоставления доменных идентификаторов пользователей локальным удобно использовать вместо бакенда tdb(локальная база данных) бакэнд rid, в таком случае они будут вычисляться на лету исходя из доменного SID пользователя(последних цифр) и будут всегда одинаковыми на всех серверах(при неизменности конфигурации). Пример конфигурации: | ||
+ | |||
+ | idmap config DOMAIN : base_rid = 0 | ||
+ | idmap config DOMAIN : range = 2000-999999 | ||
+ | idmap config DOMAIN : backend = rid | ||
+ | idmap config DOMAIN : default = yes | ||
+ | idmap config * : range = 1300000-1999999 | ||
+ | idmap config DOMAIN : backend = rid | ||
+ | | ||
+ | Локальный ID пользователя будет вычисляться по формуле: | ||
+ | ID = RID - BASE_RID + LOW_RANGE_ID | ||
+ | где | ||
+ | RID - последние цифры SID пользователя домена, | ||
+ | BASE_RID - это конфигурируемый параметр, | ||
+ | LOW_RANGE_ID - это нижняя граница диапазона, | ||
+ | И таким образом ID встроенного админа при такой конфигурации будет рассчитан так: 500 - 0 + 2000 = 2500 и это значение будет неизменным для всех серверов при условии, | ||
+ | |||
+ | Чтобы идентификаторы пользователей точно соответствовал доменным, | ||
+ | ... | ||
+ | idmap config DOMAIN : base_rid = 100 | ||
+ | idmap config DOMAIN : range = 100-999999 | ||
+ | ... | ||
+ | Но в этом случае они могут пересекаться с локальными. | ||
+ | | ||
+ | Дополнительная информация по [[https:// | ||
+ | </ | ||
+ | |||
+ | ===== Команды диагностики ===== | ||
+ | |||
+ | # id renderman | ||
+ | uid=503(renderman) gid=500(domain users) группы=500(domain users), | ||
+ | | ||
+ | # wbinfo --user-groups=renderman | ||
+ | 500 | ||
+ | 517 | ||
+ | 596 | ||
+ | 678 | ||
+ | 519 | ||
+ | 505 | ||
+ | 522 | ||
+ | 535 | ||
+ | 672 | ||
+ | 510 | ||
+ | | ||
+ | # wbinfo --name-to-sid=renderman | ||
+ | S-1-5-21-1421388833-3017584253-2885461630-3113 SID_USER (1) | ||
+ | | ||
+ | # wbinfo --ping-dc | ||
+ | checking the NETLOGON dc connection succeeded | ||
+ | | ||
+ | # wbinfo --user-info=renderman | ||
+ | renderman: | ||
+ | | ||
+ | # groups renderman | ||
+ | renderman : domain users kopir_users sw_all sw_render render_farm artoon_all artoon_compos artoon_cache groups: невозможно определить имя группы для ID 672 | ||
+ | 672 BUILTIN\users | ||