Инструменты пользователя

Инструменты сайта


samba_ad

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
samba_ad [2014/03/20 15:22]
metallic [Введение]
samba_ad [2023/10/02 16:40] (текущий)
metallic [Настройка]
Строка 3: Строка 3:
 ===== Введение ===== ===== Введение =====
  
-Задача: запустить файловый сервер под управлением Debian 7 и Samba с интеграцией в AD, т.е. с прозрачной аунтификацией клиентов с ОС семейства Windows, авторизованных в домене.+Задача: запустить файловый сервер под управлением Debian 8/Centos 7 и Samba с интеграцией в AD, т.е. с прозрачной аунтификацией клиентов с ОС семейства Windows, авторизованных в домене.
  
 Имеем: домен domain.local, серверная ОС Windows Server 2012, режим работы домена и леса 2012(хотя работает и со всем предыдущими режимами), два DC: dc1.domain.local и dc2.domain.local, будующий файловый сервер fileserver. Имеем: домен domain.local, серверная ОС Windows Server 2012, режим работы домена и леса 2012(хотя работает и со всем предыдущими режимами), два DC: dc1.domain.local и dc2.domain.local, будующий файловый сервер fileserver.
  
 ===== Настройка ===== ===== Настройка =====
 +
 +1. В DNS домена регистрируем fileserver, в итоге получаем fqdn: fileserver.domail.local
 +
 +2. На файловом сервере настраиваем разрешение имен, правим /etc/resolv.conf:
 +
 +  domain domail.local
 +  search domail.local
 +  nameserver 192.168.0.2
 +  nameserver 192.168.0.3
 +  
 +После чего обязательно тестируем, чтобы все имена корректно разрешались: fileserver.domail.local, dc1.domail.local, dc2.domail.local и сам домен domail.local
 +
 +Также обязательно надо синхронизировать время между DC и файловым сервером, иначе в случае расхождения времени более чем на 5 минут аунтификация работать не будет. Иногда под большими нагрузками время на файловых серверах любит рассинхронизороваться, чтобы этого не происходило рекомендуется запустить и настроить ntp-клиент.
 +
 +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. Редактируем /etc/krb5.conf:
 +
 +  [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:/tmp/krb5cc_0
 +  Default principal: admin@DOMAIN.LOCAL
 +  
 +  Valid starting       Expires              Service principal
 +  20.03.2014 15:48:19  21.03.2014 01:52:22  krbtgt/DOMAIN.LOCAL@DOMAIN.LOCAL
 +          renew until 21.03.2014 15:48:19
 +
 +Этот тикет нам нужен только для подключения самбы к доменту, так что не страшно, что он истекает через такой маленький промежуток времени.
 +
 +5. Редактируем /etc/samba/smb.conf:
 +
 +  [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
 +
 +Тут коментировать особенно нечего, все просто, привожу только секцию global конфига, в конце еще добавлю пример шары. Единственный момент, закоментирован параметр password server, самба сама найдет сервера через которые аунтифицировать клиентов в конфиге krb5.konf. Перезапускаем samba и winbind:
 +
 +  # 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's password:
 +  Using short domain name -- DOMAIN
 +  Joined 'FILESERVER' to realm 'DOMAIN.LOCAL'
 +
 +Опция --no-dns-updates говорит не обновлять днс-запись, иначе будет ошибка. Другой вариант - включить в настройках доменного ДНС небезопасное обновление зоны.
 +
 +7. Теперь чтобы система использовала winbind для поиска пользователей и групп редактируем /etc/nsswitch.conf:
 +
 +  passwd:         compat winbind
 +  group:          compat winbind
 +  shadow:         compat
 +  
 +  hosts:          files dns
 +  networks:       files
 +  
 +  protocols:      db files
 +  services:       db files
 +  ethers:         db files
 +  rpc:            db files
 +  
 +  netgroup:       nis
 +
 +Тут всего лишь добавлено ключевое слово 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),511(владельцы-создатели групповой политики),507(администраторы домена),505(администраторы предприятия),504(администраторы схемы),501(BUILTIN users),500(BUILTIN administrators)
 +  
 +  # 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,dc=ORG
 +  LDAP port: 389
 +  Server time: Птн, 17 Июл 2015 18:29:53 MSK
 +  KDC server: X.X.X.X
 +  Server time offset: -32
 +
 +
 +
 +Если все ОК, система видит доменных пользователей и группы, можно попробовать зайти на сервер. Пример шары с прописанными доменными пользователями и группами приведен ниже:
 +
 +  [shara]
 +      path = /path/to/shara
 +      writeable = yes
 +      browsable = yes
 +      valid users = @DOMAIN\group1, @DOMAIN\group2, DOMAIN\user1, DOMAIN\user2
 +      read list = 
 +      write list = 
 +      create mask = 0777
 +      force directory mode = 0777
 +      
 +
 +<note tip>
 +База tdb с привязкой ID к доменным пользователям храниться тут:
 +
 +  # ls -1 /var/lib/samba
 +  account_policy.tdb
 +  group_mapping.tdb
 +  passdb.tdb
 +  printers
 +  registry.tdb
 +  secrets.tdb
 +  share_info.tdb
 +  usershares
 +  winbindd_idmap.tdb
 +
 +В случае каких либо глюков, например после переименования доменных учетных записей, можно попробовать удалить это все и перезапустить самбу с винбиндом:
 +
 +  net cache flush
 +  rm /var/lib/samba/*.tdb
 +
 +Но в этом случае возможно придется заново перенастраивать права доступа к файловой системе, т.к. велика вероятность получения новых ID пользователями в пределах сервера. 
 +</note>
 +
 +<note tip>
 +Если запустить winbind с ключем -n, то он не будет кешировать результаты запросов к AD.
 +
 +В debian редактируем файл /etc/default/winbind и добавляем туда строку:
 +  WINBINDD_OPTS="-n"
 +
 +В redhat редактируем файл /etc/sysconfig/samba и добавляем туда строку:
 +  WINBINDOPTIONS="-n"
 +</note>
 +
 +<note>
 +Для сопоставления доменных идентификаторов пользователей локальным удобно использовать вместо бакенда 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 пользователя домена, например для встроенной учетной записи администратора это обычно 500(S-1-5-21-ХХХХХХХХХ-ХХХХХХХХХ-ХХХХХХХХХ-500) и для в дальнейшем создаваемых пользователей в домене эта цифра увеличивается
 +BASE_RID - это конфигурируемый параметр, это цифра, на которую уменьшается ID пользователя в системе, если его надо подкорректировать, в нашем случае 0
 +LOW_RANGE_ID - это нижняя граница диапазона, в нашем случае 2000
 +И таким образом ID встроенного админа при такой конфигурации будет рассчитан так: 500 - 0 + 2000 = 2500 и это значение будет неизменным для всех серверов при условии, что вышеуказанная конфигурация не меняется. Аналогично для других пользователей, локальное значение всегда будет на 2000 больше, чем доменное.
 +
 +Чтобы идентификаторы пользователей точно соответствовал доменным, можно настроить так:
 +  ...
 +  idmap config DOMAIN : base_rid = 100
 +  idmap config DOMAIN : range = 100-999999
 +  ...
 +Но в этом случае они могут пересекаться с локальными.
 +  
 +Дополнительная информация по [[https://www.samba.org/samba/docs/man/manpages-3/idmap_rid.8.html|ссылке]].
 +</note>
 +
 +===== Команды диагностики =====
 +
 +  # id renderman
 +  uid=503(renderman) gid=500(domain users) группы=500(domain users),517(kopir_users),596(sw_all),678(sw_render),519(render_farm),505(artoon_all),522(artoon_compos),535(artoon_cache),672,510(BUILTIN\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:*:503:500::/home/DOMAIN/renderman:/bin/false
 +  
 +  # 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
  
samba_ad.1395314559.txt.gz · Последнее изменение: 2022/03/25 17:04 (внешнее изменение)