Работа с samba-tool

Основным инструментом администрирования продукта «Служба каталогов "Эллес"» с помощью интерфейса командной строки (CLI) является утилита samba-tool (/app/inno-samba/bin/samba-tool).

Особенности аутентификации при выполнении команд с помощью samba-tool

Для большинства команд, предусматривающих обращение к базе данных каталога, запрещен прямой доступ к экземпляру базы данных на отдельном контроллере домена Эллес с правами суперпользователя (root/sudo). Вместо этого выполняется обращение к серверу LDAP c использованием аутентификации Kerberos.

С этой целью при вызове таких команд по умолчанию передается набор ключей:

  • -H ldap://<hostname> — URL сервера LDAP, где hostname — имя хоста контроллера домена, на котором происходит вызов команды;

  • --use-kerberos=required — указание на обязательное использование аутентификации Kerberos.

Таким образом, для успешного выполнения команды:

  • либо пользователь должен работать на сервере под доменной учетной записью с достаточными для выполнения запрашиваемой операции правами;

    При входе в систему с доменной учетной записью пользователю автоматически выдается билет Kerberos с определенным сроком действия, который в дальнейшем используется при вызове команд с помощью samba-tool.

  • либо предварительно требуется запросить для пользователя билет Kerberos с помощью стандартной команды kinit.

    В этом случае команда должна выполняться от имени того пользователя, для которого запрашивался билет Kerberos. По истечении установленного срока действия билета он должен быть запрошен повторно.

При необходимости выполнить операцию на удаленном контроллере домена требуется явно указать URL сервера LDAP в значении ключа -H|--URL.

Также доступны другие способы аутентификации, предусматривающие явное указание доменной учетной записи пользователя с помощью ключа -U|--username вместе с паролем в ключе --password или с последующим вводом пароля по запросу в терминале и т. д. (см. описание поддерживаемых samba-tool опций в разделе «Параметры аутентификации» ниже). Однако по соображениям безопасности рекомендуется во всех случаях использовать аутентификацию Kerberos.

Если для запуска команды требуются права суперпользователя (root/sudo), в ее описании в документации содержится явное указание на это в виде примечания в подразделе с описанием синтаксиса вызова.

При попытке выполнить от имени пользователя root или другого локального пользователя с повышением привилегий с помощью sudo команду, для которой это запрещено, samba-tool возвращает сообщение о невозможности установить соединение с сервером LDAP, работающим на хосте, где запрашивается команда.

Пример сообщения:

administrator@dc01:~$ sudo samba-tool user list
Failed to bind - LDAP client internal error: NT_STATUS_UNSUCCESSFUL
Failed to connect to 'ldap://dc01' with backend 'ldap': LDAP client internal error: NT_STATUS_UNSUCCESSFUL
...

Группы операций

Доступны следующие группы операций:

Общий синтаксис samba-tool

Общий синтаксис вызова samba-tool:

samba-tool <subcommand> [options]

Общие параметры

При вызове могут передаваться следующие общие параметры:

  • -h|--help — вывод подробной информации о команде и доступных подкомандах;

  • -V|--version — версия пакета inno-samba и Samba;

    Например:

    /app/inno-samba/bin/samba-tool -V
    inno-samba 1.3.2 (Samba 4.20.0pre1-GIT-911c9a)
  • -d DEBUGLEVEL|--debuglevel=DEBUGLEVEL — уровень логирования (целое число от 0 до 10).

    Значение по умолчанию — 1.

    Чем больше значение, тем больший объем информации о работе сервера сохраняется в лог-файлах. При значении 0 фиксируются только критичные ошибки и значимые предупреждения. Оптимальным для повседневной эксплуатации является уровень 1, который предусматривает фиксацию небольшого объема информации о выполняемых операциях.

    Уровни выше 1 предусматривают формирование значительного объема данных. Использовать их следует только при возникновении проблем. Уровни выше 3 предназначены для использования разработчиками. Они предусматривают формирование значительного объема данных, большая часть которого не представляет интереса с точки зрения задач повседневной эксплуатации.

    Переданное в параметре значение переопределяет значение аналогичного параметра в файле smb.conf. См. подробнее в разделе «Логирование Эллес».
  • -s FILE|--configfile=FILE — путь к конфигурационному файлу smb.conf (если отличается от пути по умолчанию: /app/inno-samba/etc/smb.conf);

  • --option="OPTION=NEWVALUE" — переопределение параметра в конфигурационном файле smb.conf;

  • --realm=REALM — задание области безопасности для домена;

    Переданное в параметре значение переопределяет значение аналогичного параметра в файле /app/inno-samba/etc/smb.conf.
  • -H URL|--URL=URL — URL сервера LDAP.

Параметры аутентификации

При вызове могут передаваться следующие параметры аутентификации:

  • --simple-bind-dn=DN — уникальное имя для использования samba-tool при простом удаленном подключении;

    Использовать данную опцию не рекомендуется, так как Эллес поддерживает более безопасные способы аутентификации (NTLM, Kerberos).
  • --password — пароль для передачи в командной строке;

    Не следует включать пароли в скрипты или передавать полученные от пользователя данные в качестве аргументов в командной строке. Из соображений безопасности рекомендуется задавать команды таким образом, чтобы инструменты Эллес самостоятельно запрашивали пароль, когда это требуется, либо получить билет Kerberos с помощью kinit.

    Если значение --password не задано, команда проверяет значение переменной окружения PASSWD c сопутствующей переменной PASSWD_FD, в которой должен содержаться дескриптора открытого файла.

    Если переменная окружения не задана, команда проверяет файл, путь к которому задан в PASSWD_FILE. В файле должен содержаться только пароль. При использовании файла следует ограничить к нему доступ с помощью разрешений.

  • -U [DOMAIN\]USERNAME[%PASSWORD]|--user=[DOMAIN\]USERNAME[%PASSWORD] — имя пользователя либо имя пользователя и пароль;

    Если пароль (%PASSWORD) не задан, пользователю будет предложено ввести его. Сначала будет проверяться переменная окружения USER (в которой допускается указывать пароль после символа %), после чего — переменная LOGNAME (которая не может содержать пароль). Если любая из этих двух переменных задана, то используется заданное в ней значение. Если переменные отсутствуют, может использоваться имя пользователя из кэша учетных данных Kerberos Credentials.

    Третий вариант — использовать текстовый файл с учетными данными (имя пользователя и пароль). К нему обычно прибегают при использовании скриптов в тех случаях, когда учетные данные не передаются через командную строку или переменные окружения. В этом случае следует ограничить доступ к файлу с помощью разрешений.

    Не следует включать пароли в скрипты или передавать полученные от пользователя данные в качестве аргументов в командной строке. Из соображений безопасности рекомендуется задавать команды таким образом, чтобы инструменты Эллес самостоятельно запрашивали пароль, когда это требуется, либо получить билет Kerberos с помощью kinit.

  • -W WORKGROUP|--workgroup=WORKGROUP — домен, к которому относится переданное имя пользователя;

    Заданное значение переопределяет домен по умолчанию, указанный в файле smb.conf. Если переданное имя домена совпадает с NetBIOS-именем сервера, вход осуществляется с использованием локального диспетчера безопасности учетных записей (SAM) сервера (в отличие от доменного SAM).

    Переданное в параметре значение переопределяет значение аналогичного параметра в файле smb.conf.
  • -P|--machine-pass — использовать сохраненный пароль учетной записи компьютера;

  • -N|--no-pass — указывает на отсутствие необходимости запрашивать у пользователя пароль;

    Данная опция может использоваться при получении доступа к службе, которая не требует ввода пароля.

    По умолчанию пароль запрашивается во всех случаях, когда он не передается в командной строке и не задан данный параметр.

    Если пароль передается в командной строке и одновременно задан данный параметр, введенный пароль игнорируется и не используется.

  • -A AUTHFILE|--authentication-file=AUTHFILE — файл с реквизитами для аутентификации;

  • --use-kerberos=desired|required|off — необходимость аутентификации с использованием Kerberos;

    Для аутентификации с помощью Kerberos при подключении к службе вместо IP-адресов необходимо использовать DNS-имена.

    Переданное в параметре значение переопределяет значение аналогичного параметра в файле smb.conf.
  • --use-krb5-ccache=CCACHE — расположение кэша учетных данных для аутентификации с использованием Kerberos;

    Задание данного параметра означает, что --use-kerberos=required.

  • --ipaddress=IPADDRESS — IP-адрес сервера.

В подкомандах, предусматривающих обращение к двум серверам (например, сравнение БД LDAP на контроллерах домена), для аутентификации на втором сервере могут использоваться параметры --simple-bind-dn2, --username2, --password2, --workgroup2, --no-pass2 и --use-kerberos2.