Compare commits

..

2 Commits

Author SHA1 Message Date
56188e2afa
Foxid nothing to grep bug 2023-02-14 14:05:46 +04:00
baf89ab40d
Added resolv.conf search multidomain support 2023-02-13 20:31:22 +04:00
2 changed files with 25 additions and 177 deletions

View File

@ -376,19 +376,23 @@ check_resolv_conf()
compare_resolv_conf_with_default_realm()
{
echo "SEARCH_DOMAIN = '$SEARCH_DOMAIN'"
echo "SEARCH_DOMAINS = '$SEARCH_DOMAINS'"
echo "KRB5_DEFAULT_REALM = '$KRB5_DEFAULT_REALM'"
echo
local domain=
local realm=
domain=$(echo "$SEARCH_DOMAIN" | tr '[:upper:]' '[:lower:]')
local retval=2
domains=$(echo "$SEARCH_DOMAINS" | tr '[:upper:]' '[:lower:]')
realm=$(echo "$KRB5_DEFAULT_REALM" | tr '[:upper:]' '[:lower:]')
if test -z "$realm"; then
return 2
fi
test -n "$domain" || return 2
test "$domain" = "$realm" || return 2
test -z "$realm" && return $retval
test -z "$domains" && return $retval
for domain in $domains; do
test "$domain" = "$realm" && retval=0
done
return $retval
}
check_smb_conf()
@ -667,9 +671,11 @@ init_vars()
HOSTNAME_SHORT=$(hostname -s)
HOSTNAME_FQDN=$(hostname -f)
NAMESERVER1=$(grep "^nameserver\s\+" /etc/resolv.conf | sed -e 's/^nameserver\s\+//' -e 's/\s/\n/' | head -1)
NAMESERVER2=$(grep "^nameserver\s\+" /etc/resolv.conf | sed -e 's/^nameserver\s\+//' -e 's/\s/\n/' | head -2 | tail -1)
NAMESERVER3=$(grep "^nameserver\s\+" /etc/resolv.conf | sed -e 's/^nameserver\s\+//' -e 's/\s/\n/' | head -3 | tail -1)
local nameserver_lines=
nameserver_lines=$(grep "^nameserver\s\+" /etc/resolv.conf || true)
NAMESERVER1=$(echo "$nameserver_lines" | sed -e 's/^nameserver\s\+//' -e 's/\s/\n/' | head -1)
NAMESERVER2=$(echo "$nameserver_lines" | sed -e 's/^nameserver\s\+//' -e 's/\s/\n/' | head -2 | tail -1)
NAMESERVER3=$(echo "$nameserver_lines" | sed -e 's/^nameserver\s\+//' -e 's/\s/\n/' | head -3 | tail -1)
SMB_REALM=
SMB_NETBIOS_NAME=
@ -678,22 +684,26 @@ init_vars()
SMB_NETBIOS_NAME=$(testparm -l -v -s 2>/dev/null | grep "^\s*netbios name\s*=" | sed -e 's/^\s*netbios name\s*=\s*//' -e 's/\s*$//')
fi
SEARCH_DOMAIN=
SEARCH_DOMAINS=
local search_line=
if test -f /etc/resolv.conf; then
SEARCH_DOMAIN=$(grep "^search\s\+" /etc/resolv.conf || true | sed -e 's/^search\s\+//' -e 's/\s/\n/' | head -1 )
search_line=$(grep "^search\s\+" /etc/resolv.conf || true)
SEARCH_DOMAINS=$(echo $search_line | sed -e 's/^search\s\+//' -e 's/\s\+$//' )
fi
KRB5_DEFAULT_REALM=
local krb5_default_realm_line=
if test -e /etc/krb5.conf; then
KRB5_DEFAULT_REALM=$(grep "^\s*default_realm\s\+" /etc/krb5.conf || true | sed -e 's/^\s*default_realm\s*=\s*//' -e 's/\s*$//')
krb5_default_realm_line=$(grep "^\s*default_realm\s\+" /etc/krb5.conf || true)
KRB5_DEFAULT_REALM=$( echo "$krb5_default_realm_line" | sed -e 's/^\s*default_realm\s*=\s*//' -e 's/\s*$//')
fi
domain=$(echo "$SEARCH_DOMAIN" | tr '[:upper:]' '[:lower:]')
realm=$(echo "$KRB5_DEFAULT_REALM" | tr '[:upper:]' '[:lower:]')
DOMAIN_DOMAIN="$domain"
if test -n "$realm"; then
DOMAIN_DOMAIN="$realm"
else
DOMAIN_DOMAIN=$(echo $SEARCH_DOMAINS | cut -d ' ' -f 1 | tr '[:upper:]' '[:lower:]')
fi
SYSTEM_AUTH="$(/usr/sbin/control system-auth)"

View File

@ -1,162 +0,0 @@
'\"
.TH "DOMAIN_DIAG" "1" "February 2023" "domain-diag @VERSION@" "Manual DOMAIN_DIAG"
.
.SH NAME
.B domain-diag
\- это инструмент для диагностики состояния машины в домене.
.
.SH SYNOPSYS
domain-diag [options] [<check/test-function-name>]
.
.SH DESCRIPTION
.B domain-diag
содержит набор проверок и тестов, по результатам которых можно определить корректность настроек машина для работы в домене, а также убедиться, что доступны все необходимые ресурсы домена.
Утилита имеет модульную структуру. Модули можно вызывать как все вместе, так и по отдельности. Есть опция записи результата в лог-файл. Для выполнения некоторых проверок требуется запуск с правами суперпользователя (без прав суперпользователя такие проверки и тесты помечаются статусом SKIP). Также для корректной работы необходимо получить Kerberos билет доменного пользователя.
Результаты работы утилиты различаются в зависимости от того, является машина членом домена или нет. Членство в домене определяется по настройкам PAM стэка (control system-auth). Машина считается членом домена,если system-auth любое значение, кроме local и unknown.
.B
Сценарии применения
Утилита выполняется с правами доменного пользователя (убедитесь, что Kerberos билет получен).
Утилита выполняется с правами суперпользователя (root). Необходимо получить Kerberos билет вручную с помощью kinit <имя пользователя домена>.
- Если машина не введена в домен, утилита всё равно сможет выполнить большинство проверок окружения и доступности ресурсов домена.
- Часть проверок отработает и без Kerberos билета.
.B
Результаты волнения проверок и тестов:
DONE - в случае успешного выполнения модуля.
SKIP - при выполнении программы не из-под рута некоторые проверки могут быть пропущены.
WARN - предупреждение, при не критических тестах в модуле.
FAIL - в случае существенного несоответствия, которое приводит к неработоспособности машины в домене.
.
.SS OPTIONS
.TP
\fB-h, --help\fR
Вызов справочной информации.
.TP
\fB-V, --version\fR
Отображение версии программы.
.TP
\fB-v, --verbose\fR
Подробный вывод результатов выполнения скриптов.
.TP
\fB-w, --logfile[=FILE]\fR
Подробный вывод логирования записываются в фаил по указанному пути. В случае, если путь не указан, то запись производится в файл ./domain-diag.log. В случае, если файл уже существует, то запись производится в файл с постфиксом.
.TP
\fB-f, --force\fR
Логи перезаписываются в фаил.
.TP
\fB-l, --list\fR
Список проверок и тестов.
.
.SH LIST OF CHECKS
.TP
.B check_hostnamectl
Отображает полную информацию о хосте и соответствующие настройки,
такие как - имя, система, версия ядра, архитектура,
если есть то информация о виртуализации.
.TP
.B test_hostname
Проверяет, является ли имя машины FQDN.
.TP
.B check_system_auth
Проверка наличия механизма переключения наборов PAM модулей для аутентификации. Отображение текущего состояния, а также вывод седержимого файла /etc/pam.d/system-auth.
.TP
.B test_domain_system_auth
Проверяет, используется ли набор PAM модулей для аутентификации, отличный от local. Подразумевается, что в таком случае машины находится в домене.
.TP
.B check_system_policy
Какой инструмент применяется для работы групповых политик, его расположение в системе и настройки.
.TP
.B test_gpupdate_system_policy
Проверка что настроено применения групповых политик через - gpupdate.
.TP
.B check_krb5_conf_exists
Проверка наличия krb5.conf, прав доступа к файлу, а так же вывод его контекста(содержимого).
.TP
.B check_krb5_conf_ccache
Вариант кеширования учётных записей(keyring, file, dir).
.TP
.B test_keyring_krb5_conf_ccache
Проверка установки способа кеширования в - keyring.
.TP
.B check_krb5_conf_kdc_lookup
Проверка включен/выключен ли поиск kerberos-имени домена через DNS, или вовсе отсутствует.
.TP
.B check_krb5_keytab_exists
Проверка наличия файла krb5.keytab с kerberos-парами принципал/ключ, и прав достура к нему.
.TP
.B check_keytab_credential_list
Вывод прав доступа и даты последного изменения файла кеша Керберос,
а котором хранятся принципалы и хеши пароля доменной учётной записи пользователя,
с которым ассоциирована та или иная служба в Linux(требуется запуск от root, иначе SKIP).
.TP
.B check_resolv_conf
Проверка указания домена(ов) для поиска, вывод содержимого resolv.conf.
.TP
.B compare_resolv_conf_with_default_realm
Сопоставление домена для поиска и домена указанного для Кербероса.
.TP
.B check_smb_conf
Проверка файла настроек конфигурации Самба.
.TP
.B compare_smb_realm_with_krb5_default_realm
Запрос домена указанного для Самбы и домена по умолчанию указанного для Кербероса.
.TP
.B test_smb_realm
Проверка соответствия домена указанного для Самбы и домена по умолчанию указанного для Кербероса.
.TP
.B test_domainname
Проверка вывода имени домена включенного в FQDN имя хоста.
.TP
.B check_time_synchronization
Проверка часового пояса, настройки синхронизации времени с сервером.
.TP
.B test_time_synchronization
Тест включена ли синхронизации времени.
.TP
.B check_nameservers
Проверка доступности всех контроллеров домена по имени
и ip-адресу(работает ли resolv.conf).
.TP
.B check_domain_controllers
Проверка наличия srv-записи, ip-адреса и верного указания FQDN для контроллера домена,
а так же ldap-запрос (зачем требуется?).
.TP
.B check_kerberos_and_ldap_srv_records
Проверка наличия srv-записи Керберос и LDAP для домена,
а так же ldap-запрос зачем требуется?).
.TP
.B compare_netbios_name
Сравнение префиксов имени машин в Самбе и указанного в /etc/hostname.
.TP
.B check_common_packages
Проверка наличия установленных основных пакетов и их версий
(alterator-auth, libnss-role, libkrb5 и libsmbclient).
.TP
.B check_group_policy_packages
Проверка наличия установленных основных пакетов и их версий
для управления групповыми политиками (local-policy и gpupdate).
.TP
.B check_sssd_ad_packages
Проверка наличия установленного пакета
и его версии для аутентификации (task-auth-ad-sssd).
.TP
.B check_sssd_winbind_packages
Что это? пакет для аутентификации в АД через что(sss?).
.TP
.
.SH REPORTING BUGS
.
.SH SEE ALSO
.