apt-get install diag-domain-controller
diag-domain-controller [options] [<diagnostic-task>]
где diagnostic-task — название функции из списка тестов. Если не указывать название функции, будут запущены все тесты.
-l
, --list
— вывести список тестов;
-V
, --version
— вывести версию и выйти;
-h
, --help
— показать справку и выйти.
Таблица 7.1. Тесты diag-domain-controller
Тест
|
Описание
|
---|---|
is_domain_info_available
|
Проверка доступности просмотра общей информации о домене
|
is_hostname_correct
|
Проверка правильного написания доменного имени узла
|
is_not_empty_sysvol
|
Проверяет, содержит ли файлы каталог sysvol
|
is_samba_package_installed
|
Проверяет, установлен ли в системе пакет Samba (samba-dc или samba-dc-mitkrb5)
|
is_samba_service_running
|
Проверяет, запущена ли служба Samba
|
are_there_errors_in_samba_databases
|
Проверяет наличие ошибок в базах Samba
|
is_ntp_service_running
|
Проверяет, включена ли синхронизация времени
|
$ diag-domain-controller -l
is_domain_info_available
is_hostname_correct
is_not_empty_sysvol
is_samba_package_installed
is_samba_service_running
are_there_errors_in_samba_databases
is_ntp_service_running
$ diag-domain-controller is_domain_info_available
is_domain_info_available
[DONE]: is_domain_info_available
$ diag-domain-controller
[DONE]: is_domain_info_available
[DONE]: is_hostname_correct
[DONE]: is_not_empty_sysvol
[DONE]: is_samba_package_installed
[DONE]: is_samba_service_running
[FAIL]: are_there_errors_in_samba_databases
[WARN]: is_ntp_service_running
apt-get install diag-domain-client
diag-domain-client [options] [<test-function-name>]
где test-function-name — название функции из списка тестов. Если не указывать название функции, будут запущены все тесты.
-h
, --help
— показать справку и выйти;
-V
, --version
— вывести версию и выйти;
-v
, --verbose
— подробный вывод;
-w[FILE]
, --logfile[=FILE]
— записать подробный вывод в файл по указанному пути. Если файл не указан, вывод будет записан в файл ./diag-domain-client.log
. В случае если файл уже существует, то запись производится в файл с постфиксом (например, diag-domain-client.log.1
, diag-domain-client.log.2
и т.д.);
-f
, --force
— принудительная запись в существующий файл;
-l
, --list
— вывести список тестов.
Таблица 7.2. Тесты и проверки diag-domain-client
Тест/Проверка
|
Описание
|
---|---|
check_hostnamectl
|
Отображает полную информацию о узле и соответствующие настройки: имя, значок, система, версия ядра, архитектура, информация о виртуализации (при наличии)
|
test_hostname
|
Проверяет, является ли имя компьютера полностью определенным именем домена (FQDN)
|
check_system_auth
|
Отображает метод аутентификации пользователей, используемый в подсистеме PAM (sss, winbind — компьютер введен в домен, local — не введен). Выводит содержимое файла
/etc/pam.d/system-auth
|
is_samba_package_installed
|
Проверяет, установлен ли в системе пакет Samba (samba-dc или samba-dc-mitkrb5)
|
test_domain_system_auth
|
Проверяет, подходит ли метод аутентификации для работы машины в домене (допустимые значения: sss, winbind)
|
check_system_policy
|
Отображает, какие политики применяются в процессе PAM-аутентификации: local — никакие, gpupdate — локальные и доменные
|
test_gpupdate_system_policy
|
Проверяет, настроено ли применение групповых политик в системе
|
check_krb5_conf_exists
|
Проверяет наличие, отображает права доступа и содержимое файла конфигурации
krb5.conf
|
check_krb5_conf_ccache
|
Отображает текущий способ кеширования Kerberos-билетов — keyring, file, dir
|
test_keyring_krb5_conf_ccache
|
Проверяет настроенный способ кеширования Kerberos-билетов (для keyring)
|
check_krb5_conf_kdc_lookup
|
Проверяет включен ли поиск Kerberos-имени домена через DNS. Допустимыми значениями для «dns_lookup_kdc» в
/etc/krb5.conf являются — true/yes
|
check_krb5_keytab_exists
|
Проверяет наличие, права доступа и дату последнего изменения файла
/etc/krb5.conf . В этом файле хранятся принципалы и хеши пароля доменной учётной записи компьютера
|
check_keytab_credential_list
|
Отображает содержимое файла
/etc/krb5.conf (файл с учётными данными машинного пользователя). В этом файле хранятся принципалы и хеши пароля доменной учётной записи компьютера.
Требуется запуск от root, иначе SKIP
|
check_resolv_conf
|
Проверяет наличие и выводит содержимое файла конфигурации разрешения имен
resolv.conf
|
compare_resolv_conf_with_default_realm
|
Сравнивает домен для поиска (поле search в
/etc/resolv.conf ) с доменом по умолчанию, указанным для Kerberos
|
check_smb_conf
|
Проверяет наличие и выводит содержимое файла настроек конфигурации Samba
|
compare_smb_realm_with_krb5_default_realm
|
Сравнивает домен, указанный в файле конфигурации Samba, с доменом по умолчанию, указанным для Kerberos
|
test_smb_realm
|
Проверяет корректное заполнение информации о домене в конфигурационных файлах Samba и Kerberos
|
test_domainname
|
Сверяет доменное имя из
/etc/hostname с именем домена в составе FQDN-имени узла
|
check_time_synchronization
|
Отображает настройку синхронизации времени с сервером; выводит подробную информацию — часовой пояс, временную зону и т.д. Необходимо для корректной работы с сертификатами, электронной подписью, билетами Kerberos
|
test_time_synchronization
|
Проверяет, включена ли синхронизация времени
|
check_nameservers
|
Проверяет доступность всех контроллеров домена по имени (
host <domain FQDN> ) и IP-адресу (работает ли resolv.conf )
|
check_domain_controllers
|
Проверяет доступность всех контроллеров домена в домене (из srv-записей). Отображает версии контроллеров домена (из LDAP)
|
check_kerberos_and_ldap_srv_records
|
Проверяет наличие srv-записей вида _kerberos._udp.<domain FQDN> и _ldap._tcp.<domain FQDN> для домена. Требуется для корректной работы машины в домене. Без записей Kerberos, sssd и winbind не смогут найти контроллеры домена
|
compare_netbios_name
|
Сравнивает короткое имя машины из
/etc/hostname с NetBios-именем машины в smb.conf
|
check_common_packages
|
Проверяет наличие установленных основных пакетов и их версий (alterator-auth, libnss-role, libkrb5 и libsmbclient)
|
check_group_policy_packages
|
Проверяет наличие установленных основных пакетов и их версий для управления групповыми политиками (local-policy и gpupdate)
|
check_sssd_ad_packages
|
Проверяет наличие установленного мета-пакета и его версии для аутентификации c помощью sssd (task-auth-ad-sssd)
|
check_sssd_winbind_packages
|
Проверяет наличие установленного мета-пакета и его версии для аутентификации c помощью winbind (task-auth-ad-winbind)
|
$ diag-domain-client -l
check_hostnamectl
test_hostname
check_system_auth
test_domain_system_auth
check_system_policy
test_gpupdate_system_policy
check_krb5_conf_exists
check_krb5_conf_ccache
test_keyring_krb5_conf_ccache
check_krb5_conf_kdc_lookup
check_krb5_keytab_exists
check_keytab_credential_list
check_resolv_conf
compare_resolv_conf_with_default_realm
check_smb_conf
compare_smb_realm_with_krb5_default_realm
test_smb_realm
test_domainname
check_time_synchronization
test_time_synchronization
check_nameservers
check_domain_controllers
check_kerberos_and_ldap_srv_records
compare_netbios_name
check_common_packages
check_group_policy_packages
check_sssd_ad_packages
check_sssd_winbind_packages
$ diag-domain-client check_smb_conf
is_domain_info_available
[DONE]: is_domain_info_available
$ diag-domain-client check_krb5_conf_kdc_lookup -v
===============================================================================
| Samba environment diagnostic tool |
-------------------------------------------------------------------------------
Version: 0.2.8
Date: Ср 09 окт 2024 12:54:51 EET
-------------------------------------------------------------------------------
System information
Kernel: 5.10.212-std-def-alt1
Branch: p10
===============================================================================
===============================================================================
| check_krb5_conf_kdc_lookup |
-------------------------------------------------------------------------------
/etc/krb5.conf: dns_lookup_kdc is enabled
-------------------------------------------------------------------------------
Check DNS lookup kerberos KDC status: [DONE]
===============================================================================
$ diag-domain-client
Check hostname persistance: [DONE]
Test hostname is FQDN (not short): [DONE]
System authentication method: [DONE]
Domain system authentication enabled: [DONE]
System policy method: [DONE]
System group policy enabled: [DONE]
Check Kerberos configuration exists: [DONE]
Kerberos credential cache status: [DONE]
Using keyring as kerberos credential cache: [DONE]
Check DNS lookup kerberos KDC status: [DONE]
Check machine crendetial cache is exists: [DONE]
Check machine credentials list in keytab: [SKIP]
Check nameserver resolver configuration: [DONE]
Compare krb5 realm and first search domain: [DONE]
Check Samba configuration: [DONE]
Compare samba and krb5 realms: [DONE]
Check Samba domain realm: [DONE]
Check hostname FQDN domainname: [DONE]
Check time synchronization: [DONE]
Time synchronization enabled: [WARN]
Check nameservers availability: [WARN]
Check domain controllers list: [FAIL]
Check Kerberos and LDAP SRV-records: [DONE]
Compare NetBIOS name and hostname: [DONE]
Check common packages: [DONE]
Check group policy packages: [DONE]
Check SSSD AD packages: [DONE]
Check SSSD Winbind packages: [WARN]
/tmp/diag-domain-client.log
:
$ diag-domain-client check_krb5_conf_kdc_lookup -w/tmp/diag-domain-client.log
Check DNS lookup kerberos KDC status: [DONE]
просмотреть содержимое файла /tmp/diag-domain-client.log
:
$ cat /tmp/diag-domain-client.log
===============================================================================
| Samba environment diagnostic tool |
-------------------------------------------------------------------------------
Version: 0.2.8
Date: Ср 09 окт 2024 12:54:24 EET
-------------------------------------------------------------------------------
System information
Kernel: 5.10.212-std-def-alt1
Branch: p10
===============================================================================
===============================================================================
| check_krb5_conf_kdc_lookup |
-------------------------------------------------------------------------------
/etc/krb5.conf: dns_lookup_kdc is enabled
-------------------------------------------------------------------------------
Check DNS lookup kerberos KDC status: [DONE]
===============================================================================
# apt-get install adt
Установка инструментов диагностики состояния клиента домена и состояния контроллера домена:
# apt-get install diag-domain-client diag-domain-controller
# systemctl enable --now alterator-manager.service
$ adt
Примечание
-r
, --report
.
.backend
— описывает интерфейс диагностического инструмента, обеспечивающий взаимодействие с D-Bus. В нем же описываются методы интерфейса: info, run, list, report;
.diagnostictool
— описывает отображение диагностического инструмента в ADT. Содержит информацию о тестах, доступных в рамках описываемого диагностического инструмента.
.backend
и запуска исполняемых файлов.
.backend
обо всех установленных диагностических инструментах и создает объекты на системной и сессионных (в зависимости от расположения backend-файлов) шинах D-Bus с именами вида «ru.basealt.alterator.<имя инструмента>».
.backend
и .diagnostictool
(или .diag
), описывающие сущности Alterator Entry.
Примечание
.diagnostictool
и .diag
считаются верными.
/путь_к_исполняемому_файлу {param}где {param} — означает имя теста, который необходимо выполнить.
-l
или --list
— вывод списка тестов. Список необходимо выводить в стандартный вывод. Имя каждого теста должно быть с новой строки;
-r
или report
— сгенерировать файл с отчетом. Файл с отчетом может представлять собой как текстовые данные, так и бинарные (например, архив). Его содержимое необходимо направить в стандартный вывод. ADT получит этот вывод и сохранит в файл с именем вида «имя_инструмента_дата» и суффиксом, указанным в файле .diagnostictool
.
.backend
и .diagnostictool
следует воспользоваться спецификацией Alterator Entry
.backend
и .diagnostictool
являются текстовыми и содержат описание в виде секций. Синтаксис файлов:
[имя секции1] Поле1 = значение Поле2 = значение ПолеN = значение [имя секции2] Поле1 = значение Поле2 = значение ПолеN = значение [имя секцииN] Поле1 = значение Поле2 = значение ПолеN = значениеПри этом следует учитывать:
./backends
для файла .backend
;
./diagnostictools
для файла .diagnostictool
(или .diag
).
.diagnostictool
имеет имя вида <имя диагностического инструмента>.diagnostictool
.
/usr/share/alterator/diagnostictools/
. В противном случае, рекомендуется использовать каталог /etc/alterator/diagnostictools/
.
.diagnostictool
содержит информацию для GUI Он включает секцию [Alterator Entry] и секции, описывающие варианты тестирования.
.backend
имеет имя вида <имя диагностического инструмента>.ru.basealt.alterator.backend
.
/usr/share/alterator/backends/system
— если объект необходимо создать на системной шине;
/usr/share/alterator/backends/user
— если объект необходимо создать на сессионной шине;
/etc/alterator/backends/system/
— если объект необходимо создать на системной шине;
/etc/alterator/backends/user/
— если объект необходимо создать на сессионной шине;
.diagnostictool
(cat <путь к файлу>
);
<путь к исполняемому файлу> {param}
;
<путь к исполняемому файлу> -l
;
<путь к исполняемому файлу> -R
;
/usr/bin/diag-example
;
/usr/share/alterator/backends/diag-example.backend
;
/usr/share/alterator/diagnostictools/diag-example.diag
.
/usr/bin/diag-example
:
#!/bin/bash # # Copyright (c) 2024 Evgeny Sinelnikov <sin@altlinux.org> # # Example diagnostic tool # # SPDX-License-Identifier: GPL-2.0-or-later # set -euo pipefail . shell-getopt PROG="${0##*/}" PROG_VERSION='0.0.1' cmd="run" global_retval=0 print_version() { cat <<EOF $PROG version $PROG_VERSION Written by Evgeny Sinelnikov <sin@altlinux.org> Copyright (C) 2024 Evgeny Sinelnikov <sin@altlinux.org> This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. EOF exit } show_usage() { cat <<EOF $PROG - example diagnostic tool. Usage: $PROG [options] [<diagnostic-task>] Options: -l, --list list of diagnostic tasks; -V, --version print program version and exit; -h, --help show this text and exit. Report bugs to https://bugzilla.altlinux.org/ EOF exit } TEMP=$(getopt -n "$PROG" -o "l,V,h" -l "list,version,help" -- "$@") || show_usage eval set -- "$TEMP" while :; do case "$1" in --) shift; break ;; -l|--list) cmd="list"; ;; -V|--version) print_version ;; -h|--help) show_usage ;; *) fatal "Unrecognized option: $1" ;; esac shift done task_list="$*" task_show() { local func="$1" echo "$func" } task_run() { local retval=126 local func="$1" if test -n "$task_list"; then echo "$task_list" | tr ' ' '\n' | grep -q "^$func\$" || return 0 fi $func && retval=0 || retval="$?" test $retval = 0 || global_retval=1 return $retval } task() { local task="$1" case "$cmd" in list) task_show "$task" ;; run) task_run "$task" && echo "[DONE]: $task" || echo "[FAIL]: $task" ;; *) fatal "Unrecognized command: $cmd" ;; esac } is_gigabyte() { /usr/sbin/dmidecode -s baseboard-manufacturer | grep -q "^Gigabyte Technology" } is_std_def_kernel_running() { uname -r | grep -q '^[[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+-std-def-' } task is_gigabyte task is_std_def_kernel_running exit "$global_retval"
/usr/share/alterator/backends/diag-example.backend
:
[Alterator Entry] Type = Backend Module = executor Name = diag_example Interface = diag1 [Info] execute = cat /usr/share/alterator/diagnostictools/diag-example.diag stdout_bytes = enabled stdout_byte_limit = 200000 action_id = Info [Run] execute = diag-example {param} stdout_signal_name = diag_example_stdout_signal stderr_signal_name = diag_example_stderr_signal thread_limit = 1 action_id = Run [List] execute = diag-example -l stdout_strings = enabled stdout_strings_limit = 200000 action_id = List
/usr/share/alterator/diagnostictools/diag-example.diag
:
[Alterator Entry] Type = diag Name = Example DisplayName = Diagnostic tool example DisplayName[ru] = Пример инструмента диагностики Comment = Diagnostic tool comment Comment[ru] = Комментарий к диагностическому инструменту Icon = system-run [is_gigabyte] DisplayName = Is motherboard manufacturer — Gigabyte? DisplayName[ru] = Производитель материнской платы — Gigabyte?
Примечание
# systemctl restart alterator-manager.service
Примечание