Ввод в домен на базе Windows 2003: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Нет описания правки
 
(не показано 38 промежуточных версий 12 участников)
Строка 1: Строка 1:
{{Historical}}
{{Attention|Статья устарела. Более новая статья: [[ActiveDirectoryLogin]]}}
== Ввод в домен на базе Win 2003 рабочей станции под управлением Simply Linux ==
== Ввод в домен на базе Win 2003 рабочей станции под управлением Simply Linux ==


Строка 13: Строка 17:
  samba-swat
  samba-swat
  samba-client
  samba-client
samba-winbind
  krb5-kinit
  krb5-kinit
  libkrb5
  libkrb5
Строка 87: Строка 92:
  smb            0:off 1:off 2:on 3:on 4:on 5:on 6:off
  smb            0:off 1:off 2:on 3:on 4:on 5:on 6:off


Делаем то же самое для winbindd:
Делаем то же самое для winbind:


  # chkconfig --list | grep winbindd
  # chkconfig --list | grep winbind
  winbindd           0:off 1:off 2:off 3:off 4:off 5:off 6:off
  winbind           0:off 1:off 2:off 3:off 4:off 5:off 6:off


  # chkconfig --levels 2345 winbindd on
  # chkconfig --levels 2345 winbind on


Запускаем сервис самба:
Запускаем сервис самба:
Строка 98: Строка 103:
  # service smb start
  # service smb start


Чтобы сервис swat запускался автоматически: в файле /etc/xinet.d/swat меняем значение disable с yes на no и перезапускаем службу:
Чтобы сервис swat запускался автоматически: в файле /etc/xinetd.d/swat меняем значение disable с yes на no и перезапускаем службу:


  # service xinetd restart
  # service xinetd restart
Строка 106: Строка 111:
Во вкладке GLOBALS ставим следующие значения:
Во вкладке GLOBALS ставим следующие значения:


Security = ads (это режим domain member)
  Workgroup = OFFICE (указываем первую часть имени домена)
  Workgroup = OFFICE (указываем первую часть имени домена)
  Realm = OFFICE.DOMEN.LOCAL (полное имя домена)
  Realm = OFFICE.DOMEN.LOCAL (полное имя домена)
  Netbios name = WSLINUX (netbios имя нашего компьютера)
  Netbios name = WSLINUX (netbios имя нашего компьютера)
Security = ads (это режим domain member)


Подтверждаем изменения нажав кнопку commit changes наверху страницы. И последние значения настраиваем, переключившись в режим advanced view:
Подтверждаем изменения нажав кнопку commit changes наверху страницы. И последние значения настраиваем, переключившись в режим advanced view (сложный):


  #  ip-адрес контроллера домена
  #  ip-адрес контроллера домена (в новой версии при Security = ads строку Password server требуется замаскировать)
  Password server = 192.168.10.11
  Password server = 192.168.10.11


Строка 119: Строка 124:
  idmap uid = 10000 - 40000
  idmap uid = 10000 - 40000
  idmap gid = 10000 - 40000
  idmap gid = 10000 - 40000
winbind enum users = yes
  winbind enum groups = yes
  winbind enum groups = yes
winbind enum users = yes
 


  # Использовать домен по умолчанию для имён пользователей. Без этой опции имена пользователей и групп
  # Использовать домен по умолчанию для имён пользователей. Без этой опции имена пользователей и групп
Строка 133: Строка 139:
  winbind refresh tickets = yes
  winbind refresh tickets = yes


Снова подтверждаем изменения. Далее во вкладке STATUS запускаем или перезапускаем службы, Restart All (замечу что winbindd на этом этапе еще не работает).
Снова подтверждаем изменения ('''сохранить изменения'''). Далее во вкладке STATUS запускаем или перезапускаем службы, Restart All (замечу что winbindd на этом этапе еще не работает).


=== Настраиваем синхронизацию времени с нашим контроллером домена ===
=== Настраиваем синхронизацию времени с нашим контроллером домена ===
Строка 164: Строка 170:
Для того что бы Kerberos производил аутентификацию на контролере домена, а не на локальной машине, правим /etc/krb5.conf.  Приводим его к виду (обратите внимание на регистр, где заглавными, так и должно быть):
Для того что бы Kerberos производил аутентификацию на контролере домена, а не на локальной машине, правим /etc/krb5.conf.  Приводим его к виду (обратите внимание на регистр, где заглавными, так и должно быть):


[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
  [libdefaults]
  [libdefaults]
  default_realm = OFFICE.DOMEN.LOCAL
  default_realm = OFFICE.DOMEN.LOCAL
Строка 179: Строка 180:
  OFFICE.DOMEN.LOCAL = {
  OFFICE.DOMEN.LOCAL = {
  kdc = 192.168.10.11
  kdc = 192.168.10.11
default_domain = office.domen.local
  }
  }
   
   
Строка 194: Строка 194:
  krb4_convert = false
  krb4_convert = false
  }
  }
:'''NB:''' При отсутствии параметра admin_server, у пользователя будет отсутствовать возможность сменить свой пароль средствами Kerberos --[[Участник:AlekseyAvdeev|solo]] 14:03, 2 ноября 2012 (MSK)


Пробуем получить билет авторизации:
Пробуем получить билет авторизации:
Строка 200: Строка 202:
  Password for mad_max@OFFICE.DOMEN.LOCAL:
  Password for mad_max@OFFICE.DOMEN.LOCAL:
   
   
где admin -- имя доменного админа, а OFFICE.DOMEN.LOCAL -- имя вашего домена.
где admin -- имя доменного админа, а OFFICE.DOMEN.LOCAL -- имя вашего домена (именно заглавными).


Если все прошло хорошо, в ответ на этот запрос вы ответа не получите.
Если все прошло хорошо, в ответ на этот запрос вы ответа не получите.
Строка 235: Строка 237:
   
   
где admin -- имя доменного админа, а admin's password — пароль доменного админа.
где admin -- имя доменного админа, а admin's password — пароль доменного админа.
:'''NB:''' Для корректного ввода в домен может потребоваться предварительный останов демонов smb и winbind --[[Участник:AlekseyAvdeev|solo]] 14:12, 2 ноября 2012 (MSK)


Проверить, что мы вошли в домен можно командой wbinfo -u (велика вероятность, что она отработает только после перезагрузки компьютера):
Проверить, что мы вошли в домен можно командой wbinfo -u (велика вероятность, что она отработает только после перезагрузки компьютера):
Строка 245: Строка 249:
  …
  …


Для того, чтобы в нашу систему можно было логиниться под доменными аккаунтами и авторизация шла через winbind, необходимо привести /etc/pam.d/gdm к виду:
Для того, чтобы в нашу систему можно было логиниться под доменными аккаунтами и авторизация шла через winbind, необходимо оставить {{path|/etc/pam.d/gdm}} или {{path|/etc/pam.d/lightdm}} в прежнем виде:
 
<source lang="text">#%PAM-1.0
auth            required        pam_shells.so
auth            required        pam_succeed_if.so quiet uid ne 0
auth            sufficient      pam_succeed_if.so user ingroup nopasswdlogin
auth            substack        common-login
auth            optional        pam_gnome_keyring.so
account        include        common-login
password        include        common-login
session        substack        common-login
session        optional        pam_console.so
-session        optional        pam_ck_connector.so
session        required        pam_namespace.so
session        optional        pam_gnome_keyring.so auto_start</source>


#%PAM-1.0
(Для KDE4 это файл /etc/pam.d/kde4)
#auth     required    pam_env.so
 
#auth     include    system-auth
А /etc/pam.d/system-auth-winbind к виду (если его нет, то создать):
#auth     required   pam_nologin.so
 
#account include    system-auth
<source lang="text">#%PAM-1.0
#password include    system-auth
auth           [success=2 default=ignore]      pam_tcb.so shadow fork prefix=$2y$ count=8 nullok
#session include    system-auth
auth           requisite      pam_succeed_if.so uid >= 500 quiet
#session optional    pam_console.so
auth           required        pam_winbind.so use_first_pass krb5_auth krb5_ccache_type=FILE
auth    include       system-auth-winbind
auth           required        pam_permit.so
  auth     required       pam_nologin.so
 
account  include       system-auth-winbind
account        [success=2 default=ignore]      pam_tcb.so shadow fork
password include       system-auth-winbind
account        requisite      pam_succeed_if.so uid >= 500 quiet
session  include       system-auth-winbind
account        required       pam_winbind.so use_first_pass
session  optional      pam_console.so  
account         required        pam_permit.so
 
password        required        pam_passwdqc.so config=/etc/passwdqc.conf
password        [success=2 default=ignore]      pam_tcb.so use_authtok shadow fork prefix=$2y$ count=8 nullok write_to=tcb
password        requisite      pam_succeed_if.so uid >= 500 quiet
password       required        pam_winbind.so
 
session        [success=2 default=ignore]      pam_tcb.so
session        requisite      pam_succeed_if.so uid >= 500 quiet
session        required        pam_winbind.so
session         required        pam_mktemp.so
session         required        pam_mkhomedir.so silent
session        required       pam_limits.so</source>
 
И /etc/pam.d/system-auth-use_first_pass-winbind к виду(если его нет, то создать):
   
<source lang="text">#%PAM-1.0
auth            [success=2 default=ignore]      pam_tcb.so shadow fork prefix=$2y$ count=8 nullok use_first_pass
auth           requisite       pam_succeed_if.so uid >= 500 quiet
auth            required       pam_winbind.so use_first_pass
auth           required        pam_permit.so
 
password        [success=2 default=ignore]      pam_tcb.so use_authtok shadow fork prefix=$2y$ count=8 nullok write_to=tcb
password        requisite      pam_succeed_if.so uid >= 500 quiet
password        required       pam_winbind.so use_authtok
password        required        pam_permit.so</source>


А /etc/pam.d/system-auth-winbind к виду:
Не забываем переключить авторизацию на winbind
:('''Внимание!''' Восле такой манипуляции на KDesktop 6 пропадает возможность залогиниться вообще, поэтому я решил сделать обход - см.Примечание --[[Участник:Tora-bora|Tora-bora]] 19:02, 19 октября 2012 (MSD))
# control system-auth winbind


#%PAM-1.0
С такими конфигами будет работать авторизация из gdm, gnome-screensaver, ssh.
auth        required    pam_securetty.so
auth        required    pam_nologin.so
#auth        sufficient    pam_winbind.so
auth        sufficient    pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login
auth        include        system-auth-use_first_pass
account        sufficient    pam_winbind.so
account        include        system-auth
password    sufficient    pam_winbind.so
password    include        system-auth-use_first_pass
# We use pam_mkhomedir to create home dirs for incoming domain users
# Note used umask, it will result in rwxr-x--x access rights
#session        required    pam_mkhomedir.so skel=/etc/skel/ umask=0026
session        required    pam_mkhomedir.so skel=/etc/skel/ umask=0077
session        include        system-auth


Перезагружаемся и можем логинится как локальными пользователями системы, так и доменными. Но стоить помнить один ньюанс. Если логин вашего локального пользователя совпадает с доменным, то будет попытка входа только локальным пользователем.
Перезагружаемся и можем логинится как локальными пользователями системы, так и доменными. Но стоить помнить один ньюанс. Если логин вашего локального пользователя совпадает с доменным, то будет попытка входа только локальным пользователем.
=== Добавляем пользователей с административными привилегиям (sudo) ===
Разрешаем всем вызывать sudo:
# control sudo public
Разрешаем группе администраторов LinuxAdmins (должна быть создана) повышать свои привилегии без запроса пароля:
# echo '%OFFICE\\LinuxAdmins ALL= NOPASSWD : ALL' >> /etc/sudoers


=== Настраиваем автомонтирование сетевых ресурсов ===
=== Настраиваем автомонтирование сетевых ресурсов ===
Строка 295: Строка 335:


Копируем /usr/share/doc/smbnetfs/smbnetfs.conf в /home/%username%/.smb/
Копируем /usr/share/doc/smbnetfs/smbnetfs.conf в /home/%username%/.smb/
Копируем /etc/samba/smb.conf в /home/%username%/.smb/


Добавляем пользователя в группу fuse.
Добавляем пользователя в группу fuse.
Строка 300: Строка 342:
Создаем в домашнем каталоге каталог (например) /home/%username%/net
Создаем в домашнем каталоге каталог (например) /home/%username%/net


Создаем скрипт запуска в удобном для нас месте /home/%username%/.smb/net со следующим содержанием:
Создаем скрипт запуска в удобном для нас месте (например) /home/%username%/.smb/net со следующим содержанием:


  #!/bin/sh
  #!/bin/sh
Строка 312: Строка 354:


* [http://privats.ru/2009/08/integraciya-linux-centos-v-active-directory-part-1.html http://privats.ru/2009/08/integraciya-linux-centos-v-active-directory-part-1.html]
* [http://privats.ru/2009/08/integraciya-linux-centos-v-active-directory-part-1.html http://privats.ru/2009/08/integraciya-linux-centos-v-active-directory-part-1.html]
* [http://ftp.sumylug.osdn.org.ua/pub/mirrors/ftp.altlinux.org/Master/2.2/docs/admin-html/ch12s07.html http://ftp.sumylug.osdn.org.ua/pub/mirrors/ftp.altlinux.org/Master/2.2/docs/admin-html/ch12s07.html]
* https://docs.altlinux.org/ru-RU/archive/2.2/html-single/master/admin-html/ch12s07.html
* [http://team.ru/soft/altlinux_domen.shtml http://team.ru/soft/altlinux_domen.shtml]
* [http://team.ru/soft/altlinux_domen.shtml http://team.ru/soft/altlinux_domen.shtml]
* [http://forum.altlinux.org/index.php?topic=376.0 http://forum.altlinux.org/index.php?topic=376.0]
* [http://forum.altlinux.org/index.php?topic=376.0 http://forum.altlinux.org/index.php?topic=376.0]
* [http://help.ubuntu.ru/wiki/ввод_в_домен_windows http://help.ubuntu.ru/wiki/ввод_в_домен_windows]
* [http://help.ubuntu.ru/wiki/ввод_в_домен_windows http://help.ubuntu.ru/wiki/ввод_в_домен_windows]
===Примечание===
====KDesktop====
На KDesktop мне не удалось настроить вход в домен AD используя
# control system-auth winbind
Взамен этого можно сделать некоторые ручные манипуляции
* делаем ссылку system-auth указывающую на system-auth-winbind
* делаем ссылку system-auth-use_first_pass указывающую на system-auth-use_first_pass-winbind
* файл /etc/pam.d/kde4 приводим к виду:
#%PAM-1.0
auth    required        pam_group.so
auth    include        system-auth-winbind
auth    required      pam_nologin.so
account  include        system-auth-winbind
password include        system-auth-winbind
session  include        system-auth-winbind
* файл /etc/pam.d/kde4-kscreensaver приводим к виду:
#%PAM-1.0
auth    required      pam_securetty.so
auth    required      pam_nologin.so
auth    sufficient    pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login
auth    sufficient    pam_tcb.so shadow fork prefix=$2a$ count=8 nullok use_first_pass
====Доступ к локальным группам====
:'''Внимание!''' Указанное ниже является не полностью безопасным решением, применяйте, если понимаете риск.
Чтобы все доменные пользователи были включены в определенные локальные группы (могли переключаться в root, запускать VirtualBOX и проч.) нужно добавить в /etc/security/group.conf
*;*;*;Al0000-2400;wheel,audio,cdrom,cdwriter,vboxusers,scanner
*первая звездочка - «все сервисы», они же - пути авторизации (например, xdm, kdm, su, ssh и т.д. и т.п.)
*вторая звездочка - «все tty».
*третья звездочка - «все пользователи». Тут можно сделать вышеупомянутое перечисление, через запятую.
*четвертое поле - это время. Здесь - «круглосуточно»
*пятое поле - в какие, собственно группы надо включить пользователя.
И включить строку
  auth    required        pam_group.so
в конф. файл входа в систему( для KDE это /etc/pam.d/kde4)
====Переустановка====
После переустановки системы (при сохранении раздела /home) необходимо выставить владельца домашнего каталога доменного пользователя (владелец меняется)
chown -R ivanov /home/DOMAIN/ivanov/
====Смена имени хоста====
Если нужно сменить имя хоста, править HOSTNAME в файле <code>/etc/sysconfig/network</code>
====Два IP-адреса====
Замечены проблемы со входом доменного пользователя при наличии двух IP-адресов. На этапе первого входа пользователя лучше от второго IP временно отказаться.
== Дополнения ==
* В случае появления ошибки ''ERROR_DNS_GSS_ERROR'', удалите пакет {{pkg|hostname-hook-hosts}} и удалите из {{path|/etc/hosts}} строку определения
127.0.0.1 <имя хоста>...
== Настройка LightDM ==
В {{path|/etc/lightdm/lightdm.conf}} раскомментируйте строку в группе {{cmd|[SeatDefaults]}}:
greeter-hide-users=true
Это позволит вводить имя пользователя вручную, а не прокручивать огромный список доступных доменныx пользователей.
Также полезно выключить выбор языка. В файле {{path|/etc/lightdm/lightdm-gtk-greeter.conf}} в группе {{cmd|[greeter]}} укажите
show-language-selector=false
В новых версиях lightdm-gtk-greeter можно указать кнопки явно:
show-indicators=a11y;power
Полный перечень доступных кнопок:
show-indicators=a11y;power;session;language


== Ссылки ==
* [http://help.ubuntu.ru/wiki/ввод_в_домен_windows Ввод компьютера в домен Windows (под Ubuntu)]
* [https://lists.samba.org/archive/samba/2012-December/170262.html Отладка аутентификации]
* https://help.ubuntu.com/community/ActiveDirectoryWinbindHowto


[[Категория:Admin]]
{{Category navigation|title=Домен|category=Домен|sortkey={{SUBPAGENAME}}}}

Текущая версия от 16:19, 21 декабря 2023

Small-pyramides.png
Архивная информация.
Описываемые в этой статье вещи больше не используются и оставлены только для обратной совместимости.


Внимание! Статья устарела. Более новая статья: ActiveDirectoryLogin


Ввод в домен на базе Win 2003 рабочей станции под управлением Simply Linux

Задача

Ввести в домен на базе Winows Server 2003 машину под управлением Simply Linux.

Дано

  1. Windows Server 2003;
  2. Simply Linux (обновленный до бранча 5.1);
  3. Права администратора домена OFFICE.DOMEN.LOCAL (имя вашего домена).

Устанавливаем необходимые пакеты

samba-swat
samba-client
samba-winbind
krb5-kinit
libkrb5
ntpdate
pam_mount

Настраиваем сетевое соединение

Необходимо добиться резолва имен ваших машин в сети. Например, имя контроллера домена -- DC3.OFFICE.DOMEN.LOCAL, а его ip-адрес -- 192.168.10.11. Он же является DNS- и WINS-сервером в сети.

Проверяем его доступность по ip-адресу:

ping 192.168.10.11
PING 192.168.10.11 (192.168.10.11) 56(84) bytes of data. 
64 bytes from 192.168.10.11: icmp_seq=1 ttl=128 time=0.138 ms
64 bytes from 192.168.10.11: icmp_seq=2 ttl=128 time=0.217 ms

Проверяем его доступность по имени узла:

ping DC3 
ping: unknown host DC3 

Для того, чтобы узел отвечал по имени, необходимо указать домен поиска OFFICE.DOMEN.LOCAL. В Центре Управления Системой это указывается в настройках сетевого интерфейса в поле Домены поиска. Не забываем нажать Применить.

Проверяем его доступность по имени узла:

ping DC3
PING DC3.office.domen.local (192.168.10.11) 56(84) bytes of data.
64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=1 ttl=128 time=0.137 ms
64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=2 ttl=128 time=0.147 ms

В файл /etc/hosts добавляем запись о нашей машине:

127.0.0.1	localhost.localdomain localhost
127.0.0.1	wslinux.office.domen.local wslinux

По имени DC3 узел отвечает, но вот если попробовать его пинговать, указав полное имя домена DC3.OFFICE.DOMEN.LOCAL -- получим ошибку:

ping DC3.OFFICE.DOMEN.LOCAL
ping: unknown host DC3.OFFICE.DOMEN.LOCAL

И соответственно в домен машину мы ввести не сможем. Ищем файл /etc/nsswitch.conf, в нем строку с hosts:

У по умолчанию она имеет вид:

hosts:      files nisplus nis mdns4_minimal [NOTFOUND=return] dns mdns4 fallback

И приводим ее к такому виду:

hosts:      files dns nisplus nis mdns4_minimal [NOTFOUND=return] mdns4 fallback

Сохраняем изменения и проверяем:

ping DC3.OFFICE.DOMEN.LOCAL 
PING DC3.OFFICE.DOMEN.LOCAL (192.168.10.11) 56(84) bytes of data. 
64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=1 ttl=128 time=0.201 ms 
64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=2 ttl=128 time=0.133 ms 

Настраиваем сервисы самбы

Теперь необходимо включить в автозапуск необходимые службы. Выполним следующие команды от рута:

# chkconfig --list | grep smb 
smb            	0:off	1:off	2:off 	3:off 	4:off 	5:off 	6:off


Смотрим, на каких уровнях запускается самба, если ничего не задано -- включаем нужные уровни:

# chkconfig --levels 2345 smb on

Проверяем:

# chkconfig --list | grep smb 
smb            	0:off	1:off	2:on	3:on	4:on	5:on	6:off

Делаем то же самое для winbind:

# chkconfig --list | grep winbind 
winbind            	0:off	1:off	2:off 	3:off 	4:off 	5:off 	6:off
# chkconfig --levels 2345 winbind on

Запускаем сервис самба:

# service smb start

Чтобы сервис swat запускался автоматически: в файле /etc/xinetd.d/swat меняем значение disable с yes на no и перезапускаем службу:

# service xinetd restart

Запускаем swat в браузере: http://localhost:901 (либо же правим /etc/samba/smb.conf соотвественно)

Во вкладке GLOBALS ставим следующие значения:

Workgroup = OFFICE (указываем первую часть имени домена)
Realm = OFFICE.DOMEN.LOCAL (полное имя домена)
Netbios name = WSLINUX (netbios имя нашего компьютера)
Security = ads (это режим domain member)

Подтверждаем изменения нажав кнопку commit changes наверху страницы. И последние значения настраиваем, переключившись в режим advanced view (сложный):

#  ip-адрес контроллера домена (в новой версии при Security = ads строку Password server требуется замаскировать)
Password server = 192.168.10.11
# Диапазоны идентификаторов для виртуальных пользователей и групп.
idmap uid = 10000 - 40000
idmap gid = 10000 - 40000
winbind enum users = yes
winbind enum groups = yes


# Использовать домен по умолчанию для имён пользователей. Без этой опции имена пользователей и групп
# будут использоваться с доменом, т.е. вместо username - DOMAIN\username. 
winbind use default domain = yes
# Если вы хотите разрещить использовать командную строку для пользователей домена, то
# добавьте следующую строку, иначе в качестве shell'а будет вызываться /bin/false
template shell = /bin/bash
# Для автоматического обновления билета Kerberos модулем pam_winbind.so нужно добавить строчку
winbind refresh tickets = yes

Снова подтверждаем изменения (сохранить изменения). Далее во вкладке STATUS запускаем или перезапускаем службы, Restart All (замечу что winbindd на этом этапе еще не работает).

Настраиваем синхронизацию времени с нашим контроллером домена

Проверяем уровни запуска службы:

# chkconfig --list | grep ntpd 
ntpd           	0:off	1:off	2:off	3:off	4:off	5:off	6:off

Задаем необходимые:

# chkconfig --levels 345 ntpd  on

Добавляем в конфигурационный файл /etc/ntpd.conf запись о сервере времени для синхронизации, все остальное комментируем:

#servers pool.ntp.org
servers 192.168.10.11

Запускаем синхронизацию времени:

# ntpdate 192.168.10.11
17 Aug 11:03:44 ntpdate[14747]: step time server 192.168.10.11 offset 82.524429 sec

И только после этого запускаем службу:

# service ntpd start

Настраиваем службу аутентификации для получения билетов Kerberos

Для того что бы Kerberos производил аутентификацию на контролере домена, а не на локальной машине, правим /etc/krb5.conf. Приводим его к виду (обратите внимание на регистр, где заглавными, так и должно быть):

[libdefaults]
default_realm = OFFICE.DOMEN.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes

[realms]
OFFICE.DOMEN.LOCAL = {
kdc = 192.168.10.11
}

[domain_realm]
.office.domen.local = OFFICE.DOMEN.LOCAL
office.domen.local = OFFICE.DOMEN.LOCAL

[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
NB: При отсутствии параметра admin_server, у пользователя будет отсутствовать возможность сменить свой пароль средствами Kerberos --solo 14:03, 2 ноября 2012 (MSK)

Пробуем получить билет авторизации:

# kinit admin@OFFICE.DOMEN.LOCAL 
Password for mad_max@OFFICE.DOMEN.LOCAL:

где admin -- имя доменного админа, а OFFICE.DOMEN.LOCAL -- имя вашего домена (именно заглавными).

Если все прошло хорошо, в ответ на этот запрос вы ответа не получите.

Проверяем наличие билета командой klist, вывод должен быть примерно такой:

# klist 
Ticket cache: FILE:/tmp/krb5cc_0 
Default principal: admin@OFFICE.DOMEN.LOCAL 

Valid starting     Expires            Service principal 
08/17/10 11:11:58  08/17/10 21:12:04  krbtgt/OFFICE.DOMEN.LOCAL@OFFICE.DOMEN.LOCAL 
	renew until 08/18/10 11:11:58 

Правим /etc/nsswitch.conf примерно до такого вида:

passwd: files winbind
shadow: tcb files winbind
group: files winbind
gshadow:    files

Чтобы изменения в конфиге /etc/nsswitch.conf вступили в силу без перезагрузки, нужно от рута дать команду:

# ldconfig

Вводим в домен

Для ввода в домен необходимо дать команду:

# net ads join -U admin
admin's password:
Using short domain name -- OFFICE
Joined 'WSLINUX' to realm 'OFFICE.DOMEN.LOCAL'

где admin -- имя доменного админа, а admin's password — пароль доменного админа.

NB: Для корректного ввода в домен может потребоваться предварительный останов демонов smb и winbind --solo 14:12, 2 ноября 2012 (MSK)

Проверить, что мы вошли в домен можно командой wbinfo -u (велика вероятность, что она отработает только после перезагрузки компьютера):

$ wbinfo -u 
OFFICE\гость 
OFFICE\администратор 
OFFICE\user1 
OFFICE\user2 
…

Для того, чтобы в нашу систему можно было логиниться под доменными аккаунтами и авторизация шла через winbind, необходимо оставить /etc/pam.d/gdm или /etc/pam.d/lightdm в прежнем виде:

#%PAM-1.0
auth            required        pam_shells.so
auth            required        pam_succeed_if.so quiet uid ne 0
auth            sufficient      pam_succeed_if.so user ingroup nopasswdlogin
auth            substack        common-login
auth            optional        pam_gnome_keyring.so
account         include         common-login
password        include         common-login
session         substack        common-login
session         optional        pam_console.so
-session        optional        pam_ck_connector.so
session         required        pam_namespace.so
session         optional        pam_gnome_keyring.so auto_start

(Для KDE4 это файл /etc/pam.d/kde4)

А /etc/pam.d/system-auth-winbind к виду (если его нет, то создать):

#%PAM-1.0
auth            [success=2 default=ignore]      pam_tcb.so shadow fork prefix=$2y$ count=8 nullok
auth            requisite       pam_succeed_if.so uid >= 500 quiet
auth            required        pam_winbind.so use_first_pass krb5_auth krb5_ccache_type=FILE
auth            required        pam_permit.so

account         [success=2 default=ignore]      pam_tcb.so shadow fork
account         requisite       pam_succeed_if.so uid >= 500 quiet
account         required        pam_winbind.so use_first_pass
account         required        pam_permit.so

password        required        pam_passwdqc.so config=/etc/passwdqc.conf
password        [success=2 default=ignore]      pam_tcb.so use_authtok shadow fork prefix=$2y$ count=8 nullok write_to=tcb
password        requisite       pam_succeed_if.so uid >= 500 quiet
password        required        pam_winbind.so

session         [success=2 default=ignore]      pam_tcb.so
session         requisite       pam_succeed_if.so uid >= 500 quiet
session         required        pam_winbind.so
session         required        pam_mktemp.so
session         required        pam_mkhomedir.so silent
session         required        pam_limits.so

И /etc/pam.d/system-auth-use_first_pass-winbind к виду(если его нет, то создать):

#%PAM-1.0
auth            [success=2 default=ignore]      pam_tcb.so shadow fork prefix=$2y$ count=8 nullok use_first_pass
auth            requisite       pam_succeed_if.so uid >= 500 quiet
auth            required        pam_winbind.so use_first_pass
auth            required        pam_permit.so

password        [success=2 default=ignore]      pam_tcb.so use_authtok shadow fork prefix=$2y$ count=8 nullok write_to=tcb
password        requisite       pam_succeed_if.so uid >= 500 quiet
password        required        pam_winbind.so use_authtok
password        required        pam_permit.so

Не забываем переключить авторизацию на winbind

(Внимание! Восле такой манипуляции на KDesktop 6 пропадает возможность залогиниться вообще, поэтому я решил сделать обход - см.Примечание --Tora-bora 19:02, 19 октября 2012 (MSD))
# control system-auth winbind

С такими конфигами будет работать авторизация из gdm, gnome-screensaver, ssh.

Перезагружаемся и можем логинится как локальными пользователями системы, так и доменными. Но стоить помнить один ньюанс. Если логин вашего локального пользователя совпадает с доменным, то будет попытка входа только локальным пользователем.

Добавляем пользователей с административными привилегиям (sudo)

Разрешаем всем вызывать sudo:

# control sudo public

Разрешаем группе администраторов LinuxAdmins (должна быть создана) повышать свои привилегии без запроса пароля:

# echo '%OFFICE\\LinuxAdmins ALL= NOPASSWD : ALL' >> /etc/sudoers


Настраиваем автомонтирование сетевых ресурсов

Устанавливаем smbnetfs, samba, samba-client, fuse-smb.

Создаем /etc/fuse.conf и добавляем запись:

user_allow_other (не забываем нажимать enter после строчки)

Добавляем в /etc/modules запись:

fusermount public (не забываем нажимать enter после строчки)

Копируем /usr/share/doc/smbnetfs/smbnetfs.conf в /home/%username%/.smb/

Копируем /etc/samba/smb.conf в /home/%username%/.smb/

Добавляем пользователя в группу fuse.

Создаем в домашнем каталоге каталог (например) /home/%username%/net

Создаем скрипт запуска в удобном для нас месте (например) /home/%username%/.smb/net со следующим содержанием:

#!/bin/sh
smbnetfs /home/%username%/net

Делаем скрипт исполняемым и помещаем в автозапуск, например в .bash_profile.

Библиография

Инструкция составлена с применением следующих ресурсов:

Примечание

KDesktop

На KDesktop мне не удалось настроить вход в домен AD используя

# control system-auth winbind

Взамен этого можно сделать некоторые ручные манипуляции

  • делаем ссылку system-auth указывающую на system-auth-winbind
  • делаем ссылку system-auth-use_first_pass указывающую на system-auth-use_first_pass-winbind
  • файл /etc/pam.d/kde4 приводим к виду:
#%PAM-1.0
auth    required        pam_group.so
auth     include        system-auth-winbind
auth     required       pam_nologin.so
account  include        system-auth-winbind
password include        system-auth-winbind
session  include        system-auth-winbind
  • файл /etc/pam.d/kde4-kscreensaver приводим к виду:
#%PAM-1.0
auth     required       pam_securetty.so
auth     required       pam_nologin.so
auth     sufficient     pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login
auth     sufficient     pam_tcb.so shadow fork prefix=$2a$ count=8 nullok use_first_pass

Доступ к локальным группам

Внимание! Указанное ниже является не полностью безопасным решением, применяйте, если понимаете риск.

Чтобы все доменные пользователи были включены в определенные локальные группы (могли переключаться в root, запускать VirtualBOX и проч.) нужно добавить в /etc/security/group.conf

*;*;*;Al0000-2400;wheel,audio,cdrom,cdwriter,vboxusers,scanner
  • первая звездочка - «все сервисы», они же - пути авторизации (например, xdm, kdm, su, ssh и т.д. и т.п.)
  • вторая звездочка - «все tty».
  • третья звездочка - «все пользователи». Тут можно сделать вышеупомянутое перечисление, через запятую.
  • четвертое поле - это время. Здесь - «круглосуточно»
  • пятое поле - в какие, собственно группы надо включить пользователя.

И включить строку

 auth    required        pam_group.so

в конф. файл входа в систему( для KDE это /etc/pam.d/kde4)

Переустановка

После переустановки системы (при сохранении раздела /home) необходимо выставить владельца домашнего каталога доменного пользователя (владелец меняется)

chown -R ivanov /home/DOMAIN/ivanov/

Смена имени хоста

Если нужно сменить имя хоста, править HOSTNAME в файле /etc/sysconfig/network

Два IP-адреса

Замечены проблемы со входом доменного пользователя при наличии двух IP-адресов. На этапе первого входа пользователя лучше от второго IP временно отказаться.

Дополнения

  • В случае появления ошибки ERROR_DNS_GSS_ERROR, удалите пакет hostname-hook-hosts и удалите из /etc/hosts строку определения
127.0.0.1 <имя хоста>...

Настройка LightDM

В /etc/lightdm/lightdm.conf раскомментируйте строку в группе [SeatDefaults]:

greeter-hide-users=true

Это позволит вводить имя пользователя вручную, а не прокручивать огромный список доступных доменныx пользователей.

Также полезно выключить выбор языка. В файле /etc/lightdm/lightdm-gtk-greeter.conf в группе [greeter] укажите

show-language-selector=false

В новых версиях lightdm-gtk-greeter можно указать кнопки явно:

show-indicators=a11y;power

Полный перечень доступных кнопок:

show-indicators=a11y;power;session;language

Ссылки