ActiveDirectory/Login
Материал из ALT Linux Wiki
м (→Через gvfs: очепятка) |
(→Проверка работы) |
||
(16 промежуточных версий не показаны.) | |||
Строка 17: | Строка 17: | ||
|Пароль администратора||Pa$$word | |Пароль администратора||Pa$$word | ||
|} | |} | ||
- | + | <div id="prep"></div> | |
- | + | ||
= Подготовка = | = Подготовка = | ||
== Установка пакетов == | == Установка пакетов == | ||
- | |||
- | apt-get install task-auth-ad | + | {{Attention|Аутентификация через winbind в новых сборках Samba не работает, используйте аутентификацию через {{pkg|task-auth-ad-sssd}}.}} |
+ | |||
+ | С версии {{prg|alterator-auth-0.31-alt1}} | ||
+ | |||
+ | apt-get install task-auth-ad-sssd | ||
- | {{note|Для старых версий: <source lang="text">apt-get install | + | {{note|Для старых версий: <source lang="text">apt-get install alterator-auth sssd-ad samba-common-tools</source>}} |
Требуемые версии: | Требуемые версии: | ||
Строка 32: | Строка 34: | ||
* {{pkg|alterator-auth}} >= 0.26-alt1 | * {{pkg|alterator-auth}} >= 0.26-alt1 | ||
- | Возможно, следует [[Обновление ОС#В пределах версии|обновить]] установленный дистрибутив | + | Возможно, следует [[Обновление ОС#В пределах версии|обновить]] установленный дистрибутив из репозитория. |
== Синхронизация времени == | == Синхронизация времени == | ||
Строка 63: | Строка 65: | ||
ntpdate pool.ntp.org | ntpdate pool.ntp.org | ||
- | + | <div id="setup"></div> | |
= Ввод в домен в Центре управления системой = | = Ввод в домен в Центре управления системой = | ||
В Центре управления системой перейдите в раздел {{path|Пользователи → Аутентификация}} | В Центре управления системой перейдите в раздел {{path|Пользователи → Аутентификация}} | ||
+ | |||
+ | Для ввода компьютера в Active Directory потребуется установить пакет {{pkg|task-auth-ad-sssd}} и все его зависимости. | ||
[[Файл:Alterator-auth-new.png]] | [[Файл:Alterator-auth-new.png]] | ||
Выберите пункт «Домен Active Directory» и заполните поля. Нажмите кнопку «Применить». | Выберите пункт «Домен Active Directory» и заполните поля. Нажмите кнопку «Применить». | ||
- | |||
- | |||
= Ввод в домен в командной строке = | = Ввод в домен в командной строке = | ||
Строка 78: | Строка 80: | ||
<pre># system-auth write ad school.alt host-15 school 'administrator' 'Pa$$word' | <pre># system-auth write ad school.alt host-15 school 'administrator' 'Pa$$word' | ||
Joined 'HOST-15' to dns domain 'school.alt'</pre> | Joined 'HOST-15' to dns domain 'school.alt'</pre> | ||
- | + | <div id="check"></div> | |
= Проверка работы = | = Проверка работы = | ||
- | <pre> | + | <pre># getent passwd ivan |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | # getent passwd | + | |
ivan:*:10005:10002:ivan:/home/SCHOOL/ivan:/bin/bash | ivan:*:10005:10002:ivan:/home/SCHOOL/ivan:/bin/bash | ||
Строка 101: | Строка 94: | ||
Server time: Ср, 22 апр 2015 16:22:47 MSK | Server time: Ср, 22 апр 2015 16:22:47 MSK | ||
KDC server: 192.168.1.1 | KDC server: 192.168.1.1 | ||
- | Server time offset: -1</pre> | + | Server time offset: -1 |
+ | |||
+ | # net ads testjoin | ||
+ | Join is OK</pre> | ||
+ | |||
+ | {{Note| Вы не увидите пользователей из AD с помощью команды <code># getent passwd </code> на клиентской машине. Этот функционал отключен по-умолчанию для того чтобы сократить нагрузку серверы. Поэтому для проверки необходимо точно указать имя пользователя <code># getent passwd имя_пользователя </code>. Список пользователей можно посмотреть на сервере командой <code># samba-tool user list</code>}} | ||
= Примечания = | = Примечания = | ||
Строка 112: | Строка 110: | ||
<source lang="bash">rm -f /etc/krb5.conf | <source lang="bash">rm -f /etc/krb5.conf | ||
cp /var/lib/samba/smb_krb5/krb5.conf* /etc/krb5.conf</source> | cp /var/lib/samba/smb_krb5/krb5.conf* /etc/krb5.conf</source> | ||
- | + | <div id="login"></div> | |
= Настройка окна входа = | = Настройка окна входа = | ||
Строка 138: | Строка 136: | ||
== Настройка ролей и привилегий == | == Настройка ролей и привилегий == | ||
Добавляем роль локальных администраторов: | Добавляем роль локальных администраторов: | ||
- | groupadd -r admins | + | groupadd -r localadmins |
+ | |||
+ | {{Note|Лучше использовать группу localadmins (вместо admins) по избежание конфликта с группой admins во FreeIPA}} | ||
Создаём привилегию на право удалённого доступа (по протоколу ssh): | Создаём привилегию на право удалённого доступа (по протоколу ssh): | ||
Строка 151: | Строка 151: | ||
Настраиваем список привилегий для администраторов (для роли admins): | Настраиваем список привилегий для администраторов (для роли admins): | ||
- | roleadd | + | roleadd localadmins wheel remote vboxusers |
Настраиваем отображение локальных привилегий, назначенных локальным ролям, на глобальные группы безопасности: | Настраиваем отображение локальных привилегий, назначенных локальным ролям, на глобальные группы безопасности: | ||
roleadd 'Domain Users' users | roleadd 'Domain Users' users | ||
- | roleadd 'Domain Admins' | + | roleadd 'Domain Admins' localadmins |
Просматриваем список назначенных ролей и привилегий: | Просматриваем список назначенных ролей и привилегий: | ||
Строка 161: | Строка 161: | ||
id ivan | id ivan | ||
- | Данная настройка назначает заданный список локальных групп (привилегий) всем пользователям, входящим в заданные локальные группы (роли). А также назначает | + | Данная настройка назначает заданный список локальных групп (привилегий) всем пользователям, входящим в заданные локальные группы (роли). А также назначает локальные роли для глобальных групп в домене. |
- | + | ||
= Подключение файловых ресурсов = | = Подключение файловых ресурсов = | ||
Строка 203: | Строка 202: | ||
apt-get install pam_mount | apt-get install pam_mount | ||
- | 2. Прописываем pam_mount в схему {{path|/etc/pam.d/system-auth- | + | 2. Прописываем pam_mount в схему {{path|/etc/pam.d/system-auth-sss}}: |
+ | |||
+ | (перед {{term|auth required pam_permit.so}}) | ||
auth optional pam_mount.so | auth optional pam_mount.so | ||
и | и | ||
Строка 209: | Строка 210: | ||
3. Устанавливаем правило монтирования ресурса в файле {{path|/etc/security/pam_mount.conf.xml}} (перед тегом <cifsmount>): | 3. Устанавливаем правило монтирования ресурса в файле {{path|/etc/security/pam_mount.conf.xml}} (перед тегом <cifsmount>): | ||
- | <source lang="xml"><volume uid="10000- | + | <source lang="xml"><volume uid="10000-2000200000" fstype="cifs" server="c228" path="sysvol" mountpoint="~/share" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775" /></source> |
где | где | ||
- | * '''uid="10000- | + | * '''uid="10000-2000200000"''' — диапазон присваиваемых для доменных пользователей UID (подходит и для Winbind и для SSSD) |
* '''server="c228"''' — имя сервера с ресурсом | * '''server="c228"''' — имя сервера с ресурсом | ||
* '''path="sysvol"''' — имя файлового ресурса | * '''path="sysvol"''' — имя файлового ресурса | ||
- | * '''mountpoint=" | + | * '''mountpoint="~/share"''' — путь монтирования в домашней папке пользователя |
+ | |||
+ | {{Attention|Обязательно указывайте настоящее имя сервера в параметре {{term|server}}, а не имя домена}} | ||
= Групповые политики = | = Групповые политики = | ||
- | + | Групповые политики (GPO) на Linux применяются только контроль входа через [[SSSD]] и средства Centrify. | |
+ | |||
+ | == SSSD == | ||
+ | |||
+ | SSSD имеет внутреннюю поддержку следующих групповых политик: | ||
+ | |||
+ | {|class="standard" | ||
+ | !Политика | ||
+ | |- | ||
+ | |{{term|Allow log on locally}} | ||
+ | |- | ||
+ | |{{term|Allow log on through Remote Desktop Services}} | ||
+ | |- | ||
+ | |{{term|Access this computer from the network}} | ||
+ | |- | ||
+ | |{{term|Allow log on as a batch job}} | ||
+ | |- | ||
+ | |{{term|Allow log on as a service}} | ||
+ | |} | ||
+ | |||
+ | |||
+ | {{Note|Планируется поддержка других групповых политик средствами подключаемых модулей}} | ||
- | + | == Ссылки по групповым политикам == | |
+ | * https://fedoraproject.org/wiki/Changes/SssdGpoBasedAccessControl | ||
* http://wiki.eri.ucsb.edu/stadm/AD_Samba4 | * http://wiki.eri.ucsb.edu/stadm/AD_Samba4 | ||
* http://centrifying.blogspot.ru/2014/01/basics-using-group-policy-on-unixlinux.html | * http://centrifying.blogspot.ru/2014/01/basics-using-group-policy-on-unixlinux.html |
Текущая версия на 15:16, 13 июня 2017
Инструкция по вводу рабочей станции под управлением ALT Linux в домен Active Directory (работающий под Windows или под Samba в режиме AD DC). Устаревшая инструкция: Ввод в домен на базе Windows 2003
Параметры домена
Параметр | Значение |
---|---|
Имя домена | SCHOOL.ALT |
Рабочая группа | SCHOOL |
Имя компьютера в Netbios | HOST-15 |
Имя пользователя-администратора | Administrator |
Пароль администратора | Pa$$word |
Содержание |
Подготовка
Установка пакетов
С версии alterator-auth-0.31-alt1
apt-get install task-auth-ad-sssd
apt-get install alterator-auth sssd-ad samba-common-tools
Требуемые версии:
- pam-config >= 1.7.0-alt1
- alterator-auth >= 0.26-alt1
Возможно, следует обновить установленный дистрибутив из репозитория.
Синхронизация времени
С версии alterator-auth 0.28 синхронизация времени производится автоматически с контроллером домена.
Для более ранних версий:
Способ 1: Через net time
net time set -S <имя домена>
Способ 2: По протоколу RFC 867
На сервере включается через xinetd daytime-tcp:
# chkconfig --list | grep daytime-tcp daytime-tcp: вкл
А на клиенте — служба settime-rfc867:
chkconfig settime-rfc867 on service settime-rfc867 start
Способ 3: Через Центр управления системой → Дата и время
Включите флажок «Получать точное время с NTP-сервера» и укажите в поле справа pool.ntp.org. После этого нажмите кнопку «Применить».
Способ 4: Через ntpdate
ntpdate pool.ntp.org
Ввод в домен в Центре управления системой
В Центре управления системой перейдите в раздел Пользователи → Аутентификация
Для ввода компьютера в Active Directory потребуется установить пакет task-auth-ad-sssd и все его зависимости.
Выберите пункт «Домен Active Directory» и заполните поля. Нажмите кнопку «Применить».
Ввод в домен в командной строке
# system-auth write ad school.alt host-15 school 'administrator' 'Pa$$word' Joined 'HOST-15' to dns domain 'school.alt'
Проверка работы
# getent passwd ivan ivan:*:10005:10002:ivan:/home/SCHOOL/ivan:/bin/bash # net ads info LDAP server: 192.168.1.1 LDAP server name: c228.school.alt Realm: SCHOOL.ALT Bind Path: dc=SCHOOL,dc=ALT LDAP port: 389 Server time: Ср, 22 апр 2015 16:22:47 MSK KDC server: 192.168.1.1 Server time offset: -1 # net ads testjoin Join is OK
# getent passwd
на клиентской машине. Этот функционал отключен по-умолчанию для того чтобы сократить нагрузку серверы. Поэтому для проверки необходимо точно указать имя пользователя # getent passwd имя_пользователя
. Список пользователей можно посмотреть на сервере командой # samba-tool user list
Примечания
- Ограничение: имя домена должно указывать на DC. Если это не так, поправляйте /etc/krb5.conf и вводите вручную, либо в файл /etc/hosts добавьте строку с контроллером домена (кдц) ДОМЕН.local и перезапустите сеть. После этого проверьте из командной строки ping ДОМЕН.local и вводите в домен
- При указании домена, имеющего суффикс .local, потребуется на сервере и подключаемых компьютерах под управлением Linux отключить службу avahi-daemon (доменная зона "local." используется в технологии zeroconf).
- Следите за синхронизацией времени на клиенте и сервере.
- Для предотвращения кэширования имён пользователя отключите службу nscd.
- В новых версиях Samba до запуска службы winbind должна запускаться служба smb.
- Если возникает проблема просмотра билетов Kerberos под доменным пользователем, скопируйте правильный krb5.conf из samba:
rm -f /etc/krb5.conf cp /var/lib/samba/smb_krb5/krb5.conf* /etc/krb5.conf
Настройка окна входа
Настройка 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
Отображение глобальных групп на локальные
Установка модуля ролей
apt-get install libnss-role
Настройка ролей и привилегий
Добавляем роль локальных администраторов:
groupadd -r localadmins
Создаём привилегию на право удалённого доступа (по протоколу ssh):
groupadd -r remote
Включаем удалённый доступ только для группы remote:
control sshd-allow-groups enabled sed -i 's/AllowGroups.*/AllowGroups = remote/' /etc/openssh/sshd_config
Настраиваем список привилегий для пользователей (для роли users):
roleadd users cdwriter cdrom audio proc radio camera floppy xgrp scanner uucp fuse
Настраиваем список привилегий для администраторов (для роли admins):
roleadd localadmins wheel remote vboxusers
Настраиваем отображение локальных привилегий, назначенных локальным ролям, на глобальные группы безопасности:
roleadd 'Domain Users' users roleadd 'Domain Admins' localadmins
Просматриваем список назначенных ролей и привилегий:
rolelst id ivan
Данная настройка назначает заданный список локальных групп (привилегий) всем пользователям, входящим в заданные локальные группы (роли). А также назначает локальные роли для глобальных групп в домене.
Подключение файловых ресурсов
Рассматриваемые способы позволяют подключать файловые ресурсы (file shares) для доменного пользователя без повторного ввода пароля (SSO, Single Sign-On).
Через gvfs
Недостаток такого способа — необходимо открыть ресурс в файловом менеджере (Caja, Pcmanfm). Однако можно открывать любые ресурсы на любых серверах, входящие в домен Active Directory.
1. Устанавливаем необходимые пакеты (с правами root):
apt-get install fuse-gvfs gvfs-backend-smb gvfs-utils
2. Включаем для пользователя в группу fuse (с правами root):
gpasswd -a <пользователь> fuse
Как включить доменных пользователей в локальную группу см. выше.
Следующий рецепт не работает:
control fusermount public systemctl restart systemd-udevd
3. Входим доменным пользователем
4. Открываем ресурс в файловом менеджере (например, по адресу smb://server/sysvol). Ресурс смонтирован по пути /run/<uid_пользователя>/gvfs.
Другой вариант (полезно для скриптов в автозапуске):
gvfs-mount smb://server/sysvol/
Через pam_mount
В этом случае заданный ресурс подключается с заданного сервера автоматически при каждом входе доменным пользователем.
1. Устанавливаем pam_mount:
apt-get install pam_mount
2. Прописываем pam_mount в схему /etc/pam.d/system-auth-sss:
(перед auth required pam_permit.so)
auth optional pam_mount.so
и
session optional pam_mount.so
3. Устанавливаем правило монтирования ресурса в файле /etc/security/pam_mount.conf.xml (перед тегом <cifsmount>):
<volume uid="10000-2000200000" fstype="cifs" server="c228" path="sysvol" mountpoint="~/share" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775" />
где
- uid="10000-2000200000" — диапазон присваиваемых для доменных пользователей UID (подходит и для Winbind и для SSSD)
- server="c228" — имя сервера с ресурсом
- path="sysvol" — имя файлового ресурса
- mountpoint="~/share" — путь монтирования в домашней папке пользователя
Групповые политики
Групповые политики (GPO) на Linux применяются только контроль входа через SSSD и средства Centrify.
SSSD
SSSD имеет внутреннюю поддержку следующих групповых политик:
Политика |
---|
Allow log on locally |
Allow log on through Remote Desktop Services |
Access this computer from the network |
Allow log on as a batch job |
Allow log on as a service |
Ссылки по групповым политикам
- https://fedoraproject.org/wiki/Changes/SssdGpoBasedAccessControl
- http://wiki.eri.ucsb.edu/stadm/AD_Samba4
- http://centrifying.blogspot.ru/2014/01/basics-using-group-policy-on-unixlinux.html
- https://www.youtube.com/watch?v=2cJWnUZ8qLI
Ссылки
- https://wiki.archlinux.org/index.php/Active_Directory_Integration
- Ввод в домен на базе Windows 2003
- https://fedorahosted.org/sssd/wiki/Configuring_sssd_with_ad_server
- https://wiki.samba.org/index.php/Setup_Samba_as_an_AD_Domain_Member