ActiveDirectory/Login

Материал из ALT Linux Wiki
Перейти к навигации Перейти к поиску
Edit-cut.svg
Улучшение этой статьи обсуждается на метастранице
Примечание: В первую очередь читайте официальную документацию к вашему дистрибутиву, например для Альт Образование 10.0 читайте статью Ввод рабочей станции в домен Active Directory


Инструкция по вводу рабочей станции под управлением ALT Linux в домен Active Directory (работающий под Windows или под Samba в режиме AD DC). Устаревшая инструкция: Ввод в домен на базе Windows 2003

Внимание! Если Ваш домен имеет суффикс .local — необходимо отключить avahi-daemon (подробнее ниже, пункт 2 примечаний).



Параметры домена

Параметр Значение
Имя домена SCHOOL.ALT
Рабочая группа SCHOOL
Имя компьютера в Netbios WS
Имя пользователя-администратора Administrator
Пароль администратора Pa$$word


Подготовка[править]

Установка пакетов[править]

Внимание! Аутентификация через winbind в новых сборках Samba не работает, используйте аутентификацию через task-auth-ad-sssd.


С версии 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» и заполните поля. Нажмите кнопку «Применить».

Qwe.png

Ввод в домен в командной строке[править]

# system-auth write ad school.alt host-15 school 'administrator' 'Pa$$word'
Joined 'HOST-15' to dns domain 'school.alt'

Настройка 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
Примечание: Вы не увидите пользователей из AD с помощью команды # getent passwd на клиентской машине. Этот функционал отключен по-умолчанию для того чтобы сократить нагрузку на серверы. Поэтому для проверки необходимо точно указать имя пользователя # getent passwd имя_пользователя . Список пользователей можно посмотреть на сервере командой # samba-tool user list


Примечания[править]

  1. Ограничение: имя домена должно указывать на DC. Если это не так, поправляйте /etc/krb5.conf и вводите вручную, либо в файл /etc/hosts добавьте строку с контроллером домена (кдц) ДОМЕН.local и перезапустите сеть. После этого проверьте из командной строки ping ДОМЕН.local и вводите в домен
  2. При указании домена, имеющего суффикс .local, потребуется на сервере и подключаемых компьютерах под управлением Linux отключить службу avahi-daemon - # chkconfig avahi-daemon off; reboot (доменная зона "local." используется в технологии zeroconf).
  3. Следите за синхронизацией времени на клиенте и сервере.
  4. Для предотвращения кэширования имён пользователя отключите службу nscd.
  5. В новых версиях Samba до запуска службы winbind должна запускаться служба smb.
  6. Если возникает проблема просмотра билетов Kerberos под доменным пользователем, скопируйте правильный krb5.conf из samba:
    rm -f /etc/krb5.conf
    cp /var/lib/samba/smb_krb5/krb5.conf* /etc/krb5.conf
    
  7. Если у вас домен Windows 2003 (не R2), то в директивы default_tgs_enctypes, default_tkt_enctypes и preferred_enctypes файла /etc/krb5.conf добавьте ещё DES3-CBC-SHA1.
  8. Для возможности входа в ОС под доменным пользователем при его недоступности можно включить опцию кэширования учетных данных в конфиге SSSD (подробнее тут, опция cache_credentials)

Настройка окна входа[править]

Настройка 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
Примечание: В lightdm-gtk-greeter, начиная с версии 2.0.7-alt2, можно настроить автоматическое заполнение поля «Имя пользователя» именем последнего пользователя входившего в систему. Для этого в файле /etc/lightdm/lightdm-gtk-greeter.conf (группа [greeter]) необходимо указать:
enter-username = true


Отображение глобальных групп на локальные[править]

Примечание: Первые два пункта данного раздела выполняются автоматически, если АРМ вводится в домен с помощью task-auth-ad-sssd.

Установка модуля ролей[править]

apt-get install libnss-role

Настройка ролей и привилегий[править]

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

# groupadd -r localadmins
Примечание: Лучше использовать группу localadmins (вместо admins) по избежание конфликта с группой admins во FreeIPA.


Создаём привилегию на право удалённого доступа (по протоколу 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[править]

Примечание: Способ актуален для дистрибутивов, использующих gio (ранее — gvfs) (например, Кентавр, Simply Linux, Basealt Workstation, СПТ).


Недостаток такого способа — необходимо открыть ресурс в файловом менеджере (Caja, Pcmanfm). Однако можно открывать любые ресурсы на любых серверах, входящие в домен Active Directory.

1. Устанавливаем необходимые пакеты (с правами root):

apt-get install fuse-gvfs gvfs-backend-smb libgio

2. Включаем пользователя в группу fuse (с правами root):

gpasswd -a <пользователь> fuse
Внимание! Начиная с p9 членства в группе fuse недостаточно, требуется разрешить для всех доступ к fuse под root:
control fusermount public


3. Входим доменным пользователем.

4. Открываем ресурс в файловом менеджере (например, по адресу smb://server/sysvol). Ресурс смонтирован по пути /var/run/<uid_пользователя>/gvfs или /var/run/user/<uid_пользователя>/gvfs/smb-share:server=сервер,share=ресурс

Другой вариант (полезно для скриптов в автозапуске):

gio mount smb://server/sysvol/
Примечание: Если необходимо открывать что-то с ресурса в WINE, в winecfg добавьте диск с путём /var/run/<uid_пользователя>/gvfs.


Через pam_mount[править]

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

1. Устанавливаем pam_mount:

apt-get install pam_mount

Если осуществляется подключение файловых ресурсов по протоколу CIFS (SMB), то установите cifs-utils:

apt-get install cifs-utils
Внимание! Для того, чтобы файловые ресурсы, подключенные с помощью pam_mount, корректно отключались при завершении сеанса, установите пакет systemd-settings-enable-kill-user-processes и перезагрузите систему:
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" — имя группы, при членстве пользователя в которой, папка будет примонтирована.
Внимание! Обязательно указывайте настоящее имя сервера в параметре server, а не имя домена


Параметр 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">
<!--
        See pam_mount.conf(5) for a description.
-->

<pam_mount>

                <!-- debug should come before everything else,
                since this file is still processed in a single pass
                from top-to-bottom -->

<debug enable="0" />

                <!-- Volume definitions -->
<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" />
-->

<!-- Note that commenting out mntoptions will give you the defaults.
     You will need to explicitly initialize it with the empty string
     to reset the defaults to nothing. -->
<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" />

<!-- requires ofl from hxtools to be present -->
<logout wait="0" hup="no" term="no" kill="no" />

                <!-- pam_mount parameters: Volume-related -->

<mkmountpoint enable="1" remove="true" />

</pam_mount>

Для отладки подключения замените в файле /etc/security/pam_mount.conf.xml

<debug enable="0" />

на

<debug enable="1" />

При этом отладочные сообщения будут показываться в журнале Journald.

Через autofs[править]

В этом случае заданный ресурс подключается автоматически при каждом обращении пользователя. И отключается после определенного времени бездействия (определяется конфигуацией Autofs).

Основная статья AutoFS[править]

https://www.altlinux.org/Autofs

Для дистрибутивов c KDE[править]

1. Устанавливаем kde5-autofs-shares:

apt-get install kde5-autofs-shares

2. Следуем инструкции по подключению в разделе Альт_Рабочая_станция_К_8_советы.

Групповые политики[править]

Групповые политики (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


Примечание: Планируется поддержка других групповых политик средствами подключаемых модулей


  1. Cм получение прав root:
Примечание: Получение прав root см. root


Ссылки по групповым политикам[править]

Ссылки[править]