Ввод компьютера в домен Windows Сравнение версий

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:ввод_в_домен_windows [2011/07/12 21:05]
[Настройка Samba и вход в домен]
wiki:ввод_в_домен_windows [2016/06/02 11:59] (текущий)
[Добавление Winbind в качестве источника пользователей и групп]
Строка 2: Строка 2:
  
 ===== Введение ===== ===== Введение =====
-Зачастую возникает необходимость ввести Linux машину в существующий домен Windows. Например,​ чтобы сделать файловый сервер с помощью Samba. Сделать это очень просто,​ для этого вам понадобятся клиент Kerberos, Samba и Winbind.+Зачастую возникает необходимость ввести Linux-машину в существующий домен Windows. Например,​ чтобы сделать файловый сервер с помощью Samba. Сделать это очень просто,​ для этого вам понадобятся клиент Kerberos, Samba и Winbind.
  
 Перед установкой желательно обновиться:​ Перед установкой желательно обновиться:​
   sudo aptitude update   sudo aptitude update
   sudo aptitude upgrade   sudo aptitude upgrade
- 
  
 Установить всё это добро можно командой:​ Установить всё это добро можно командой:​
  
-  sudo aptitude install krb5-user samba winbind +  sudo aptitude install krb5-user samba winbind  
- +   
 +Также может понадобиться установить следующие библиотеки:​ 
 +   
 +  sudo aptitude install libpam-krb5 libpam-winbind libnss-winbind 
 Либо, если вы используете Ubuntu Desktop, те же пакеты можно поставить через менеджер пакетов Synaptic. Либо, если вы используете Ubuntu Desktop, те же пакеты можно поставить через менеджер пакетов Synaptic.
  
Строка 21: Строка 24:
 Для начала необходимо изменить настройки DNS на вашей машине,​ прописав в качестве DNS сервера доменконтроллер((Конечно,​ если ваша сеть не настроена так, что DNS сервер домена не совпадает с доменконтроллером. Кроме того, если у вас есть несколько DNS серверов,​ то стоит прописать их все.)) и в качестве домена поиска - нужный домен. Для начала необходимо изменить настройки DNS на вашей машине,​ прописав в качестве DNS сервера доменконтроллер((Конечно,​ если ваша сеть не настроена так, что DNS сервер домена не совпадает с доменконтроллером. Кроме того, если у вас есть несколько DNS серверов,​ то стоит прописать их все.)) и в качестве домена поиска - нужный домен.
  
-В Ubuntu Desktop это можно сделать через [[Network Manager]], в Ubuntu Server необходимо изменить содержимое файла ''/​etc/​resolv.conf''​ на примерно такое:+Если у вас статический IP-адрес,​ то в Ubuntu Desktop это можно сделать через [[Network Manager]], в Ubuntu Server необходимо изменить содержимое файла ''/​etc/​resolv.conf''​ на примерно такое:
  
 <​file>​ <​file>​
Строка 30: Строка 33:
 </​file>​ </​file>​
  
-<note tip>Если ip адрес ​присваивается ​DHCP сервером то после перезагрузки resolv.conf ​перезапишется. +В современных дистрибутивах файл resolv.conf создается ​автоматически и править ​вручную его не нужно
-Если нужно оставить получение адресов с помощью DHCP, но формируется "​неправильный"​ resolv.conf'​ , например присутствует только ​ +Для ​получение нужного ​результата нужно добавить необходимые изменения  в файл: ''/​etc/​resolvconf/​resolv.conf.d/​head''​ 
-один nameserver 192.168.0.1 ​,и не указаны ​ domainи search, то проще всего отредактировать /​etc/​dhcp/​dhclient.conf +Данные которые будут добавлены в него, будут автоматически вставлены в файл ''/​etc/​resolv.conf''​ 
-Чтобы появились записи domain и search нужно убрать комментарий перед строкой supersede domain-name,​ и вписать свой домен:+ 
 +Если IP-адрес ​динамический и присваивается DHCP сервером то после перезагрузки resolv.conf может ​формироваться "​неправильный"​ resolv.conf'​ , например присутствует только один nameserver 192.168.0.1 и не указаны domain и search. Нужно отредактировать ​''​/​etc/​dhcp/​dhclient.conf''​. ​Чтобы появились записи domain и search нужно убрать комментарий перед строкой supersede domain-name,​ и вписать свой домен: 
 <​file>​ <​file>​
 supersede domain-name "​domain.com";​ supersede domain-name "​domain.com";​
 </​file>​ </​file>​
 +
 Чтобы добавить еще один nameserver нужно убрать комментарий перед prepend domain-name-servers и указать ip сервера:​ Чтобы добавить еще один nameserver нужно убрать комментарий перед prepend domain-name-servers и указать ip сервера:​
 +
 <​file>​ <​file>​
 prepend domain-name-servers 192.168.0.2;​ prepend domain-name-servers 192.168.0.2;​
 </​file>​ </​file>​
-</note>+ 
 +Для применения изменений остается перезапустить службу:​ 
 + 
 +  ​/etc/​init.d/​networking restart 
 +  ​
  
 Теперь убедитесь,​ что вы задали нужное имя компьютера в файле ''/​etc/​hostname'':​ Теперь убедитесь,​ что вы задали нужное имя компьютера в файле ''/​etc/​hostname'':​
Строка 57: Строка 68:
 </​file>​ </​file>​
  
-Если ​вы что-то поменяете - перезагрузите компьютер для применения изменений:+Сразу нужно проверить ​что ​нормально пингуется наш контроллер домена, по короткому и полному ​имени, чтобы в будушем не получать ошибки что контроллер домена не найден:
  
-<​file>​ +  ping dc 
-sudo init 6 +  ping dc.domain.com 
-</​file>​+ 
 +Не обязательно,​ но если вы что-то поменяете - перезагрузите компьютер для применения изменений.
  
 ===== Настройка синхронизации времени ===== ===== Настройка синхронизации времени =====
  
-Далее необходимо настроить синхронизацию времени с доменконтроллером. ​Тк если разница будет более 5 минут мы не сможем получить лист от Kerberos. +Далее необходимо настроить синхронизацию времени с доменконтроллером. ​Если разница будет более 5 минут мы не сможем получить лист от Kerberos. 
-Для единовременной синхронизации можно воспользоваться коммандой:​ +Для единовременной синхронизации можно воспользоваться командой:​
  
   sudo net time set dc   sudo net time set dc
  
-Автоматическая синхронизация настраивается с помощью ''​ntpd'',​ это демон будет периодически выполнять синхронизацию. Для начала его необходимо установить:​+Если в сети существует сервер точного времени,​ то можно воспользоваться им или любым публичным:​ 
 + 
 +  ntpdate ntp.mobatime.ru 
 +  
 +Автоматическая ​же синхронизация настраивается с помощью ''​ntpd'',​ это демон будет периодически выполнять синхронизацию. Для начала его необходимо установить:​
  
   sudo aptitude install ntp   sudo aptitude install ntp
- +
 Теперь исправьте файл ''/​etc/​ntp.conf'',​ добавив в него информацию о вашем сервере времени:​ Теперь исправьте файл ''/​etc/​ntp.conf'',​ добавив в него информацию о вашем сервере времени:​
  
 <​file>​ <​file>​
-# ... 
- 
 # You do need to talk to an NTP server or two (or three). # You do need to talk to an NTP server or two (or three).
 server dc.domain.com server dc.domain.com
- 
-# ... 
 </​file>​ </​file>​
  
Строка 94: Строка 105:
 ===== Настройка авторизации через Kerberos ===== ===== Настройка авторизации через Kerberos =====
  
-Начнём с настройки авторизации в домене через протокол Kerberos. Вам потребуется изменить файл ''/​etc/​krb5.conf''​. ​ +Начнём с настройки авторизации в домене через протокол Kerberos. Вам потребуется изменить файл ''/​etc/​krb5.conf''​. ​В общем случае он выглядит так:
-Минимальная конфигурация для получения листа+
- +
-<​file>​ +
-[libdefaults] +
- default_realm = DOMAIN.COM +
-</​file>​ +
- +
- +
-У меня он выглядит так:+
  
 <​file>​ <​file>​
Строка 112: Строка 114:
  forwardable = true  forwardable = true
  proxiable = true  proxiable = true
 + v4_instance_resolve = false
 + v4_name_convert = {
 + host = {
 + rcmd = host
 + ftp = ftp
 + }
 + plain = {
 + something = something-else
 + }
 + }
 + fcc-mit-ticketflags = true
  
 [realms] [realms]
Строка 130: Строка 143:
 </​file>​ </​file>​
  
-Вам конечно нужно изменить ''​domain.com''​ на ваш домен и ''​dc''​ и ''​dc2''​ на ваши доменконтроллеры. Кстати,​ возможно вам понадобится написать полные имена доменконтроллеров, т.е. в моём случае ​''​dc.domain.com''​ и ''​dc2.domain.com''​. Поскольку у меня прописан домен поиска в DNS, то мне это делать не нужно.+Вамконечнонужно изменить ''​domain.com''​ на ваш домен и ''​dc''​ и ''​dc2''​ на ваши доменконтроллеры. Кстати,​ возможно вам понадобится написать полные имена доменконтроллеров ''​dc.domain.com''​ и ''​dc2.domain.com''​. Поскольку у меня прописан домен поиска в DNS, то мне это делать не нужно.
  
 <note important>​Обратите особое внимание на регистр написания имени домена - везде, где домен написан в верхнем регистре,​ его обязательно нужно писать именно в верхнем регистре. Иначе волшебным образом ничего может не заработать.</​note>​ <note important>​Обратите особое внимание на регистр написания имени домена - везде, где домен написан в верхнем регистре,​ его обязательно нужно писать именно в верхнем регистре. Иначе волшебным образом ничего может не заработать.</​note>​
  
-Это далеко не все возможные опции настройки Kerberos, только ​самые ​основные. Однако их обычно достаточно.+Это не все возможные опции настройки Kerberos, только основные. Однако их обычно достаточно.
  
 Теперь настало время проверить,​ что мы можем авторизоваться в домене. Для этого выполните команду Теперь настало время проверить,​ что мы можем авторизоваться в домене. Для этого выполните команду
  
   kinit username@DOMAIN.COM   kinit username@DOMAIN.COM
-  
-Если домен один, или нужно получить лист для домена по умолчанию достаточно набрать: ​ 
  
-  kinit username 
-  ​ 
 Вместо username естественно стоит вписать имя существующего пользователя домена. Вместо username естественно стоит вписать имя существующего пользователя домена.
  
Строка 153: Строка 162:
  
   klist   klist
- +
 Удалить все билеты (они вам вообще говоря не нужны) можно командой Удалить все билеты (они вам вообще говоря не нужны) можно командой
  
   kdestroy   kdestroy
- +
 Итак, будем считать,​ что авторизацию вы настроили,​ пора настроить непосредственно вход в домен, об этом после списка распространённых ошибок ''​kinit''​. Итак, будем считать,​ что авторизацию вы настроили,​ пора настроить непосредственно вход в домен, об этом после списка распространённых ошибок ''​kinit''​.
-  ​+
 ==== Распространённые ошибки kinit ==== ==== Распространённые ошибки kinit ====
  
Строка 165: Строка 174:
 kinit(v5): Clock skew too great while getting initial credentials kinit(v5): Clock skew too great while getting initial credentials
 </​file>​ </​file>​
-Это значит,​ у вашего компьютера не синхронизировано время с доменконтроллером (см. выше)+Это значит, ​что ​у вашего компьютера не синхронизировано время с доменконтроллером (см. выше).
    
- <​file>​+<​file>​
 kinit(v5): Preauthentication failed while getting initial credentials kinit(v5): Preauthentication failed while getting initial credentials
 </​file>​ </​file>​
Строка 192: Строка 201:
 ===== Настройка Samba и вход в домен ===== ===== Настройка Samba и вход в домен =====
  
-Для того, чтобы войти в домен, необходимо прописать правильные настройки в файле ''/​etc/​samba/​smb.conf''​. На данном этапе вас должны интересовать только некоторые опции из секции ''​[global]''​. Ниже - пример части конфига Samba с комментариями по поводу значения важных параметров+Для того, чтобы войти в домен, необходимо прописать правильные настройки в файле ''/​etc/​samba/​smb.conf''​. На данном этапе вас должны интересовать только некоторые опции из секции ''​[global]''​. Ниже - пример части ​файла ​конфигурации ​Samba с комментариями по поводу значения важных параметров:​
- +
-Минимальная конфигурация для входа в домен буквально 4 строки,​ будет выглядеть так: +
-<​file>​ +
-[global] +
-   ​workgroup = DOMAIN +
-   realm = DOMAIN.COM +
-   ​security = ADS +
-</​file>​ +
- +
-Пример с указанием дополнительных параметров,​ и их описанием:+
  
 <​file>​ <​file>​
Строка 216: Строка 215:
    # Просто важные ​    # Просто важные ​
    dns proxy = no     dns proxy = no 
-   ​socket options = TCP_NODELAY ​# Маожно не указывать,​ тк совпадает с значением по умолчанию+   ​socket options = TCP_NODELAY
  
    # Если вы не хотите,​ чтобы самба пыталась при случае вылезти в лидеры в домене или рабочей группе,​    # Если вы не хотите,​ чтобы самба пыталась при случае вылезти в лидеры в домене или рабочей группе,​
    # или даже стать доменконтроллером,​ то всегда прописывайте эти пять опций именно в таком виде    # или даже стать доменконтроллером,​ то всегда прописывайте эти пять опций именно в таком виде
-   ​domain master = no # по умолчанию domain master = auto +   ​domain master = no 
-   local master = no # по умолчанию local master = yes +   local master = no 
-   ​preferred master = no # preferred master = auto +   ​preferred master = no 
-   os level = 0 # по умолчанию os level = 20 +   os level = 0 
-   domain logons = no # Можно не указывать явно , тк по умолчанию ​domain logons = no+   ​domain logons = no
  
    # Отключить поддержку принтеров    # Отключить поддержку принтеров
Строка 236: Строка 235:
  
   testparm   testparm
-  + 
-Она проверит ваш конфиг на ошибки и выдаст суммарную сводку о нём:+Она проверит вашу конфигурацию ​на ошибки и выдаст суммарную сводку о нём:
  
 <​code>​ <​code>​
Строка 249: Строка 248:
 Как видно мы задали правильные параметры для того, чтобы наш компьютер стал членом домена. Теперь пора попытаться непосредственно войти в домен. Для этого введите команду:​ Как видно мы задали правильные параметры для того, чтобы наш компьютер стал членом домена. Теперь пора попытаться непосредственно войти в домен. Для этого введите команду:​
  
-  net ads join +  net ads join -U username ​-D DOMAIN
-   +
-Часто используемые параметры:​ +
- +
-['' ​-U username%password ''​ ] Обязательный параметр,​ вместо ''​username''​ необходимо подставить имя пользователя с правами администратора домена,​ и указать пароль.+
  
-[ ''​ -D DOMAIN ''​ ] ''​DOMAIN''​ - собственно сам домен, домен можно и не указывать,​ но лучше всё же это всегда делать - хуже не будет. +И в случае успеха вы увидите что-то похожее на:
- +
-[ ''​-S win_domain_controller ''​] ​ ''​win_domain_controller'',​ можно не указывать,​ но бывают случаи когда автоматически сервер не находит контроллер домена. +
- +
-[ ''​createcomputer="​OU/​OU/​..."​ ''​] ​ В AD часто используется OU (Organizational Unit), ​ есть в корне домена OU = Office, в нем OU = Cabinet, чтобы сразу добавить в нужный можно указать так: sudo net ads join -U username createcomputer="​Office/​Cabinet"​ +
-  +
-Указываете нужные параметры, ​в случае успеха вы увидите что-то похожее на:+
  
 <​code>​ <​code>​
Строка 270: Строка 259:
 </​code>​ </​code>​
  
-Если больше никаких сообщений нет - значит всё хорошо. Попробуйте попинговать свой компьютер по имени с другого члена домена, чтобы убедиться,​ что в домене всё прописалось так, как ​надо.+==== Используемые параметры команды net ==== 
  
-Но иногда после сообщения о присоединении к домену выдаётся ошибка наподобие: ​+''​-U username%password'':​ Обязательный параметр,​ вместо ''​username'' ​необходимо ​подставить имя пользователя с правами администратора ​доменаи указать пароль.
  
-<​code>​ +''​-D DOMAIN'':​ ''​DOMAIN''​ - собственно сам домен, домен можно и не указывать,​ но лучше всё же это всегда делать - хуже не будет.
-DNS update failed! +
-</​code>​+
  
-<​note>​Решение данной проблемы на Ubuntu Server 10.10  amd64 (у 10.04 amd64 была похожая проблема+''​-S win_domain_controller'':​ ''​win_domain_controller'', ​можно не указыватьно бывают случаи когда автоматически сервер не находит контроллер ​домена.
-Последовательность моих исследований такая(тк сервера виртуальные с помощью Snapshot ​достаточно быстро ​докопался до истины):+
  
-1) На другом сервере ​ Ubuntu Server 11.04  amd64 с такими же конфигами все заработало, следовательно проблема с АД отпала, сомнения ​что ​я ошибся набирая ​очередной конфиг исчезли.+''​createcomputer="​OU/​OU/​..."​ '':​ В AD часто используется OU (Organizational Unit)есть ​в корне домена OU = Officeв нем OU = Cabinet, ​чтобы сразу добавить в нужный можно указать так: sudo net ads join -U username createcomputer="​Office/​Cabinet"​.
  
-2) Ради эксперимента ​попробовал Ubuntu Server 10.10  amd64 обновить до Ubuntu Server 11.04  amd64, ​делаю Snapshot, обновляюсь, и все заработало!+Если больше никаких ​сообщений нет - значит всё хорошо. Попробуйте попинговать свой компьютер по имени с другого члена ​домена, чтобы убедиться,​ что в домене всё прописалось так, как надо.
  
-3) Решил что ради самбы обновлять весь дистрибутив смысла ​нет, делаю откат до предидущего Snapshot, я  скачал с репозитариев исходники и собрал deb пакеты самбы, потом их успешно установил (rules не менял) и все отлично заработало,​ вывод что в Ubuntu Server 10.10  amd64 самба пакеты собраны как то криво.+Так же можно набрать команду:
  
-4) Сохранил получившиеся deb пакеты на другом сервере, откатился на предидущий Snapshot, установил deb пакеты, все отлично работает</note>+  net ads testjoin 
 + 
 +Если все ​хорошо, можно увидеть: 
 + 
 +<​code>​ 
 +#net ads testjoin 
 +Join is OK 
 +</​code>​ 
 + 
 +Но иногда после сообщения о присоединении к домену выдаётся ошибка наподобие((Пользователю mag_box2 удалось решить эту проблему таким [[http://​forum.ubuntu.ru/​index.php?​topic=106391.msg1202562#​msg1202562|способом]].)):  
 + 
 +<​code>​ 
 +DNS update failed! 
 +</code>
  
 Это не очень хорошо,​ и в этом случае рекомендуется ещё раз прочитать раздел про настройку DNS чуть выше и понять,​ что же вы сделали не так. После этого нужно удалить компьютер из домена и попытаться ввести его заново. Если вы твердо уверены,​ что всё настроили верно, а DNS всё равно не обновляется,​ то можно внести вручную запись для вашего компьютера на ваш DNS сервер и всё будет работать. Конечно,​ если нет никаких других ошибок,​ и вы успешно вошли в домен. Однако лучше всё же разберитесь,​ почему DNS не обновляется автоматически. Это может быть связано не только с вашим компьютером,​ но и с некорректной настройкой AD. Это не очень хорошо,​ и в этом случае рекомендуется ещё раз прочитать раздел про настройку DNS чуть выше и понять,​ что же вы сделали не так. После этого нужно удалить компьютер из домена и попытаться ввести его заново. Если вы твердо уверены,​ что всё настроили верно, а DNS всё равно не обновляется,​ то можно внести вручную запись для вашего компьютера на ваш DNS сервер и всё будет работать. Конечно,​ если нет никаких других ошибок,​ и вы успешно вошли в домен. Однако лучше всё же разберитесь,​ почему DNS не обновляется автоматически. Это может быть связано не только с вашим компьютером,​ но и с некорректной настройкой AD.
Строка 328: Строка 327:
    # Для автоматического обновления билета Kerberos модулем pam_winbind.so нужно добавить строчку    # Для автоматического обновления билета Kerberos модулем pam_winbind.so нужно добавить строчку
    ​winbind refresh tickets = yes    ​winbind refresh tickets = yes
-   # Для возможности оффлайн-авторизации при недоступности доменконтроллера необходимо вписать 
-   ​winbind offline logon = yes 
-   # Период кэширования учетных записей,​ по умолчанию равен 300 секунд 
-   ​winbind cache time = 1440 
 </​file>​ </​file>​
  
-Просмотрите конфиг самбы, полный минимально рабочий конфиг будет таким: +<note important>​Параметры :
-<​file>​ +
-[global] +
-   ​workgroup = DOMAIN +
-   realm = DOMAIN.COM +
-   ​security = ADS +
-   idmap uid = 10000 - 40000 +
-   idmap gid = 10000 - 40000 +
-   ​winbind enum groups = yes +
-   ​winbind enum users = yes +
-   ​winbind use default domain = yes +
-   ​template shell = /bin/bash +
-   ​winbind refresh tickets = yes +
-</​file>​+
  
-После внесения изменений нужно набрать:​+idmap uid = 10000 - 40000
  
-<​file>​ +idmap gid = 10000 - 40000
-  testparm +
-</​file>​+
  
-И убедиться ​что ошибок нет. +в новых версиях Samba уже устарели и при проверке конфига самбы с помощью testparm 
-   +будет выдваться ​предупреждение:​ 
-Теперь перезапустите демон Winbind и Sambaв следующем порядке:​+ 
 +WARNING: The "idmap uid" option is deprecated 
 + 
 +WARNING: The "idmap gid" option is deprecated 
 + 
 +Чтобы убрать предупреждения нужно заменить эти строки на новые
 + 
 +idmap config * : range = 10000-20000 
 + 
 +idmap config * : backend = tdb</​note>​ 
 + 
 +Теперь перезапустите демон Winbind и Samba в следующем порядке:​
  
   sudo /​etc/​init.d/​winbind stop   sudo /​etc/​init.d/​winbind stop
   sudo smbd restart   sudo smbd restart
   sudo /​etc/​init.d/​winbind start    sudo /​etc/​init.d/​winbind start 
 +
 +Запускаем ​
 +  sudo testparm
 +
 +Смотрим есть ли ошибки или предупреждения,​ если появится:​
 +
 +"​rlimit_max:​ rlimit_max (1024) below minimum Windows limit (16384)"​
 +
 +Без перезагрузки можно устранить так:
 +  ulimit -n 16384
 +
 +Для сохранения после перезагрузки отредактировать файл /​etc/​security/​limits.conf
 +  ​
 +  # Добавить в конец файла строки:​
 +  *               ​- ​   nofile ​           16384
 +  root            -    nofile ​           16384
  
 После перезапуска проверьте,​ что Winbind установил доверительные отношения с AD командой:​ После перезапуска проверьте,​ что Winbind установил доверительные отношения с AD командой:​
Строка 368: Строка 375:
   checking the trust secret for domain DCN via RPC calls succeeded   checking the trust secret for domain DCN via RPC calls succeeded
  
-А так же, что Winbind увидел пользователей и группы из AD командами:​+А так же, что Winbind увидел пользователей и группы из AD командами((Если пользователей домена очень много, то команды будут выполняться тоже очень долго.)):
  
   wbinfo -u   wbinfo -u
Строка 376: Строка 383:
  
 Итак, Winbind работает,​ однако в систему он ещё не интегрирован. Итак, Winbind работает,​ однако в систему он ещё не интегрирован.
- 
 ===== Добавление Winbind в качестве источника пользователей и групп ===== ===== Добавление Winbind в качестве источника пользователей и групп =====
  
Строка 394: Строка 400:
 group: ​         compat winbind group: ​         compat winbind
 </​file>​ </​file>​
 +
 +также рекомендую привести строку files в файле ''/​etc/​nsswitch.conf''​ к виду:
 +
 +<​file>​
 +files: ​         dns mdns4_minimal[NotFoud=return] mdns4
 +</​file> ​
 +
 +<note important>​ubuntu server 14.04, файл ''/​etc/​nsswitch.conf''​ не содержал строку ​
 +"​files: ​         dns mdns4_minimal[NotFoud=return] mdns4"
 +вместо неё было:
 +"​hosts: ​         files mdns4_minimal [NOTFOUND=return] dns wins"
 +Которую я преобразовал в:
 +"​hosts: ​         dns mdns4_minimal[NotFoud=return] mdns4 files"
 +после чего всё заработало
 +</​note>​
  
 Теперь проверьте,​ что Ubuntu запрашивает у Winbind информацию о пользователях и группах,​ выполнив Теперь проверьте,​ что Ubuntu запрашивает у Winbind информацию о пользователях и группах,​ выполнив
Строка 403: Строка 424:
  
 Теперь вы можете взять любого пользователя домена и сделать его, например,​ владельцем какого-нибудь файла. Теперь вы можете взять любого пользователя домена и сделать его, например,​ владельцем какого-нибудь файла.
- 
 ===== Авторизация в Ubuntu через пользователей домена ===== ===== Авторизация в Ubuntu через пользователей домена =====
  
 Несмотря на то, что все пользователи домена фактически стали полноценными пользователями системы (в чём можно убедиться,​ выполнив последние две команды из предыдущего раздела),​ зайти ни под кем из них в систему всё ещё нельзя. Для включения возможности авторизации пользователей домена на компьютере с Ubuntu необходимо настроить PAM на работу с Winbind. Несмотря на то, что все пользователи домена фактически стали полноценными пользователями системы (в чём можно убедиться,​ выполнив последние две команды из предыдущего раздела),​ зайти ни под кем из них в систему всё ещё нельзя. Для включения возможности авторизации пользователей домена на компьютере с Ubuntu необходимо настроить PAM на работу с Winbind.
 +
 +==== Он-лайн авторизация ====
  
 Для **Ubuntu 10.04 и выше** добавьте всего одну строку в файле ''/​etc/​pam.d/​common-session'',​ т.к. PAM и так неплохо справляется с авторизацией:​ Для **Ubuntu 10.04 и выше** добавьте всего одну строку в файле ''/​etc/​pam.d/​common-session'',​ т.к. PAM и так неплохо справляется с авторизацией:​
Строка 412: Строка 434:
 <​file>​ <​file>​
 session ​ optional ​ pam_mkhomedir.so skel=/​etc/​skel/​ umask=0077 session ​ optional ​ pam_mkhomedir.so skel=/​etc/​skel/​ umask=0077
 +</​file>​
 +
 +Для **Ubuntu 13.10** чтобы появилось поле ручного ввода логина необходимо в любой файл из папки ''/​etc/​lightdm/​lightdm.conf/''​ снизу добавить строку:​
 +
 +<​file>​
 +greeter-show-manual-login=true
 </​file>​ </​file>​
  
 Для **Ubuntu 9.10 и ниже** придется редактировать несколько файлов (но никто не запрещает использовать этот способ и в 10.04 - он тоже работает):​ Для **Ubuntu 9.10 и ниже** придется редактировать несколько файлов (но никто не запрещает использовать этот способ и в 10.04 - он тоже работает):​
 +
 <note important>​Последовательность строк в файлах имеет значение! </​note>​ <note important>​Последовательность строк в файлах имеет значение! </​note>​
  
Строка 448: Строка 477:
  
 И, наконец,​ необходимо перенести запуск Winbind при загрузке системы после всех остальных служб (по умолчанию он запускается с индексом 20). Для этого в терминале выполните следующую команду:​ И, наконец,​ необходимо перенести запуск Winbind при загрузке системы после всех остальных служб (по умолчанию он запускается с индексом 20). Для этого в терминале выполните следующую команду:​
-<​file>​ + 
-sudo bash -c "for i in 2 3 4 5; do mv /​etc/​rc$i.d/​S20winbind /​etc/​rc$i.d/​S99winbind;​ done" +  sudo bash -c "for i in 2 3 4 5; do mv /​etc/​rc$i.d/​S20winbind /​etc/​rc$i.d/​S99winbind;​ done"
-</​file>​+
  
 Что эквивалентно запуску для каждого уровня (в примере - 4) команды:​ Что эквивалентно запуску для каждого уровня (в примере - 4) команды:​
  
   mv /​etc/​rc4.d/​S20winbind /​etc/​rc4.d/​S99winbind   mv /​etc/​rc4.d/​S20winbind /​etc/​rc4.d/​S99winbind
 +  ​
 +<note important>​В некоторых случаях winbind может иметь иной уровень запуска (например,​ S02winbind). Поэтому сначала проверьте имена файлов,​ вполнив команду "ls /​etc/​rc{2,​3,​4,​5}.d/​ | grep winbind"​ (без кавычек).</​note>​
  
 Готово,​ все настройки завершены. Перезагружайтесь и пытайтесь войти с учетной записью пользователя домена. Готово,​ все настройки завершены. Перезагружайтесь и пытайтесь войти с учетной записью пользователя домена.
 +
 +==== Офф-лайн авторизация ====
 +
 +Часто возникает ситуация,​ когда домен-контроллер недоступен по различным причинам — профилактика,​ отключение света или вы принесли ноутбук домой и хотите поработать. В этом случае для Winbind можно настроить кэширование учетных записей пользователей домена. Для этого необходимо сделать следующее.
 +Добавьте в секцию ''​[global]''​ файла ''/​etc/​samba/​smb.conf''​ следующие строки:​
 +
 +<​file>​
 +[global]
 +   # Возможность оффлайн-авторизации при недоступности доменконтроллера
 +   ​winbind offline logon = yes
 +   # Период кэширования учетных записей,​ по умолчанию равен 300 секунд
 +   ​winbind cache time = 300
 +   # Необязательная настройка,​ но избавляет от нудных пауз, указываем контроллер домена dc, 
 +   # можно указать и ip, но это является плохим тоном
 +   ​password server = dc
 +</​file>​
 +
 +Обычно этого достаточно. Если же возникают ошибки,​ то необходимо создать файл ''/​etc/​security/​pam_winbind.conf''​ со следующим содержанием((По мотивам man smb.conf и [[http://​forum.ubuntu.ru/​index.php?​topic=163264.0;​topicseen|темы форума]])):​
 +
 +<note warning>​Внимание! При использовании советов ниже может возникать совершенно случайная ошибка "​Сбой аутентификации"​! Поэтому все что Вы делаете,​ Вы делаете на свой страх и риск!</​note>​
 +
 +<​file>​
 +#
 +# pam_winbind configuration file
 +#
 +# /​etc/​security/​pam_winbind.conf
 +#
 +[global]
 +  # turn on debugging
 +  debug = no
 +  # request a cached login if possible
 +  # (needs "​winbind offline logon = yes" in smb.conf)
 +  cached_login = yes
 +  # authenticate using kerberos
 +  krb5_auth = yes
 +  # when using kerberos, request a "​FILE"​ krb5 credential cache type
 +  # (leave empty to just do krb5 authentication but not have a ticket
 +  # afterwards)
 +  krb5_ccache_type = FILE
 +  # make successful authentication dependend on membership of one SID
 +  # (can also take a name)
 +  ;​require_membership_of =
 +  silent = yes
 +</​file>​
 +
 +Файл ''/​etc/​pam.d/​gnome-screensaver''​ в таком случае принимает вид:
 +
 +<​file>​
 +auth    sufficient ​     pam_unix.so nullok_secure
 +auth    sufficient ​     pam_winbind.so use_first_pass
 +auth    required ​       pam_deny.so
 +</​file>​
 +
 +А также изменяется файл ''/​etc/​pam.d/​common-auth'':​
 +
 +<​file>​
 +auth    optional ​       pam_group.so
 +auth    sufficient ​     pam_unix.so nullok_secure ​ use_first_pass
 +auth    sufficient ​     pam_winbind.so use_first_pass
 +auth    required ​       pam_deny.so
 +</​file>​
 +
 +
  
 ===== Ссылки ===== ===== Ссылки =====
Строка 464: Строка 557:
  
 {{tag> HOWTO Администрирование Samba Kerberos Krb Winbind AD Файловый_сервер}} {{tag> HOWTO Администрирование Samba Kerberos Krb Winbind AD Файловый_сервер}}
-