ActiveDirectory/Login: различия между версиями

Материал из ALT Linux Wiki
 
(не показано 116 промежуточных версий 25 участников)
Строка 1: Строка 1:
{{Улучшение}}
{{Note|В первую очередь читайте официальную документацию к вашему дистрибутиву, например для '''Альт Образование 10.0''' читайте статью [https://docs.altlinux.org/ru-RU/alt-education/10.0/html/alt-education/activedirectory-login--chapter.html    Ввод рабочей станции в домен Active Directory]}}
Инструкция по вводу рабочей станции под управлением ALT Linux в домен Active Directory (работающий под Windows или под [[SambaAD|Samba в режиме AD DC]]).
Инструкция по вводу рабочей станции под управлением ALT Linux в домен Active Directory (работающий под Windows или под [[SambaAD|Samba в режиме AD DC]]).
Устаревшая инструкция: [[Ввод в домен на базе Windows 2003]]
Устаревшая инструкция: [[Ввод в домен на базе Windows 2003]]
{{Attention|Если Ваш домен имеет суффикс .local — необходимо отключить avahi-daemon (подробнее [[ActiveDirectory/Login#Примечания|ниже, пункт 2 примечаний]]).}}


'''Параметры домена'''
'''Параметры домена'''
Строка 11: Строка 18:
|Рабочая группа||SCHOOL
|Рабочая группа||SCHOOL
|-
|-
|Имя компьютера в Netbios||HOST-15
|Имя компьютера в Netbios||WS
|-
|-
|Имя пользователя-администратора||Administrator
|Имя пользователя-администратора||Administrator
Строка 19: Строка 26:




= Подготовка =
<div id="prep"></div>
 
== Подготовка ==
 
=== Установка пакетов ===


== Установка пакетов ==
{{Attention|Аутентификация через winbind в новых сборках Samba не работает, используйте аутентификацию через {{pkg|task-auth-ad-sssd}}.}}
  apt-get install samba-winbind samba-winbind-clients alterator-auth
 
С версии {{prg|alterator-auth-0.31-alt1}}
 
  apt-get install task-auth-ad-sssd
 
{{note|Для старых версий: <source lang="text">apt-get install alterator-auth sssd-ad samba-common-tools</source>}}


Требуемые версии:
Требуемые версии:
Строка 28: Строка 44:
* {{pkg|alterator-auth}} >= 0.26-alt1
* {{pkg|alterator-auth}} >= 0.26-alt1


Возможно, следует [[Обновление ОС#В пределах версии|обновить]] установленный дистрибутив версии 7.0 из репозитория.
Возможно, следует [[Обновление ОС#В пределах версии|обновить]] установленный дистрибутив из репозитория.


== Синхронизация времени ==
=== Синхронизация времени ===


С версии alterator-auth 0.28 синхронизация времени производится автоматически с контроллером домена.
С версии alterator-auth 0.28 синхронизация времени производится автоматически с контроллером домена.
Строка 42: Строка 58:
===== Способ 2: По протоколу [https://tools.ietf.org/html/rfc867 RFC 867] =====
===== Способ 2: По протоколу [https://tools.ietf.org/html/rfc867 RFC 867] =====


На сервере включается через xinetd daytime-tcp:
На сервере включается через xinetd daytime-tcp <ref>Cм получение прав root: </ref>:


  # chkconfig --list | grep daytime-tcp
  # chkconfig --list | grep daytime-tcp
Строка 59: Строка 75:


  ntpdate pool.ntp.org
  ntpdate pool.ntp.org
<div id="setup"></div>


= Ввод в домен в Центре управления системой =
== Ввод в домен ==  


В Центре управления системой перейдите в раздел {{path|Пользователи → Аутентификация}}
=== Ввод в домен в Центре управления системой ===


[[Файл:Alterator-auth-new.png]]
Для ввода компьютера в Active Directory потребуется установить пакет {{pkg|task-auth-ad-sssd}} и все его зависимости.


Выберите пункт «Домен Active Directory» и заполните поля. Нажмите кнопку «Применить».
В [[ЦУС|Центре управления системой]] перейдите в раздел [[Alterator-auth|Аутентификация]] ({{path|Пользователи → Аутентификация}}). Выберите пункт «Домен Active Directory» и заполните поля. Нажмите кнопку «Применить».


{{Note|Для аутентификации в Active Directory потребуется наличие службы {{cmd|winbind}} из пакета {{pkg|samba-winbind}}}}
[[Файл:Qwe.png|мини|слева|x400px|Clear|]]
<div style="clear:{{{1|both}}};"></div>


= Ввод в домен в командной строке =
=== Ввод в домен в командной строке ===


<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' [--windows2003] [--createcomputer="COMPUTEROU/SubCOMPUTEROU/SubSubCOMPUTEROU"] [--winbind] [--gpo] [-d]
Joined 'HOST-15' to dns domain 'school.alt'</pre>
Joined 'HOST-15' to dns domain 'school.alt'</pre>
<div id="check"></div>
=== Примечания ===
''' Длинные имена машин в домене '''
Рекомендации (для имен хостов, больше 15 символов)
'''Для клиентов и серверов на базе ALT:'''
* Хосту задаётся два имени: длинное (dnsHostname) и короткое (sAMAccountName, NetBIOS Name).
* Длинное имя должно совпадать с именем хоста (hostname).
* При введении хоста в домен оба имени нужно указывать явно.
* Оба имени должны быть уникальными.
* Для корректной работы службы SSSD в параметре настройки ad_hostname необходимо задавать короткое имя хоста.
* Обновление DNS записей с помощью SSSD будет выполняться только для короткого имени. По этому обновление DNS записей рекомендуется отключить (dyndns_update = false, dyndns_update_ptr = false).
*  Для введения хоста в домен в режиме с двумя именами предлагается использовать [https://git.altlinux.org/people/liannnix/packages/?p=alterator-auth.git;a=commit;h=31eef1e8a3d74d983ff9cf66af8a9a47578600d9 временное решение в виде распространяемого не из пакета скрипта system-auth].
Для использования длинного имени необходимо дополнительно указать короткое NetBIOS имя.
Например:
#./system-auth write ad domain.alt super-long-hostname sub --netbiosname=short-host
В случае с коротким именем хоста поведение скрипта не меняется.


= Проверка работы =
'''Для контроллеров домена длинные имена не допустимы.'''


<pre># wbinfo -u | grep ivan
== Настройка SSSD ==
ivan
См. статью [[SSSD/AD]], [[Alterator-auth#Настройки_SSSD | Настройки SSSD в Alterator]]


# wbinfo -a ivan
== Проверка работы ==
Enter ivan's password:
plaintext password authentication succeeded
Enter ivan's password:
challenge/response password authentication succeeded


# getent passwd | egrep :[0-9]{5} | grep ^ivan
<pre># getent passwd ivan
ivan:*:10005:10002:ivan:/home/SCHOOL/ivan:/bin/bash
ivan:*:10005:10002:ivan:/home/SCHOOL/ivan:/bin/bash


Строка 97: Строка 134:
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
# Ограничение: имя домена должно указывать на DC. Если это не так, поправляйте /etc/krb5.conf и вводите вручную, либо в файл /etc/hosts добавьте строку с контроллером домена (кдц) ДОМЕН.local и перезапустите сеть. После этого проверте из командной строки ping ДОМЕН.local и вводите в домен
Join is OK</pre>
# При указании домена, имеющего суффикс '''.local''', потребуется на сервере и подключаемых компьютерах под управлением Linux <u>'''отключить''' службу {{cmd|avahi-daemon}}</u> (доменная зона "local." используется в технологии zeroconf).
 
{{Note| Вы не увидите пользователей из AD с помощью команды <code># getent passwd </code> на клиентской машине. Этот функционал отключен по-умолчанию для того чтобы сократить нагрузку на серверы. Поэтому для проверки необходимо указать точное имя пользователя <code># getent passwd имя_пользователя </code>. Список пользователей можно посмотреть на сервере командой <code># samba-tool user list</code>}}
 
== Примечания ==
# Ограничение: имя домена должно указывать на DC. Если это не так, поправляйте {{path|/etc/krb5.conf}} и вводите вручную, либо в файл {{path|/etc/hosts}} добавьте строку с контроллером домена (кдц) ДОМЕН.local и перезапустите сеть. После этого проверьте из командной строки {{cmd|ping ДОМЕН.local}} и вводите в домен.
# При указании домена, имеющего суффикс '''.local''', потребуется на сервере и подключаемых компьютерах под управлением Linux <u>'''отключить''' службу {{cmd|avahi-daemon}}</u> (доменная зона "local." используется в технологии zeroconf):
#:<syntaxhighlight lang="bash"># chkconfig avahi-daemon off; reboot </syntaxhighlight>
# Следите за синхронизацией времени на клиенте и сервере.
# Следите за синхронизацией времени на клиенте и сервере.
# Для предотвращения кэширования имён пользователя отключите службу {{cmd|nscd}}.
# Для предотвращения кэширования имён пользователя отключите службу {{cmd|nscd}}.
# В новых версиях Samba до запуска службы {{cmd|winbind}} должна запускаться служба {{cmd|smb}}.
# В новых версиях Samba до запуска службы {{cmd|winbind}} должна запускаться служба {{cmd|smb}}.
# Если возникает проблема просмотра билетов Kerberos под доменным пользователем, скопируйте правильный krb5.conf из samba:  
# Если возникает проблема просмотра билетов Kerberos под доменным пользователем, скопируйте правильный krb5.conf из samba:
<source lang="bash">rm -f /etc/krb5.conf
#:<syntaxhighlight 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</syntaxhighlight>
# Если у вас домен Windows 2003 (не R2), то в директивы default_tgs_enctypes, default_tkt_enctypes и preferred_enctypes файла /{{path|etc/krb5.conf}} добавьте ещё DES3-CBC-SHA1.
# Для возможности входа в ОС под доменным пользователем при его недоступности можно включить опцию кэширования учётных данных в конфиге SSSD (подробнее [[SSSD/AD#Установка_sssd-модуля|тут]], опция '''cache_credentials''').
# Убедитесь, что у вас в {{path|/etc/samba/smb.conf}} и {{path|/etc/sssd/sssd.conf}} прописаны параметры, отвечающие за автоматическое обновление пароля машины:
#* файл {{path|/etc/samba/smb.conf}}:
#*:<syntaxhighlight lang="ini">
[global]
machine password timeout = 0</syntaxhighlight>
#* файл {{path|/etc/sssd/sssd.conf}}:
#*:<syntaxhighlight lang="ini">[sssd]
user = root


= Настройка окна входа =
[domain/SCHOOL.ALT]
ad_update_samba_machine_account_password = true</syntaxhighlight>
#: Подробнее [[ActiveDirectory/MachinePassword|здесь]]


== Настройка LightDM ==
== Настройка окна входа ==
 
=== Настройка LightDM ===


В {{path|/etc/lightdm/lightdm.conf}} раскомментируйте строку в группе {{cmd|[SeatDefaults]}}:
В {{path|/etc/lightdm/lightdm.conf}} раскомментируйте строку в группе {{cmd|[SeatDefaults]}}:
Строка 118: Строка 175:
Это позволит вводить имя пользователя вручную, а не прокручивать огромный список доступных доменныx пользователей.
Это позволит вводить имя пользователя вручную, а не прокручивать огромный список доступных доменныx пользователей.


Также полезно выключить выбор языка. В файле {{path|/etc/lightdm/lightdm-gtk-greeter.conf}} в группе {{cmd|[greeter]}} укажите
Также полезно выключить выбор языка. В файле {{path|/etc/lightdm/lightdm-gtk-greeter.conf}} в группе {{cmd|[greeter]}} укажите:
  show-language-selector=false
  show-language-selector=false


В новых версиях lightdm-gtk-greeter можно указать кнопки явно:
В новых версиях {{pkg|lightdm-gtk-greeter}} можно указать кнопки явно:
  show-indicators=a11y;power
  show-indicators=~a11y;~power


Полный перечень доступных кнопок:
Полный перечень доступных кнопок:
  show-indicators=a11y;power;session;language
  show-indicators=~a11y;~power;~session;~language


= Отображение глобальных групп на локальные =
{{Note|В {{pkg|lightdm-gtk-greeter}}, начиная с версии {{pkg|2.0.7-alt2}}, можно настроить автоматическое заполнение поля «Имя пользователя» именем последнего пользователя входившего в систему. Для этого в файле {{path|/etc/lightdm/lightdm-gtk-greeter.conf}} (группа {{cmd|[greeter]}}) необходимо указать:
<source lang="text">enter-username = true</source>}}


== Установка модуля ролей ==
== Решение проблем ==
 
=== Изменение пароля при истечении его срока ===
 
При использовании winbind нет диалога смены пароля, меняемого при первом запуске или при истечении его срока. В p10 необходимо обновить samba до 4.17:
apt-repo upgrade 332201
И дописать в файл {{path|/etc/security/pam_winbind.conf}}:
<syntaxhighlight lang="ini">pwd_change_prompt = yes</syntaxhighlight>
После этого выполните:
systemctl restart winbind
 
== Отображение глобальных групп на локальные ==
{{note|Первые два пункта данного раздела выполняются автоматически, если АРМ вводится в домен с помощью {{pkg|task-auth-ad-sssd}}.}}
=== Установка модуля ролей ===
  apt-get install libnss-role
  apt-get install libnss-role


== Настройка ролей и привилегий ==
=== Настройка ролей и привилегий ===
Добавляем роль локальных администраторов:
Добавляем роль локальных администраторов:
  groupadd -r admins
  # groupadd -r localadmins
 
{{Note|Лучше использовать группу localadmins (вместо admins) по избежание конфликта с группой admins во FreeIPA.}}


Создаём привилегию на право удалённого доступа (по протоколу ssh):
Создаём привилегию на право удалённого доступа (по протоколу ssh):
  groupadd -r remote
  # groupadd -r remote


Включаем удалённый доступ только для группы remote:
Включаем удалённый доступ только для группы remote:
  control sshd-allow-groups enabled
  # control sshd-allow-groups enabled
  sed -i 's/AllowGroups.*/AllowGroups = remote/' /etc/openssh/sshd_config
  # sed -i 's/AllowGroups.*/AllowGroups = remote/' /etc/openssh/sshd_config


Настраиваем список привилегий для пользователей (для роли users):
Настраиваем список привилегий для пользователей (для роли users):
  roleadd users cdwriter cdrom audio proc radio camera floppy xgrp scanner uucp fuse
  # roleadd users cdwriter cdrom audio proc radio camera floppy xgrp scanner uucp fuse


Настраиваем список привилегий для администраторов (для роли admins):
Настраиваем список привилегий для администраторов (для роли admins):
  roleadd admins wheel remote vboxusers
  # roleadd localadmins wheel remote vboxusers


Настраиваем отображение локальных привилегий, назначенных локальным ролям, на глобальные группы безопасности:
Настраиваем отображение локальных привилегий, назначенных локальным ролям, на глобальные группы безопасности:
  roleadd 'Domain Users' users
  # roleadd 'Domain Users' users
  roleadd 'Domain Admins' admins
или
# roleadd 'Пользователи домена' users
Далее
  # roleadd 'Domain Admins' localadmins
или
# roleadd 'Администраторы домена' localadmins


Просматриваем список назначенных ролей и привилегий:
Просматриваем список назначенных ролей и привилегий:
  rolelst
  # rolelst
  id ivan
  # 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.
<pre>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
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
</pre>
 
== Подключение файловых ресурсов ==


Рассматриваемые способы позволяют подключать файловые ресурсы (file shares) для доменного пользователя без повторного ввода пароля (SSO, Single Sign-On).
Рассматриваемые способы позволяют подключать файловые ресурсы (file shares) для доменного пользователя без повторного ввода пароля (SSO, Single Sign-On).


== Через gvfs ==
=== Через gio ===


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


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


1. Устанавливаем необходимые пакеты (с правами root):
1. Устанавливаем необходимые пакеты (с правами root):
apt-get install fuse-gvfs gvfs-backend-smb
<syntaxhighlight lang="bash"># apt-get install fuse-gvfs gvfs-backend-smb libgio</syntaxhighlight>
2. Включаем пользователя в группу ''fuse'' (с правами root):
<syntaxhighlight lang="bash"># gpasswd -a <пользователь> fuse</syntaxhighlight>
{{Attention|Начиная с [[p9]] членства в группе fuse недостаточно, требуется разрешить для всех доступ к fuse под root:
<syntaxhighlight lang="bash"># control fusermount public</syntaxhighlight>
}}
 
3. Входим доменным пользователем.
 
4. Открываем ресурс в файловом менеджере (например, по адресу {{path|smb://server/sysvol}}). Ресурс смонтирован по пути {{path|/var/run/<uid_пользователя>/gvfs}} или '''/run/user/<uid_пользователя>/gvfs/smb-share:server=<сервер>,share=<ресурс>'''


2. Включаем для всех пользователей право использования FUSE (с правами root):
Другой вариант (полезно для скриптов в автозапуске):  
  control fusermount public
  gio mount smb://server/sysvol/
systemctl restart systemd-udevd


3. Входим доменным пользователем
{{note|Если необходимо открывать что-то с ресурса в WINE, в {{cmd|winecfg}} добавьте диск с путём {{path|/var/run/<uid_пользователя>/gvfs}}.}}


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


{{note|Если необходимо отрывать что-то с ресурса в WINE, в {{cmd|winecfg}} добавьте диск с путём {{path|/var/run/<uid_пользователя>/gvfs}}.}}
{{:pam_mount}}


== Через pam_mount ==
=== Через autofs ===


В этом случае заданный ресурс подключается с заданного сервера <u>автоматически при каждом входе</u> доменным пользователем.
В этом случае заданный ресурс подключается <u>автоматически при каждом обращении</u> пользователя и отключается после определенного времени бездействия (определяется конфигурацией Autofs).
==== Основная статья AutoFS ====
https://www.altlinux.org/Autofs
==== Для дистрибутивов c KDE ====
# Установить {{pkg|kde5-autofs-shares}}:
#: <syntaxhighlight lang="bash"># apt-get install kde5-autofs-shares</syntaxhighlight>
# Добавить в {{path|/etc/auto.master}} строку:
#: <syntaxhighlight lang="bash">/mnt/samba /etc/auto.smb -t 34567</syntaxhighlight>
#: Здесь {{path|/mnt/samba}} — каталог в котором будут подключаться сетевые файловые системы, {{path|/etc/auto.smb}} — скрипт, входящий в состав пакета {{pkg|autofs}}, 34567 — таймаут подключения при отсутствии обращения.
# Включить и запустить сервис '''autofs''':
#: <syntaxhighlight lang="bash"># systemctl enable --now autofs</syntaxhighlight>
# В файловом менеджере Dolphin по адресу '''smb:/''' («Сеть»/«Общие папки Samba») найти нужный ресурс Windows (Samba)
# В контекстном меню подключаемого ресурса (правая кнопка мыши) выбрать пункт '''«Подключение»''':
#:[[Файл:Autofs.png|400px|Контекстное меню подключаемого ресурса]]
#:Данный ресурс будет подключаться автоматически при входе в систему


1. Устанавливаем {{pkg|pam_mount}}:
{{note|Список ресурсов для подключения хранится в файле {{path|~/.autofs.shares}}}}
apt-get install pam_mount
 
{{Attention|Способ работает только для ресурсов с гостевым доступом или ресурсов с авторизацией Kerberos.}}
 
== Групповые политики ==
 
Групповые политики (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}}
|}


2. Прописываем pam_mount в схему {{path|/etc/pam.d/system-auth-winbind}}:
auth            optional        pam_mount.so
и
session        optional        pam_mount.so


3. Устанавливаем правило монтирования ресурса в файле {{path|/etc/security/pam_mount.conf.xml}} (перед тегом <cifsmount>):
{{Note|Планируется поддержка других групповых политик средствами подключаемых модулей}}
<source lang="xml"><volume uid="10000-20000" fstype="cifs" server="c228" path="sysvol" mountpoint="/home/SCHOOL/%(USER)/share" options="sec=krb5,cruid=%(USERUID)" /></source>
где
* '''uid="10000-20000"''' — диапазон присваиваемых uid для доменных пользователей (см. параметр {{cmd|idmap config * : range}} в файле {{path|/etc/samba/smb.conf}})
* '''server="c228"''' — имя сервера с ресурсом
* '''path="sysvol"''' — имя файлового ресурса
* '''mountpoint="/home/SCHOOL/%(USER)/share"''' — путь монтирования. Для доменных пользователей SCHOOL — имя рабочей группы, share — каталог в домашней папке пользователя


= Групповые политики =
{{примечания}}


{{Attention|Групповые политики (GPO) на Linux не применяются. Исключение составляет только контроль входа через sssd и средства Centrify}}
{{note| Получение прав root см. [[root]] }}


Подробнее:
=== Ссылки по групповым политикам ===
* 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
* https://www.youtube.com/watch?v=2cJWnUZ8qLI
* https://www.youtube.com/watch?v=2cJWnUZ8qLI


= Ссылки =
== Ссылки ==
* https://wiki.archlinux.org/index.php/Active_Directory_Integration
* https://wiki.archlinux.org/index.php/Active_Directory_Integration
* [[Ввод в домен на базе Windows 2003]]
* [[Ввод в домен на базе Windows 2003]]
* https://fedorahosted.org/sssd/wiki/Configuring_sssd_with_ad_server
* 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


{{Category navigation|title=Samba|category=Samba|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=Домен|category=Домен|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=Домен|category=Домен|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=HOWTO|category=HOWTO|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=HOWTO|category=HOWTO|sortkey={{SUBPAGENAME}}}}


[[Категория:Active Directory]]
[[Категория:Active Directory]]

Текущая версия от 17:03, 9 октября 2024

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


Примечания

  1. Ограничение: имя домена должно указывать на DC. Если это не так, поправляйте /etc/krb5.conf и вводите вручную, либо в файл /etc/hosts добавьте строку с контроллером домена (кдц) ДОМЕН.local и перезапустите сеть. После этого проверьте из командной строки ping ДОМЕН.local и вводите в домен.
  2. При указании домена, имеющего суффикс .local, потребуется на сервере и подключаемых компьютерах под управлением Linux отключить службу avahi-daemon (доменная зона "local." используется в технологии zeroconf):
    # chkconfig avahi-daemon off; reboot
    
  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).
  9. Убедитесь, что у вас в /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
      
    Подробнее здесь

Настройка окна входа

Настройка 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


Решение проблем

Изменение пароля при истечении его срока

При использовании winbind нет диалога смены пароля, меняемого при первом запуске или при истечении его срока. В p10 необходимо обновить samba до 4.17:

apt-repo upgrade 332201

И дописать в файл /etc/security/pam_winbind.conf:

pwd_change_prompt = yes

После этого выполните:

systemctl restart winbind

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

Примечание: Первые два пункта данного раздела выполняются автоматически, если АРМ вводится в домен с помощью 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, ALT 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 или /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">

<!--
  См. 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

  1. Установить kde5-autofs-shares:
    # apt-get install kde5-autofs-shares
    
  2. Добавить в /etc/auto.master строку:
    /mnt/samba /etc/auto.smb -t 34567
    
    Здесь /mnt/samba — каталог в котором будут подключаться сетевые файловые системы, /etc/auto.smb — скрипт, входящий в состав пакета autofs, 34567 — таймаут подключения при отсутствии обращения.
  3. Включить и запустить сервис autofs:
    # systemctl enable --now autofs
    
  4. В файловом менеджере Dolphin по адресу smb:/ («Сеть»/«Общие папки Samba») найти нужный ресурс Windows (Samba)
  5. В контекстном меню подключаемого ресурса (правая кнопка мыши) выбрать пункт «Подключение»:
    Контекстное меню подключаемого ресурса
    Данный ресурс будет подключаться автоматически при входе в систему
Примечание: Список ресурсов для подключения хранится в файле ~/.autofs.shares


Внимание! Способ работает только для ресурсов с гостевым доступом или ресурсов с авторизацией Kerberos.


Групповые политики

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


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

Ссылки