Проверка конфигурации Эллес

В состав пакета 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 }'