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

Материал из ALT Linux Wiki
мНет описания правки
мНет описания правки
 
(не показана 1 промежуточная версия 1 участника)
Строка 27: Строка 27:
В репозитории с программой находятся детальные инструкции, но, в целом, решение проблемы для опытных специалистов можно свести к процедуре:
В репозитории с программой находятся детальные инструкции, но, в целом, решение проблемы для опытных специалистов можно свести к процедуре:


<source>
sudo apt-get install git libfuse-devel libldap-devel libsasl2-devel libsasl2-plugin-gssapi ghc8.6.4 ghc8.6.4-cabal-install
sudo apt-get install git libfuse-devel libldap-devel libsasl2-devel libsasl2-plugin-gssapi ghc8.6.4 ghc8.6.4-cabal-install
git clone https://github.com/altlinuxteam/hadfs.git
git clone https://github.com/altlinuxteam/hadfs.git
cd hadfs
cd hadfs
git submodule update --init --recursive
git submodule update --init --recursive
cabal update
cabal update
cabal new-build
cabal new-build
</source>
 
==Использование==
==Использование==


Строка 54: Строка 52:
В случае с '''ALT Linux''' необходимо добавить пользователя в соответствующую группу:
В случае с '''ALT Linux''' необходимо добавить пользователя в соответствующую группу:


<source>
sudo usermod -aG fuse username
sudo usermod -aG fuse username
</source>


===Подключение схемы===
===Подключение схемы===
Строка 62: Строка 58:
Для получения дерева объектов в требуемом каталоге необходимо подключить утилиту '''hadfs-exe''' к контроллеру домена. Сделать это можно командой:
Для получения дерева объектов в требуемом каталоге необходимо подключить утилиту '''hadfs-exe''' к контроллеру домена. Сделать это можно командой:


<source>
kinit administrator@DOMAIN.ALT
kinit administrator@DOMAIN.ALT
hadfs /mnt/dc0.domain.alt dc0.domain.alt
hadfs-exe /mnt/dc0.domain.alt dc0.domain.alt
</source>


Данное действие импортирует схему от контроллера домена '''dc0.domain.alt''' в каталог '''/mnt/dc0.domain.alt'''. При этом, прежде, чем '''hadfs-exe''' представит данные в качестве файловой системы, необходимо провести авторизацию в '''Kerberos''' с помощью утилиты '''kinit'''.
Данное действие импортирует схему от контроллера домена '''dc0.domain.alt''' в каталог '''/mnt/dc0.domain.alt'''. При этом, прежде, чем '''hadfs-exe''' представит данные в качестве файловой системы, необходимо провести авторизацию в '''Kerberos''' с помощью утилиты '''kinit'''.
Строка 83: Строка 77:
Также существует специальный файл '''.refresh'''. Его назначение состоит в том, чтобы вызвать обновление дерева (которое закэшировано). Сделать это можно командой:
Также существует специальный файл '''.refresh'''. Его назначение состоит в том, чтобы вызвать обновление дерева (которое закэшировано). Сделать это можно командой:


<source>
touch .refresh
touch .refresh
</source>


Это вызовет обновление дерева в том каталоге, где произведена данная операция.
Это вызовет обновление дерева в том каталоге, где произведена данная операция.
Строка 95: Строка 87:
==Диагностика проблем==
==Диагностика проблем==


* '''Q1''': hadfs-exe: ldapGSSAPISaslBind: LDAPException LdapAuthUnknown(-6): Unknown authentication method (SASL(-4): no mechanism available: No worthy mechs found)
* '''Q1''': hadfs: ldapGSSAPISaslBind: LDAPException LdapAuthUnknown(-6): Unknown authentication method (SASL(-4): no mechanism available: No worthy mechs found)
* '''A1''': Установите пакет libsasl2-plugin-gssapi
* '''A1''': Установите пакет libsasl2-plugin-gssapi




* '''Q2''': hadfs-exe: ldapGSSAPISaslBind: LDAPException LdapLocalError(-2): Local error (SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure.  Minor code may provide more information (No Kerberos credentials available (default cache: KEYRING:persistent:500)))
* '''Q2''': hadfs: ldapGSSAPISaslBind: LDAPException LdapLocalError(-2): Local error (SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure.  Minor code may provide more information (No Kerberos credentials available (default cache: KEYRING:persistent:500)))
* '''A2''': Проверьте, что имя контроллера домена можно разрешить в IP-адрес.
* '''A2''': Проверьте, что имя контроллера домена можно разрешить в IP-адрес.




* '''Q3''': hadfs-exe: ldapGSSAPISaslBind: LDAPException LdapServerDown(-1): Can't contact LDAP server
* '''Q3''': hadfs: ldapGSSAPISaslBind: LDAPException LdapServerDown(-1): Can't contact LDAP server
* '''A3''': Проверьте, что порты LDAP открыты на контроллере домена.
* '''A3''': Проверьте, что порты LDAP открыты на контроллере домена.




* '''Q4''': hadfs-exe: ldapGSSAPISaslBind: LDAPException LdapLocalError(-2): Local error (SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure.  Minor code may provide more information (Server not found in Kerberos database))
* '''Q4''': hadfs: ldapGSSAPISaslBind: LDAPException LdapLocalError(-2): Local error (SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure.  Minor code may provide more information (Server not found in Kerberos database))
* '''A4''': У данной проблемы может быть много причин одной из которых могут быть неполадки при '''reverse DNS lookup'''. Проблему можно решить отключением данной функции в файле <code>/etc/openldap/ldap.conf</code> из пакета <code>openldap</code> с помощью прописывания строки: <code>sasl_nocanon yes</code>
* '''A4''': У данной проблемы может быть много причин одной из которых могут быть неполадки при '''reverse DNS lookup'''. Проблему можно решить отключением данной функции в файле <code>/etc/openldap/ldap.conf</code> из пакета <code>openldap</code> с помощью прописывания строки: <code>sasl_nocanon yes</code>



Текущая версия от 11:24, 20 апреля 2022


Введение в Active Directory File System

Настройки Active Directory представляются деревьями LDAP. Данный подход сложен для человеческого восприятия. Существует утилита называемая hadfs, которая представляет дерево объектов Active Directory в виде структуры файлов и каталогов. Таким образом становится возможным редактировать настройки контроллера домена простыми способами - в текстовом редакторе, с помощью скриптов или с помощью специализированного ПО.

Сборка и установка

Сборка из исходного кода

Исходный код находится по адресу: https://github.com/altlinuxteam/hadfs

Данное ПО написано на языке программирования Haskell, потому вам понадобится компилятор (например, GHC - Glasgow Haskell Compiler) и, желательно, утилиты cabal-install или stack.

Для сборки в среде ALT Linux понадобятся следующие зависимости:

  • git
  • libfuse-devel
  • libldap-devel
  • libsasl2-devel
  • libsasl2-plugin-gssapi
  • ghc8.6.4
  • ghc8.6.4-cabal-install

В репозитории с программой находятся детальные инструкции, но, в целом, решение проблемы для опытных специалистов можно свести к процедуре:

sudo apt-get install git libfuse-devel libldap-devel libsasl2-devel libsasl2-plugin-gssapi ghc8.6.4 ghc8.6.4-cabal-install
git clone https://github.com/altlinuxteam/hadfs.git
cd hadfs
git submodule update --init --recursive
cabal update
cabal new-build

Использование

Зависимости

При использовании утилиты в ALT Linux потребуются следующие пакеты:

  • libldap
  • openldap
  • libsasl2
  • libsasl2-plugin-gssapi
  • krb5-kinit

Предварительная настройка

Утилита hadfs оперирует деревом объектов LDAP, потому для работы hadfs необходим доступ к портам LDAP - 88 и 389. Также, данная утилита использует FUSE (Filesystem in Userspace), потому у пользователя должно быть достаточно прав для использования fuse.

В случае с ALT Linux необходимо добавить пользователя в соответствующую группу:

sudo usermod -aG fuse username

Подключение схемы

Для получения дерева объектов в требуемом каталоге необходимо подключить утилиту hadfs-exe к контроллеру домена. Сделать это можно командой:

kinit administrator@DOMAIN.ALT
hadfs /mnt/dc0.domain.alt dc0.domain.alt

Данное действие импортирует схему от контроллера домена dc0.domain.alt в каталог /mnt/dc0.domain.alt. При этом, прежде, чем hadfs-exe представит данные в качестве файловой системы, необходимо провести авторизацию в Kerberos с помощью утилиты kinit.

Специальные файлы

Объекты дерева представлены в виде директорий, а их свойства представлены в виде текстовых файлов. Для изменения свойства необходимо, чтобы текстовый редактор записывал файл после изменения целиком. Вы можете столкнуться с проблемами, например, при использовании редактора mcedit.

Среди специальных файлов в каталогах (дереве) можно встретить следующие:

  • .chpwd - Доступный только на запись файл, куда вы можете записать новый пароль для пользователя.
  • .attributes - Атрибуты объекта в виде LDIF файла.
  • .attributes.json - Атрибуты объекта в виде JSON.

Также в каталоге запуска программы, в случае ошибок, вы можете встретить файл .lasterror, который хранит в себе текст последней ошибки.

Также существует специальный файл .refresh. Его назначение состоит в том, чтобы вызвать обновление дерева (которое закэшировано). Сделать это можно командой:

touch .refresh

Это вызовет обновление дерева в том каталоге, где произведена данная операция.

Работа с деревом

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

Диагностика проблем

  • Q1: hadfs: ldapGSSAPISaslBind: LDAPException LdapAuthUnknown(-6): Unknown authentication method (SASL(-4): no mechanism available: No worthy mechs found)
  • A1: Установите пакет libsasl2-plugin-gssapi


  • Q2: hadfs: ldapGSSAPISaslBind: LDAPException LdapLocalError(-2): Local error (SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure. Minor code may provide more information (No Kerberos credentials available (default cache: KEYRING:persistent:500)))
  • A2: Проверьте, что имя контроллера домена можно разрешить в IP-адрес.


  • Q3: hadfs: ldapGSSAPISaslBind: LDAPException LdapServerDown(-1): Can't contact LDAP server
  • A3: Проверьте, что порты LDAP открыты на контроллере домена.


  • Q4: hadfs: ldapGSSAPISaslBind: LDAPException LdapLocalError(-2): Local error (SASL(-1): generic failure: GSSAPI Error: Unspecified GSS failure. Minor code may provide more information (Server not found in Kerberos database))
  • A4: У данной проблемы может быть много причин одной из которых могут быть неполадки при reverse DNS lookup. Проблему можно решить отключением данной функции в файле /etc/openldap/ldap.conf из пакета openldap с помощью прописывания строки: sasl_nocanon yes


  • Q5: Команда просмотра просмотра дерева (например, ls или графический файловый менеджер) зависает.
  • A5: Наиболее вероятной причиной проблемы в данном случае является обрыв связи с сервером. hadfs пытается подключиться к серверу, но соединения не происходит. Подключите дерево заново, чтобы установить связь с сервером.