ActiveDirectory/Login
Инструкция по вводу рабочей станции под управлением ALT Linux в домен Active Directory (работающий под Windows или под Samba в режиме AD DC).
Устаревшая инструкция: Ввод в домен на базе Windows 2003
Параметры домена
Параметр | Значение |
---|---|
Имя домена | SCHOOL.ALT |
Рабочая группа | SCHOOL |
Имя компьютера в Netbios | WS |
Имя пользователя-администратора | 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 [1]:
# 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' [--windows2003] [--createcomputer="COMPUTEROU/SubCOMPUTEROU/SubSubCOMPUTEROU"] [--winbind] [--gpo] [-d] Joined 'HOST-15' to dns domain 'school.alt'
Примечания
Длинные имена машин в домене
Рекомендации (для имен хостов, больше 15 символов)
Для клиентов и серверов на базе ALT:
- Хосту задаётся два имени: длинное (dnsHostname) и короткое (sAMAccountName, NetBIOS Name).
- Длинное имя должно совпадать с именем хоста (hostname).
- При введении хоста в домен оба имени нужно указывать явно.
- Оба имени должны быть уникальными.
- Для корректной работы службы SSSD в параметре настройки ad_hostname необходимо задавать короткое имя хоста.
- Обновление DNS записей с помощью SSSD будет выполняться только для короткого имени. По этому обновление DNS записей рекомендуется отключить (dyndns_update = false, dyndns_update_ptr = false).
- Для введения хоста в домен в режиме с двумя именами предлагается использовать временное решение в виде распространяемого не из пакета скрипта system-auth.
Для использования длинного имени необходимо дополнительно указать короткое NetBIOS имя.
Например:
#./system-auth write ad domain.alt super-long-hostname sub --netbiosname=short-host
В случае с коротким именем хоста поведение скрипта не меняется.
Для контроллеров домена длинные имена не допустимы.
Настройка SSSD
См. статью SSSD/AD, Настройки SSSD в Alterator
Проверка работы
# 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):
# chkconfig avahi-daemon off; reboot
- Следите за синхронизацией времени на клиенте и сервере.
- Для предотвращения кэширования имён пользователя отключите службу nscd.
- В новых версиях Samba до запуска службы winbind должна запускаться служба smb.
- Если возникает проблема просмотра билетов Kerberos под доменным пользователем, скопируйте правильный krb5.conf из samba:
# rm -f /etc/krb5.conf # cp /var/lib/samba/smb_krb5/krb5.conf* /etc/krb5.conf
- Если у вас домен Windows 2003 (не R2), то в директивы default_tgs_enctypes, default_tkt_enctypes и preferred_enctypes файла /etc/krb5.conf добавьте ещё DES3-CBC-SHA1.
- Для возможности входа в ОС под доменным пользователем при его недоступности можно включить опцию кэширования учётных данных в конфиге SSSD (подробнее тут, опция cache_credentials).
- Убедитесь, что у вас в /etc/samba/smb.conf и /etc/sssd/sssd.conf прописаны параметры, отвечающие за автоматическое обновление пароля машины:
- файл /etc/samba/smb.conf:
[global] machine password timeout = 0
- файл /etc/sssd/sssd.conf:
[sssd] user = root [domain/SCHOOL.ALT] ad_update_samba_machine_account_password = true
- Подробнее здесь
- файл /etc/samba/smb.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
enter-username = true
Решение проблем
Изменение пароля при истечении его срока
При использовании winbind нет диалога смены пароля, меняемого при первом запуске или при истечении его срока. В p10 необходимо обновить samba до 4.17:
apt-repo upgrade 332201
И дописать в файл /etc/security/pam_winbind.conf:
pwd_change_prompt = yes
После этого выполните:
systemctl restart winbind
Отображение глобальных групп на локальные
Установка модуля ролей
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 'Пользователи домена' users
Далее
# roleadd 'Domain Admins' localadmins
или
# roleadd 'Администраторы домена' localadmins
Просматриваем список назначенных ролей и привилегий:
# rolelst # id ivan
Данная настройка назначает заданный список локальных групп (привилегий) всем пользователям, входящим в заданные локальные группы (роли). А также назначает локальные роли для глобальных групп в домене.
Дополнительные роли
Соответственно, если надо выдать права администраторов АРМ пользователям, которые не являются Domain Admins, то нужно завести новую группу в AD (например, PC Admins), добавить туда необходимых пользователей. Затем на АРМ добавить роль для данной группы:
# roleadd 'PC Admins' localadmins # rolelst users: cdwriter cdrom audio video proc radio camera floppy xgrp scanner uucp vboxusers fuse tsusers localadmins: wheel domain users: users domain admins: localadmins pc admins: localadmins
После этого (и после разрешения sudo для группы wheel) под пользователем входящим в группу PC Admins можно запускать команду повышения прав sudo.
user@alt8 ~ $ su - petrov Password: petrov@alt8 ~ $ id uid=445010929(petrov) gid=445000513(domain users) группы=445000513(domain users),10(wheel),14(uucp),19(proc), 22(cdrom),71(floppy),80(cdwriter),81(audio),83(radio),100(users),458(tsusers), 459(localadmins),466(fuse),468(video), 480(camera),492(vboxusers),498(xgrp),499(scanner),445010930(pc admins) petrov@alt8 ~ $ sudo apt-get update Пароль: Получено: 1 http://ftp.altlinux.org p8/branch/x86_64 release [880B] Получено: 2 http://ftp.altlinux.org p8/branch/x86_64-i586 release [537B] Получено: 3 http://ftp.altlinux.org p8/branch/noarch release [673B] Получено 2090B за 0s (36,9kB/s). Найдено http://ftp.altlinux.org p8/branch/x86_64/classic pkglist Найдено http://ftp.altlinux.org p8/branch/x86_64/classic release Найдено http://ftp.altlinux.org p8/branch/x86_64-i586/classic pkglist Найдено http://ftp.altlinux.org p8/branch/x86_64-i586/classic release Найдено http://ftp.altlinux.org p8/branch/noarch/classic pkglist Найдено http://ftp.altlinux.org p8/branch/noarch/classic release Чтение списков пакетов... Завершено Построение дерева зависимостей... Завершено
Подключение файловых ресурсов
Рассматриваемые способы позволяют подключать файловые ресурсы (file shares) для доменного пользователя без повторного ввода пароля (SSO, Single Sign-On).
Через gio
Недостаток такого способа — необходимо открыть ресурс в файловом менеджере (Caja, Pcmanfm). Однако можно открывать любые ресурсы на любых серверах, входящие в домен Active Directory.
1. Устанавливаем необходимые пакеты (с правами root):
# apt-get install fuse-gvfs gvfs-backend-smb libgio
2. Включаем пользователя в группу fuse (с правами root):
# gpasswd -a <пользователь> fuse
# control fusermount public
3. Входим доменным пользователем.
4. Открываем ресурс в файловом менеджере (например, по адресу smb://server/sysvol). Ресурс смонтирован по пути /var/run/<uid_пользователя>/gvfs или /run/user/<uid_пользователя>/gvfs/smb-share:server=<сервер>,share=<ресурс>
Другой вариант (полезно для скриптов в автозапуске):
gio mount smb://server/sysvol/
С использованием pam_mount
Заданный файловый ресурс подключается с заданного сервера автоматически при каждом входе доменным пользователем.
1. Устанавливаем pam_mount:
# apt-get install pam_mount
Если осуществляется подключение файловых ресурсов по протоколу CIFS (SMB), то установите cifs-utils:
# apt-get install cifs-utils
# apt-get install systemd-settings-enable-kill-user-processes
2. Прописываем pam_mount в схему аутентификации по умолчанию. В конец файла (/etc/pam.d/system-auth) добавьте строки
session [success=1 default=ignore] pam_succeed_if.so service = systemd-user quiet session optional pam_mount.so disable_interactive
Параметр disable_interactive нужен для того, чтобы pam_mount не спрашивал пароль. Первая строка предназначена для того, чтобы не монтировать дважды при запуске systemd --user. Подробнее: https://wiki.archlinux.org/title/pam_mount#Login_manager_configuration
Пример файла /etc/pam.d/system-auth при аутентификации доменного пользователя под SSSD:
#%PAM-1.0
auth [success=4 perm_denied=ignore default=die] pam_localuser.so
auth [success=1 default=bad] pam_succeed_if.so uid >= 500 quiet
auth [default=1] pam_permit.so
auth substack system-auth-sss-only
auth [default=1] pam_permit.so
auth substack system-auth-local-only
auth substack system-auth-common
account [success=4 perm_denied=ignore default=die] pam_localuser.so
account [success=1 default=bad] pam_succeed_if.so uid >= 500 quiet
account [default=1] pam_permit.so
account substack system-auth-sss-only
account [default=1] pam_permit.so
account substack system-auth-local-only
account substack system-auth-common
password [success=4 perm_denied=ignore default=die] pam_localuser.so
password [success=1 default=bad] pam_succeed_if.so uid >= 500 quiet
password [default=1] pam_permit.so
password substack system-auth-sss-only
password [default=1] pam_permit.so
password substack system-auth-local-only
password substack system-auth-common
session [success=4 perm_denied=ignore default=die] pam_localuser.so
session [success=1 default=bad] pam_succeed_if.so uid >= 500 quiet
session [default=1] pam_permit.so
session substack system-auth-sss-only
session [default=1] pam_permit.so
session substack system-auth-local-only
session substack system-auth-common
session [success=1 default=ignore] pam_succeed_if.so service = systemd-user
session optional pam_mount.so disable_interactive
3. Устанавливаем правило монтирования ресурса в файле /etc/security/pam_mount.conf.xml:
<volume uid="10000-2000200000"
fstype="cifs"
server="c253.test.alt"
path="sysvol"
mountpoint="~/share"
options="sec=krb5i,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775"/>
где
- uid="10000-2000200000" — диапазон присваиваемых для доменных пользователей UID (подходит и для Winbind и для SSSD);
- server="c253.test.alt" — имя сервера с ресурсом;
- path="sysvol" — имя файлового ресурса;
- mountpoint="~/share" — путь монтирования в домашней папке пользователя.
Опционально можно добавить:
- sgrp="group_name" — имя группы, при членстве пользователя в которой, папка будет примонтирована.
Параметр sec=krb5i более безопасный, но требует больше вычислительных ресурсов. Вместо него можно указать sec=krb5.
Пример файла /etc/security/pam_mount.conf.xml:
С комментариями для изучения |
---|
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
<!--
См. pam_mount.conf(5) для описания.
-->
<pam_mount>
<!--
Отладка должна быть раньше всего остального,
т.к. этот файл все равно считываются за
один проход сверху вниз
-->
<debug enable="0" />
<!-- Определение монтируемых томов -->
<volume uid="10000-2000200000"
fstype="cifs"
server="c253.test.alt"
path="sysvol"
mountpoint="~/share"
options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775" />
<!--
pam_mount parameters: General tunables
-->
<!--
<luserconf name=".pam_mount.conf.xml" />
-->
<!--
Обратите внимание, что если закомментировать mntoptions, то будут заданы значения по умолчанию.
Необходимо явно инициализировать его пустой строкой чтобы сбросить значения на по-умолчанию.
-->
<mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other,sec" />
<!--
<mntoptions deny="suid,dev" />
<mntoptions allow="*" />
<mntoptions deny="*" />
-->
<mntoptions require="nosuid,nodev" />
<!--
Требуется наличие ofl из hxtools
-->
<logout wait="0" hup="no" term="no" kill="no" />
<!-- Параметры pam_mount: связанные тома -->
<mkmountpoint enable="1" remove="true" />
</pam_mount>
|
Без комментариев для "продакшена" |
---|
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
<pam_mount>
<debug enable="0" />
<volume uid="10000-2000200000"
fstype="cifs"
server="c253.test.alt"
path="sysvol"
mountpoint="~/share"
options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775" />
<mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other,sec" />
<mntoptions require="nosuid,nodev" />
<logout wait="0" hup="no" term="no" kill="no" />
<mkmountpoint enable="1" remove="true" />
</pam_mount>
|
Для отладки подключения замените в файле /etc/security/pam_mount.conf.xml
<debug enable="0" />
на
<debug enable="1" />
При этом отладочные сообщения будут показываться в журнале Journald.
Вы можете сменить механизм монтирования отдав его на откуп systemd. Для этого в pam_mount.xml.conf можно задать\переопределить опции cifsmount, umount
<cifsmount>systemd-mount -A -G -q -t cifs %(COMBOPATH) %(MNTPT) -o uid=%(USERUID),gid=%(USERGID),username=%(USER),%(OPTIONS)</cifsmount>
<umount>systemd-mount -u %(MNTPT)</umount>
Советы
- Для того, чтобы подключенная папка не показывалась на рабочем столе Mate, следует в параметры добавить x-gvfs-hide.
- Если при выходе пользователя всё равно файловый ресурс остаётся подключенным, отмонтируйте его и удалите файл /run/pam_mount/<имя_пользователя>
Ссылки
Через autofs
В этом случае заданный ресурс подключается автоматически при каждом обращении пользователя и отключается после определенного времени бездействия (определяется конфигурацией Autofs).
Основная статья AutoFS
https://www.altlinux.org/Autofs
Для дистрибутивов c KDE
- Установить kde5-autofs-shares:
# apt-get install kde5-autofs-shares
- Добавить в /etc/auto.master строку:
/mnt/samba /etc/auto.smb -t 34567
- Здесь /mnt/samba — каталог в котором будут подключаться сетевые файловые системы, /etc/auto.smb — скрипт, входящий в состав пакета autofs, 34567 — таймаут подключения при отсутствии обращения.
- Включить и запустить сервис autofs:
# systemctl enable --now autofs
- В файловом менеджере Dolphin по адресу smb:/ («Сеть»/«Общие папки Samba») найти нужный ресурс Windows (Samba)
- В контекстном меню подключаемого ресурса (правая кнопка мыши) выбрать пункт «Подключение»:
Групповые политики
Групповые политики (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 |
- ↑ Cм получение прав root:
Ссылки по групповым политикам
- 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
- https://linux.samba.narkive.com/ceDM0TFO/samba-wbinfo-i-failed-to-call-wbcgetpwnam-wbc-err-domain-not-found