Проверка конфигурации Эллес
В состав пакета inno-samba входит утилита testparm (полный путь к утилите после установки — /app/inno-samba/bin/testparm), позволяющая проверять корректность конфигурационного файла smb.conf (полный путь к файлу после установки — /app/inno-samba/etc/smb.conf) с точки зрения синтаксиса и согласованности.
Также для проверки конфигурации может использоваться подкоманда samba-tool testparm (полный путь к samba-tool после установки — /app/inno-samba/bin/samba-tool).
На контроллере домена рекомендуется использовать подкоманду samba-tool testparm; в остальных случаях — утилиту testparm. Это связано с тем, что при запуске на контроллере домена утилита выводит значения по умолчанию, которые фактически отсутствуют.
Пример вывода samba-tool testparm на сервере, работающем в роли контроллера домена:
/app/inno-samba/bin/samba-tool testparm INFO 2023-10-10 13:04:10,471 pid:30380 /app/inno-samba/lib/python3.7/site-packages/samba/netcmd/testparm.py #96: Loaded smb config files from /app/inno-samba/etc/smb.conf INFO 2023-10-10 13:04:10,478 pid:30380 /app/inno-samba/lib/python3.7/site-packages/samba/netcmd/testparm.py #97: Loaded services file OK. Press enter to see a dump of your service definitions # Global parameters [global] bind interfaces only = Yes dns forwarder = 10.0.9.100 dns update command = /app/inno-samba/sbin/samba_dnsupdate --use-samba-tool interfaces = lo eth0 netbios name = DC1 realm = SAMDOM.EXAMPLE.COM server role = active directory domain controller template shell = /bin/bash workgroup = SAMDOM idmap_ldb:use rfc2307 = yes ...
Пример вывода утилиты testparm на сервере, работающем в роли контроллера домена:
/app/inno-samba/bin/testparm -s Load smb config files from /app/inno-samba/etc/smb.conf Loaded services file OK. Weak crypto is allowed by GnuTLS (e.g. NTLM as a compatibility fallback) Server role: ROLE_ACTIVE_DIRECTORY_DC # Global parameters [global] bind interfaces only = Yes dns forwarder = 10.0.9.100 dns update command = /app/inno-samba/sbin/samba_dnsupdate --use-samba-tool interfaces = lo eth0 passdb backend = samba_dsdb realm = SAMDOM.EXAMPLE.COM server role = active directory domain controller template shell = /bin/bash workgroup = SAMDOM rpc_server:tcpip = no rpc_daemon:spoolssd = embedded rpc_server:spoolss = embedded rpc_server:winreg = embedded rpc_server:ntsvcs = embedded rpc_server:eventlog = embedded rpc_server:srvsvc = embedded rpc_server:svcctl = embedded rpc_server:default = external winbindd:use external pipes = true idmap_ldb:use rfc2307 = yes idmap config * : backend = tdb map archive = No vfs objects = dfs_samba4 acl_xattr ...
Общие сведения
Утилита и команда testparm выполняют тестовую загрузку конфигурации сервисов Эллес из smb.conf и возвращают предупреждения и сообщения об ошибках, обнаруженные при разборе содержимого файла.
Если testparm не возвращает никаких ошибок, это означает, что процессы сервисов Эллес смогут корректно обработать значения, заданные в smb.conf. Однако следует учитывать, что это не является гарантией того, что сервисы, для которых заданы настройки в файле smb.conf, будут доступны или будут работать именно так, как ожидается.
В случае обнаружения ошибки testparm возвращает код 1; в противном случае возвращается 0. Это позволяет вызывать утилиту или команду из shell-скриптов для проверки корректности заполнения smb.conf.
Формат вызова
Общий формат вызова утилиты testparm:
testparm [OPTION...] <config-file> [host-name] [host-ip]
В общем случае утилита выполняет проверку конфигурационного файла, созданного по пути по умолчанию (путь при использовании inno-samba — /app/inno-samba/etc/smb.conf). Для проверки файла по пути, отличному от пути по умолчанию, необходимо явно передать его при вызове утилиты.
Если при вызове утилиты в командной строке передаются имя и IP-адрес хоста (должны быть переданы оба параметра одновременно), testparm проверяет наличие у указанного хоста доступа к сервисам, для которых заданы настройки в smb.conf.
Общий формат вызова команды testparm:
samba-tool testparm [options]
Конфигурационный файл для разбора может быть явно передан с помощью опции -s|--configfile.
Параметры
Параметры вызова утилиты testparm:
-
-l|--skip-logic-checks— пропуск проверок параметров в разделе[global]; -
--section-name=SECTIONNAME— ограничение области проверки указанным разделом конфигурации; -
--parameter-name=PARAMETERNAME— ограничение области проверки указанным конфигурационным параметром; если не передано значение--section-name, по умолчанию область поиска параметра ограничивается разделом[global]; также доступно сужение области проверки до отдельной опции конфигурационного параметра (должна быть отделена от имени параметра двоеточием); -
-s|--suppress-prompt— отключение запроса у пользователя подтверждения вывода содержимого smb.conf; -
-v|--verbose— вывод не только конфигурационных параметров, для которых явно переопределены значения в файле smb.conf, но также и всех остальных параметров сервисов, для которых используются значения по умолчанию; -
--show-all-parameters— вывод всех доступных параметров сервисов Эллес с указанием типа ожидаемого значения и списка возможных значений; -
--option=NAME=VALUE— задание значения для указанной опции из командной строки; переданное значение переопределяет значение по умолчанию, заданное при компиляции, и существующее значение из конфигурационного файла; -
-d DEBUGLEVEL|--debuglevel=DEBUGLEVEL— уровень логирования (целое число от 1 до 10); значение по умолчанию —1(см. подробнее в разделе «Логирование Эллес»).
Параметры вызова samba-tool testparm:
-
-s FILE|--configfile=FILE— путь к файлу smb.conf для разбора; -
--section-name=SECTIONNAME— ограничение области проверки указанным разделом; -
--parameter-name=PARAMETERNAME— ограничение области проверки указанным параметром; если не передано значение--section-name, по умолчанию область поиска параметра ограничивается областью[global]; также доступно сужение области проверки до отдельной опции параметра (должна быть отделена от имени параметра двоеточием); -
--suppress-prompt` — отключение запроса подтверждения вывода параметров сервисов;
-
-v|--verbose— вывод не только параметров, для которых явно переопределены значения в файле smb.conf, но также и всех остальных параметров сервисов, для которых используются значения по умолчанию; -
--client-name=CLIENTNAMEи--client-ip=CLIENTIP(должны задаваться одновременно) — DNS-имя и IP-адрес клиента для проверки доступа к сервисам Эллес поhosts allow; -
--option=NAME=VALUE— задание значения для указанной опции из командной строки; переданное значение переопределяет значение по умолчанию, заданное при компиляции, и существующее значение из конфигурационного файла; -
--realm=REAM— имя области безопасности Kerberos. -
-d DEBUGLEVEL|--debuglevel=DEBUGLEVEL— уровень логирования (целое число от 1 до 10); значение по умолчанию —1(см. подробнее в разделе «Логирование Эллес»).
Примеры
Пример проверки указанного конфигурационного файла с подавлением запроса подтверждения от пользователя:
/app/inno-samba/bin/testparm -s /app/inno-samba/etc/smb.conf
Пример сужения области проверки до определенного раздела:
/app/inno-samba/bin/testparm -s --section-name=netlogon
Пример сужения области проверки до определенного параметра:
/app/inno-samba/bin/testparm -s --section-name=sysvol --parameter-name='directory mask'
Получение полной конфигурации, включая все значения по умолчанию:
/app/inno-samba/bin/testparm -sv
/app/inno-samba/bin/samba-tool testparm -v --suppress-prompt
Просмотр возможных значений для параметра:
/app/inno-samba/bin/testparm --show-all-parameters | grep 'server role'
Примеры использования утилиты в скриптах:
-
получение текущего значения параметра:
/app/inno-samba/bin/samba-tool testparm --parameter-name="server role" 2>/dev/null | tail -1
-
получение пути к sysVol:
/app/inno-samba/bin/testparm -s -v 2>/dev/null | grep sysvol | grep path | grep -v scripts | tail -1 | awk '{ print $NF }'