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

Для использования samba-tool при работе с контроллерами домена «Эллес» требуется аутентификация.

См. описание поддерживаемых samba-tool опций для указания данных для аутентификации в разделе «Параметры аутентификации».

Основной способ аутентификации

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

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

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

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

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

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

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

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

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

Например:

kinit Administrator@ELLES.INNO.TECH
samba-tool user list

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

Например:

kinit Administrator@ELLES.INNO.TECH
samba-tool user list \
  -H ldap://dc01.elles.inno.tech

Запуск с правами суперпользователя (root/sudo)

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

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

Дополнительные способы аутентификации

Помимо аутентификации по умолчанию через Kerberos samba-tool поддерживает несколько альтернативных методов аутентификации.

Аутентификация с использованием доменного имени и пароля (-U)

Указание имени пользователя и пароля в командной строке:

samba-tool user list \
  -H ldap://dc01.elles.inno.tech \
  -U "ELLES\\Administrator%Password123!"
Пароль передается в открытом виде в командной строке, что небезопасно.

Если пароль не указан, samba-tool запросит его интерактивно:

samba-tool user list \
  -H ldap://dc01.elles.inno.tech \
  -U "ELLES\\Administrator"
Password for [ELLES\Administrator]:

Аутентификация через файл с учетными данными (-A)

Создайте файл authfile.txt с содержимым:

username=Administrator
password=Password123!

Запустите команду:

samba-tool user list \
  -H ldap://dc01.elles.inno.tech \
  -A /path/to/authfile.txt
Установите строгие права доступа к файлу: chmod 600 /path/to/authfile.txt && chown root:root /path/to/authfile.txt.

Аутентификация с использованием keytab-файла (--use-keytab)

Для аутентификации без пароля используйте keytab-файл, содержащий ключи доменной учетной записи.

Предположим, keytab-файл /etc/krb5.keytab.user1 содержит ключи для user1@ELLES.INNO.TECH:

samba-tool user list \
  -H ldap://dc01.elles.inno.tech \
  -U "user1@ELLES.INNO.TECH" \
  --use-keytab=/etc/krb5.keytab.user1

В этом случае:

  • обязательно укажите имя пользователя с помощью опции -U|--username;

  • не используйте --password или %password в -U|--username;

  • не используйте --use-kerberos=required;

  • убедитесь, что keytab-файл содержит актуальный KVNO (версию ключа) — обновляйте его после смены пароля через samba-tool domain exportkeytab.

Аутентификация через кэш Kerberos (--use-krb5-ccache)

Если необходимо использовать конкретный кэш билетов (например, FILE:/tmp/krb5cc_1000):

samba-tool user list \
  -H ldap://dc01.elles.inno.tech \
  --use-krb5-ccache=FILE:/tmp/krb5cc_1000

Эта опция автоматически включает --use-kerberos=required.

Может быть полезна при работе в скриптах с предварительно подготовленным кэшем (например, после kinit -c /tmp/krb5cc_1000).

Аутентификация с использованием машинной учетной записи (-P)

Используйте пароль компьютерной учетной записи, хранящийся в secrets.tdb:

samba-tool user list \
  -H ldap://dc01.elles.inno.tech \
  -P

Данный способ аутентификации работает только на контроллере домена, где samba-tool имеет доступ к secrets.tdb.

Аутентификация без пароля (-N)

Используется для доступа к службам, не требующим аутентификации. При попытке использования с samba-tool приводит к ошибке.

Аутентификация через --simple-bind-dn

Простая аутентификация LDAP (без Kerberos) не поддерживается в режиме контроллера домена. Используется только для совместимости с LDAP-клиентами.

При попытке использования на контроллере домена «Эллес» возвращается ошибка LDAP error 8 LDAP_STRONG_AUTH_REQUIRED - <BindSimple: Transport encryption required>.

Аутентификация через файл с паролем (PASSWD_FILE)

Установите переменную окружения PASSWD_FILE:

export PASSWD_FILE=/path/to/password.txt
samba-tool user list \
  -H ldap://dc01.elles.inno.tech \
  -U "ELLES\\Administrator"

Файл /path/to/password.txt должен содержать только пароль (без лишних символов).

Данный способ безопаснее, чем -U …​%password, но требует защиты файла (chmod 600).

Аутентификация через переменную окружения PASSWD

Установите переменную окружения PASSWD:

export PASSWD="Password123!"
samba-tool user list \
  -H ldap://dc01.elles.inno.tech \
  -U "ELLES\\Administrator"
Пароль виден в env и ps aux.

Приоритет применения

Приоритет Условие Результат Применение

1

-U username%password или --password=…​

Используется пароль, keytab и Kerberos-билет игнорируются

Ручной ввод пароля в командной строке (небезопасно)

2

--use-kerberos=required

Используется Kerberos-билет из ccache (kinit), keytab игнорируется

Принудительная аутентификация через ccache (например, после kinit)

3

-U username + keytab доступен

Используется keytab-файл (без ввода пароля)

Автоматизированная аутентификация с keytab (рекомендуется для скриптов)

4

-U username + keytab недоступен

Запрашивается пароль интерактивно в терминале

Ручной ввод пароля без передачи в командной строке

5

Без -U и без keytab

Используется Kerberos-билет по умолчанию (--use-kerberos=required)

Стандартное поведение при входе под доменной УЗ (автоматический билет)

6

-P (machine-pass)

Используется пароль машинной учетной записи из secrets.tdb

Только на контроллере домена, для системных задач

7

-A AUTHFILE

Используется файл с учетными данными (username/password)

Безопасная аутентификация через файл (с ограничением прав)

8

--use-krb5-ccache=CCACHE

Используется указанный ccache, автоматически включает --use-kerberos=required

Альтернативный ccache (например, для тестирования)

9

--simple-bind-dn=DN + --password

Используется простая LDAP-аутентификация (не рекомендуется)

Совместимость с legacy-системами (небезопасно)

10

-N (no-pass)

Не запрашивает пароль, используется анонимная аутентификация

Доступ к публичным атрибутам LDAP (редко применимо)

11

Без параметров

Используются переменные окружения (USER, LOGNAME, PASSWD_FILE, PASSWD) и smb.conf

Автоматическое определение из окружения (ненадежно)