Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
wiki:ввод_в_домен_windows [2011/07/12 21:00] [Настройка 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> | ||
Строка 247: | Строка 246: | ||
</code> | </code> | ||
- | Как видно мы задали правильные параметры для того, чтобы наш компьютер стал членом домена. Теперь пора попытаться непосредственно войти в домен. Для этого введите команду net ads join. | + | Как видно мы задали правильные параметры для того, чтобы наш компьютер стал членом домена. Теперь пора попытаться непосредственно войти в домен. Для этого введите команду: |
- | Часто используемые параметры: | + | |
- | [ -U username%password ] Обязательный параметр, вместо ''username'' необходимо подставить имя пользователя с правами администратора домена, и указать пароль. | + | net ads join -U username -D DOMAIN |
- | [ -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> | ||
Строка 266: | Строка 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. | ||
Строка 324: | Строка 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 командой: | ||
Строка 364: | Строка 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 | ||
Строка 372: | Строка 383: | ||
Итак, Winbind работает, однако в систему он ещё не интегрирован. | Итак, Winbind работает, однако в систему он ещё не интегрирован. | ||
- | |||
===== Добавление Winbind в качестве источника пользователей и групп ===== | ===== Добавление Winbind в качестве источника пользователей и групп ===== | ||
Строка 390: | Строка 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 информацию о пользователях и группах, выполнив | ||
Строка 399: | Строка 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 и так неплохо справляется с авторизацией: | ||
Строка 408: | Строка 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> | ||
Строка 444: | Строка 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> | ||
+ | |||
+ | |||
===== Ссылки ===== | ===== Ссылки ===== | ||
Строка 460: | Строка 557: | ||
{{tag> HOWTO Администрирование Samba Kerberos Krb Winbind AD Файловый_сервер}} | {{tag> HOWTO Администрирование Samba Kerberos Krb Winbind AD Файловый_сервер}} | ||
- |