Документ создан: 08.09.2010

Авторизация в AD с помощью Samba

Эти действия опробованы на CentOS 5.5. С небольшими изменениями, учитывающими специфику конкретного дистрибутива, эту инструкцию можно использовать и в других версиях и дистрибутивах Linux.

Опробовано на ubuntu 10.04 desktop. Добавлены соответствующие поправки.

Опробовано на ubuntu 12.04 beta.

Внимание!
Настоятельно рекомендую открыть пару сессий от пользователя "root" до выполнения нижеприведённых действий.

  • Для ubuntu надо доустановить пакеты:
    aptitude install ntp krb5-user libkrb53 krb5-config samba samba-common winbind
  1. В "/etc/ntp.conf" добавляем сервер - котроллер домена, с которым будет производиться синхронизация времени:
    ...
    server adcontroller.domain.ru
    ...
  2. Проверяем, стартует ли демон "ntp":
    chkconfig --list ntpd
    • если везде указано "off", разрешаем запуск:
      chkconfig ntpd on
  3. Стартуем демон "ntp":
    /etc/init.d/ntpd start

    для ubuntu - рестартуем:

    service ntp restart
  4. Правим файл "/etc/krb5.conf" так, чтобы было похоже на нижеследующее:
    [logging]
     default = FILE:/var/log/krb5libs.log
     kdc = FILE:/var/log/krb5kdc.log
     admin_server = FILE:/var/log/kadmind.log
    
    [libdefaults]
     default_realm = DOMAIN.RU
     dns_lookup_realm = false
     dns_lookup_kdc = false
    
    [realms]
     DOMAIN.RU = {
      kdc = adcontroller.domain.ru:88
      admin_server = adcontroller.domain.ru:749
      default_domain = domain.ru
     }
    
    [domain_realm]
     .domain.ru = DOMAIN.RU
     domain.ru = DOMAIN.RU
    
    [kdc]
    profile = /var/kerberos/krb5kdc/kdc.conf
    
    [appdefaults]
     pam = {
       debug = false
       ticket_lifetime = 36000
       renew_lifetime = 36000
       forwardable = true
       krb4_convert = false
     }
    
  5. Сохраняем файл и выполняем:
    kinit admin@DOMAIN.RU

    по требованию вводим пароль пользователя admin, который должен существовать в домене.

  6. Правим файл "/etc/samba/smb.conf" так, чтобы было похоже на нижеследующее:
    [global]
            workgroup = ADDOMAIN
            realm = DOMAIN.RU
            preferred master = no
            security = ADS
            encrypt passwords = yes
            log level = 3
            log file = /var/log/samba/%m
            max log size = 50
            printcap name = cups
            printing = cups
            winbind enum users = Yes
            winbind enum groups = Yes
            winbind use default domain = Yes
            winbind nested groups = Yes
            winbind refresh tickets = yes
            idmap uid = 10000-20000
            idmap gid = 10000-20000
            template shell = /bin/bash
            template homedir = /home/%U
    
            passdb backend = tdbsam
            server string = Samba Server Version %v
            load printers = yes
            cups options = raw
    [homes]
            comment = Home Directories
            valid users = %S
            read only = no
            browseable = no
            writable = yes
    [printers]
            comment = All Printers
            path = /var/spool/cups
            browseable = no
            guest ok = yes
            writable = no
            printable = yes
    • опция "template homedir = /home/%U" укажет winbind'у, что домашние каталоги пользователей AD должны быть размещены в /home (например, /home/user1). По умолчанию, домашние каталоги имеют вид /home/<DOMAIN>/<username>.
    • опция "winbind refresh tickets = yes" указывает на автоматическое обновление тикета в AD.
      Если обнаружили, что после перезагрузки компьютера идентификатор пользователя меняется, увеличьте нижнее значение "idmap uid" (Замечено на ubuntu).
  7. Выполняем testparm для проверки конфигурации samba. Должны получить примерно следующее:
    Load smb config files from /etc/samba/smb.conf
    Processing section "[homes]"
    Processing section "[printers]"
    Loaded services file OK.
    Server role: ROLE_DOMAIN_MEMBER
    Press enter to see a dump of your service definitions
  8. Если нет ошибок, стартуем все три сервиса: smbd, nmbd и winbind - например, так:
    /etc/init.d/smb start
    /etc/init.d/winbind start

    или так (в ubuntu):

    sudo service smbd restart
    sudo service nmbd restart
    sudo service winbind restart
  9. Выполняем регистрацию компьютера в AD:
    net ads join -U admuser
    • "admuser" - пользователь в AD с администраторскими полномочиями
  10. Выполняем проверки:
    • тест соединения с AD:
      net ads testjoin
    • если всё в порядке, вернётся список пользователей AD:
      wbinfo -u
    • если всё в порядке, вернётся список групп AD:
      wbinfo -g

      Если при вызове "wbinfo" были ошибки, увеличьте верхнюю границу параметра "idmap gid" или "idmap uid", соответственно, и перегрузите winbind.

  11. Правим "/etc/nsswitch.conf" так, чтобы присутствовали следующие значения:
    passwd:     files winbind
    shadow:     files winbind
    group:      files winbind
    ...
    hosts:      files dns wins
    ...
  12. Проверяем:
    • Выводим список пользователей, включая пользователей AD, в нотации файла "/etc/passwd":
      getent passwd
    • Выводим список групп, включая группы AD, в нотации файла "/etc/group":
      getent group

      В начале списка будут представлены локальные пользователи и группы, а далее пользователи и группы из AD.

  13. Убеждаемся, что присутствуют нужные файлы:
    ls -1 /lib/libnss_wi*
    /lib/libnss_winbind.so.2
    /lib/libnss_wins.so.2
    
  14. Перед выполнением данного шага, сохраните содержимое /etc/pam.d/
    • Для CentOS:
      правим "/etc/pam.d/system-auth" путём добавления (изменения существующих) в него следущих строк в соответствующие секции:
      ...
      auth        sufficient    pam_winbind.so use_first_pass krb5_auth krb5_ccache_type=FILE
      ...
      account     sufficient    pam_succeed_if.so uid < 100 quiet
      account     sufficient    pam_winbind.so use_first_pass
      ...
      password    sufficient    pam_winbind.so use_first_pass
      ...
      session     required      pam_mkhomedir.so umask=0022 skel=/etc/skel
      session     required      pam_winbind.so use_first_pass
      ...

      должно получиться что-то вроде нижеприведённого:

      #%PAM-1.0
      # This file is auto-generated.
      # User changes will be destroyed the next time authconfig is run.
      auth        required      pam_env.so
      auth        sufficient    pam_unix.so likeauth nullok 
      auth        sufficient    pam_winbind.so use_first_pass krb5_auth krb5_ccache_type=FILE
      auth        required      pam_deny.so
      
      account     required      pam_unix.so
      account     sufficient    pam_succeed_if.so uid < 100 quiet
      account     sufficient    pam_winbind.so use_first_pass
      account     required      pam_permit.so
      
      password    requisite     pam_cracklib.so try_first_pass retry=3
      password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
      password    sufficient    pam_winbind.so use_first_pass
      password    required      pam_deny.so
      
      session     optional      pam_keyinit.so revoke
      session     required      pam_mkhomedir.so umask=0022 skel=/etc/skel
      session     required      pam_limits.so
      session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
      session     required      pam_unix.so
      session     required      pam_winbind.so use_first_pass
    • Для ubuntu:
      правим "/etc/pam.d/common-session" путём добавления в него следущей строки:
      ...
      session required        pam_mkhomedir.so umask=0022 skel=/etc/skel
      ...

      Другие файлы "/etc/pam.d/common-*" трогать не нужно, там уже всё необходимое проставлено.

  15. Открываем ещё одну консоль и пытаемся зайти систему, используя учётные данные AD.
    Так как в "/etc/pam.d/system-auth" мы прописали "session required pam_mkhomedir.so umask=0022 skel=/etc/skel", при входе пользователю будет автоматически создан локальный домашний каталог.
  16. Убеждаемся, что "smbd", "nmbd" и "winbind" стартуют при запуске системы:
    chkconfig --list smb
    chkconfig --list winbind
    • если везде указано "off", разрешаем запуск:
      chkconfig smb on
      chkconfig winbind on
  17. Перегружаем компьютер и пользуемся.
 
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki Donate