Администрирование пользователей

Для администрирования пользователей в домене Эллес с помощью утилиты samba-tool используется группа подкоманд user.

При выполнении операций с помощью группы подкоманд user рекомендуется указывать набор ключей -H (URI LDAP-сервера) и --use-kerberos=required.

В этом случае для успешного выполнения подкоманды:

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

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

Добавление пользователя

Для добавления учетной записи пользователя в домене Эллес используется следующий формат вызова:

samba-tool user add <username> [<password>] [options]

Переданное в команде значение <username> интерпретируется как имя учетной записи SAM (значение атрибута sAMaccountName). Оно должно быть уникальным.

Учетные записи могут служить для представления в домене как обычных пользователей, так и приложений. Также они являются субъектами безопасности, которым присваиваются идентификаторы безопасности (SID).

Учетная запись позволяет пользователю получать доступ к компьютеру после прохождения процедуры аутентификации. Для обеспечения максимального уровня безопасности каждый пользователь должен иметь уникальную учетную запись и пароль. Доступ к ресурсам домена предоставляется пользователю на основе разрешений и прав, выданных его учетной записи.

К учетной записи могут быть добавлены атрибуты Unix (в соответствии с RFC 2307). На отдельно взятой локальной машине поставщиком данных атрибутов является диспетчер службы имен (NSS). Явно заданные значения переопределяют значения, полученные от NSS. Для использования этих атрибутов для сопоставления UID/GID в конфигурации (smb.conf) должен быть задан параметр idmap_ldp:use rfc2307 = Yes.

Для обеспечения обратной совместимости также поддерживается команда samba-tool user create <username> [<password>] [options], которая является синонимом команды samba-tool user add.

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --must-change-at-next-login — включить принудительную смену пароля при первом входе в домен;

  • --random-password — формировать пароль случайным образом;

  • --smartcard-required — требовать наличие смарт-карты при входе в интерактивном режиме;

  • --use-username-as-cn — включить принудительное использование имени пользователя в качестве общего имени (CN);

  • --userou=USEROU — имя (DN) альтернативного расположения (без domainDN), в котором будет создан пользователь (вместо используемого по умолчанию CN=Users);

  • --surname=SURNAME — фамилия пользователя;

  • --given-name=GIVEN_NAME — имя пользователя;

  • --initials=INITIALS — инициалы пользователя;

  • --profile-path=PROFILE_PATH – путь к профилю пользователя;

  • --script-path=SCRIPT_PATH — путь к скрипту, задающему сценарий входа в систему для пользователя;

  • --home-drive=HOME_DRIVE — буква диска домашнего каталога для пользователя;

  • --home-directory=HOME_DIRECTORY — домашний каталог пользователя;

  • --job-title=JOB_TITLE — должность пользователя;

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

  • --company=COMPANY — компания, в которой работает пользователь;

  • --description=DESCRIPTION — информация о пользователе;

  • --mail-address=MAIL_ADDRESS — адрес электронной почты пользователя;

  • --internet-address=INTERNET_ADDRESS — URL домашней страницы пользователя;

  • --telephone-number=TELEPHONE_NUMBER — номер телефона пользователя;

  • --physical-delivery-office=PHYSICAL_DELIVERY_OFFICE — физический адрес офиса пользователя;

  • --rfc2307-from-nss — включение копирования атрибутов пользователя Unix из диспетчера службы имен (NSS); значение параметра переопределяется в случае явного задания числового идентификатора пользователя (UID), числового идентификатора основной группы пользователя (GID), информации о пользователе (GECOS) или интерпретатора команд, который должен запускаться при входе пользователя в систему (shell);

  • --nis-domain=NIS_DOMAIN — домен службы сетевой информации (NIS) для пользователя (Unix/RFC 2307);

  • --unix-home=UNIX_HOME — домашний каталог для пользователя (Unix/RFC 2307);

  • --uid=UID — имя пользователя (Unix/RFC 2307);

  • --uid-number=UID_NUMBER — уникальный числовой идентификатор пользователя (Unix/RFC 2307);

  • --gid-number=GID_NUMBER — числовой идентификатор основной группы пользователя (Unix/RFC 2307);

  • --gecos=GECOS — информация о пользователе в поле GECOS (Unix/RFC 2307);

  • --login-shell=LOGIN_SHELL — оболочка (shell), которая должна запускаться при входе в систему пользователя (Unix/RFC 2307).

Примеры

Пример добавления в домен нового пользователя с указанием удаленного LDAP-сервера и включением принудительной смены пароля:

samba-tool user add User1 passw0rd --given-name=Ivan --surname=Ivanov --must-change-at-next-login -H ldap://samba.samdom.example.com -U administrator

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

samba-tool user add User2 passw2rd --given-name=Anton --surname=Antonov --must-change-at-next-login

Пример добавления нового пользователя в подразделение OrgUnit:

samba-tool user add User3 passw3rd --userou='OU=OrgUnit'

Пример добавления нового пользователя с получением значений Unix-атрибутов UID, GID и shell из локального диспетчера сетевой службы (NSS) и заданием в качестве GEGOS значения 'some text':

samba-tool user add User4 passw4rd --rfc2307-from-nss --gecos 'some text'

Пример добавления новой учетной записи в домен с поддержкой расширенных атрибутов в соответствии с RFC 2307 (при задании --nis-domain остальные четыре параметра являются обязательными):

samba-tool user add User5 passw5rd --nis-domain=samdom --unix-home=/home/User5 --uid-number=10005 --login-shell=/bin/bash --gid-number=10000

Добавление атрибутов Unix/RFC 2307 для пользователя

Для добавления учетной записи в домене AD атрибутов Unix в соответствии с RFC 2307 используется следующий формат вызова:

samba-tool user addunixattrs <username> <uid-number> [options]

Переданное в команде значение <username> интерпретируется как имя учетной записи SAM (значение атрибута sAMaccountName).

Также должен быть передан уникальный числовой идентификатор пользователя в качестве значения для атрибута uidNumber.

Для использования этих атрибутов для сопоставления UID/GID в конфигурации (smb.conf) должен быть задан параметр idmap_ldp:use rfc2307 = Yes.

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --gid-number=GID_NUMBER — числовой идентификатор основной группы пользователя (Unix/RFC 2307);

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

  • --unix-home=UNIX_HOME — домашний каталог для пользователя (Unix/RFC 2307);

    Если параметр не передается, в качестве домашнего каталога для пользователя устанавливается каталог /home/DOMAIN/username.

  • --login-shell=LOGIN_SHELL — оболочка (shell), которая должна запускаться при входе в систему пользователя (Unix/RFC 2307);

    Если параметр не передается, в качестве оболочки для пользователя устанавливается значение /bin/sh.

  • --gecos=GECOS — информация о пользователе в поле GECOS (Unix/RFC 2307);

    Если значение не передается, в качестве значения для поля GECOS используется общее имя пользователя (CN).

  • --uid=UID — имя пользователя (Unix/RFC 2307).

Примеры

Пример добавления отдельного атрибута в соответствии с RFC 2307 учетной записи в домене:

samba-tool user addunixattrs User1 10001

В результате выполнения команды пользователю будет присвоен Unix ID 10001 (при условии, что он не занят). В качестве gidNumber будет установлено значение, заданное для группы Domain Users.

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

samba-tool user addunixattrs User2 10002 --gid-number=10001 --unix-home=/home/User2

Пример добавления списка атрибутов, включая значение для поля GECOS, в соответствии с RFC 2307 учетной записи в домене:

samba-tool user addunixattrs User3 10003 --gid-number=10001 --login-shell=/bin/false --gecos='User3 test'

Изменение атрибутов пользователя

Для изменения состава и значений атрибутов учетной записи в домене Эллес используется следующий формат вызова:

samba-tool user edit <username> [options]

В результате выполнения команды в системном текстовом редакторе или текстовом редакторе, переданном в качестве значения параметра --editor, открывается список атрибутов учетной записи. Редактирование и сохранение внесенных изменений выполняется средствами текстового редактора.

Переданное в команде значение <username> интерпретируется как имя учетной записи SAM (значение атрибута sAMaccountName).

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --editor=EDITOR — текстовый редактор, который следует использовать вместо редактора, заданного в системе по умолчанию, либо вместо vi, если в системе не задан редактор по умолчанию.

Примеры

Пример запуска редактирования атрибутов учетной записи в домене с указанием удаленного LDAP-сервера:

samba-tool user edit User1 -H ldap://samba.samdom.example.com -U administrator

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

samba-tool user edit User2

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

samba-tool user edit User3 --editor=nano

Удаление пользователя

Для удаления существующей учетной записи пользователя в домене Эллес используется следующий формат вызова:

samba-tool user delete <username> [options]

Переданное в команде значение <username> интерпретируется как имя учетной записи SAM (значение атрибута sAMaccountName).

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

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта.

Примеры

Пример удаления в домене пользователя с указанием удаленного LDAP-сервера (значение параметра -H):

samba-tool user delete User1 -H ldap://samba.samdom.example.com -U administrator

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

samba-tool user delete User2

Отключение пользователя

Для отключения учетной записи в домене Эллес используется следующий формат вызова:

samba-tool user disable (<username>|--filter <filter>) [options]

Переданное в команде значение <username> интерпретируется как имя учетной записи SAM (значение атрибута sAMaccountName). Также для задания имени пользователя может использоваться параметр --filter.

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

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --filter=FILTER — LDAP-фильтр для поиска объектов в AD.

Примеры

Пример отключения учетной записи с использованием LDAP-фильтра:

samba-tool user disable --filter=samaccountname=User

Включение пользователя

Для включения учетной записи в домене Эллес используется следующий формат вызова:

samba-tool user enable (<username>|--filter <filter>) [options]

Переданное в команде значение <username> интерпретируется как имя учетной записи SAM (значение атрибута sAMaccountName). Также для задания имени пользователя может использоваться параметр --filter.

Учетная запись может быть отключена, например, по следующим причинам:

  • достигнуто максимальное количество попыток входа, установленное для учетной записи политикой;

  • учетная запись отключена администратором;

  • истек период действия учетной записи.

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

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --filter=FILTER — LDAP-фильтр для поиска объектов в AD.

Примеры

Пример включения учетной записи с указанием удаленного LDAP-сервера:

samba-tool user enable User1 --URL=ldap://samba.samdom.example.com

Пример включения учетной записи в домене на локальном сервере:

samba-tool user enable User2

Пример включения учетной записи в домене на локальном сервере с указанием имени пользователя с помощью параметра --filter=samaccountname:

samba-tool user enable --filter=samaccountname=User3

Получение списка всех пользователей

Для получения полного списка учетных записей в домене Эллес используется следующий формат вызова:

samba-tool user list [options]

По умолчанию выводится список имен учетных записей SAM (sAMAccountName).

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --full-dn — выводить в списке вместо имен учетных записей SAM (sAMAccountName) уникальные составные имена (Distinguished Name, DN);

  • -b BASE_DN|--base-dn=BASE_DN — выводить в списке только пользователей с указанным базовым уникальным именем (DN);

  • --hide-expired — не выводить в списке учетные записи с истекшим периодом действия;

  • --hide-disabled — не выводить в списке отключенные учетные записи.

Примеры

Пример получения списка имен учетных записей SAM:

samba-tool user list

Пример получения списка уникальных составных имен пользователей (DN):

samba-tool user list --full-dn

Задание основной группы для пользователя

Для задания основной группы для учетной записи в домене Эллес используется следующий формат вызова:

samba-tool user setprimarygroup <username> <primarygroupname> [options]

Переданные в команде значения <username> и <primarygroupname> интерпретируется как имя учетной записи и имя группы SAM (значение атрибута sAMaccountName).

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта.

Примеры

Пример задания основной группы для учетной записи на удаленном LDAP-сервере:

samba-tool user setprimarygroup User1 newPrimaryGroup ---URL=ldap://samba.samdom.example.com -U administrator

Получение списка групп пользователя

Для получения списка групп, членом которых является учетная запись пользователя в домене Эллес, используется следующий формат вызова:

samba-tool user getgroups <username> [options]

Переданное в команде значение <username> интерпретируется как имя учетной записи SAM (значение атрибута sAMaccountName).

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --full-dn — выводить в списке вместо имен групп SAM (sAMAccountName) их полные уникальные имена (Distinguished Name, DN).

Примеры

Пример получения списка уникальных составных имен (DN) групп пользователя:

samba-tool user getgroups User1 --full-dn

Получение атрибутов пользователя

Для получения атрибутов учетной записи в домене Эллес используется следующий формат вызова:

samba-tool user show <username> [options]

Переданное в команде значение <username> интерпретируется как имя учетной записи SAM (значение атрибута sAMaccountName).

В параметре --attributes может передаваться список атрибутов (через запятую), значения которых требуется отобразить. Если параметр --attributes не задан или задан в формате --attributes=*, выводятся все доступные атрибуты учетной записи.

В дополнение к доступным атрибутам могут выводиться скрытые атрибуты. Для этого достаточно явно указать их имя в параметре --attributes наряду с *. Например: --attributes=*,msDS-UserPasswordExpiryTimeComputed.

Если запрошенный в параметре --attributes атрибут отсутствует у указанной учетной записи, он опускается в выводе.

Для атрибутов, содержащих в качестве своего значения дату и/или время, может дополнительно указываться формат вывода: --attributes=attributeName;format=formatSpecifier. Доступны следующие форматы:

  • GeneralizedTime — синтаксис общего времени в формате ГГГГММДДЧЧммСС[.|,доли][(+|-ЧЧмм)|Z] (например: 20230529113259.0Z);

  • UnixTime — Unix-время (например: 1685444624);

  • TimeSpec — системное время с точностью до наносекунд (например: 168544462.267546892).

Атрибуты со значением NTTIME, равным 0 и 9223372036854775807, интерпретируются как несуществующие.

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --attributes=USER_ATTRS — список атрибутов (через запятую), которые требуется вывести; поддерживаются следующие виртуальные атрибуты: virtualGeneralizedTime, virtualUnixTime, virtualTimeSpec.

Примеры

Пример получения атрибутов пользователя в домене с указанием удаленного LDAP-сервера:

samba-tool user show User1 -H ldap://samba.samdom.example.com - U administrator

Пример получения атрибутов пользователя в домене на локальном сервере:

samba-tool user show User2

Пример получения значений атрибутов objectSid и memberOf пользователя:

samba-tool user show User3 --attributes=objectSid,memberOf

Пример получения значения атрибута pwdLastSet пользователя в форматах времени GeneralizedTime и UnixTime:

samba-tool user show User4 --attributes='pwdLastSet;format=GeneralizedTime,pwdLastSet;format=UnixTime'

Перемещение пользователя в подразделение/контейнер

Для перемещения учетной записи пользователя в домене Эллес в указанное подразделение (OU) или контейнер используется следующий формат вызова:

samba-tool user move <username> <new_parent_dn> [options]

Переданное в команде значение <username> интерпретируется как имя учетной записи SAM (значение атрибута sAMaccountName).

Имя подразделения или контейнера может указываться в формате полного уникального составного имени (DN) или без компонента domainDN.

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта.

Примеры

Пример перемещения пользователя в подразделение OrgUnit с указанием удаленного LDAP-сервера:

samba-tool user move User1 'OU=OrgUnit,DC=samdom,DC=example,DC=com' -H ldap://samba.samdom.example.com -U administrator

Пример перемещения пользователя обратно в контейнер CN=Users на локальном сервере:

samba-tool user move User1 CN=Users

Изменение пароля пользователя

Для изменения пароля текущей учетной записи (пользователя, прошедшего аутентификацию) в домене Эллес используется следующий формат вызова:

samba-tool user password [options]

Параметры

Параметры вызова:

  • --newpassword=NEWPASSWORD — новый пароль.

Примеры

Пример изменения пароля:

samba-tool user password --user=User1

Изменение имени пользователя и связанных атрибутов

Для изменения имени учетной записи пользователя в домене Эллес и связанных с ним атрибутов (given-name, surname, initials) используется следующий формат вызова:

samba-tool user rename <username> [options]

Новое общее имя пользователя (CN) будет составлено путем комбинирования значений параметров given-name, initials и surname. При необходимости к инициалам будет автоматически добавлена точка ('.'). Используйте опцию --force-new-cn для задания нового значения CN вручную и опцию --reset-cn для отмены этого изменения.

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

Переданное в команде значение <username> интерпретируется как имя учетной записи SAM (значение атрибута sAMaccountName).

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --surname=SURNAME — новое значение фамилии;

  • --given-name=GIVEN_NAME — новое значение имени;

  • --initials=INITIALS — новое значение инициалов;

  • --force-new-cn=NEW_CN — новое значение CN (RND) для использования вместо комбинации значений атрибутов given-name, initials и surname;

  • --reset-cn — использовать в качестве значения CN комбинацию значений атрибутов given-name, initials и surname; используйте данную опцию для отмены изменений, внесенных с помощью опции --force-new-cn;

  • --display-name=DISPLAY_NAME — новое отображаемое имя;

  • --mail-address=MAIL_ADDRESS — новое значение для адреса электронной почты;

  • --samaccountname=SAMACCOUNTNAME — новое значение для имени учетной записи SAM (значение атрибута sAMAccountName / имя для входа в систему);

  • --upn=UPN — новое значение для имени пользователя в формате адреса электронной почты.

Примеры

Пример изменения фамилии пользователя на локальном сервере:

samba-tool user rename ivanivanov --surname='Petrov'

В результате выполнения команды будет автоматически обновлено значение CN пользователя на основе значений атрибутов given-name, initials и surname.

Пример изменения значения CN для пользователя с указанием удаленного LDAP-сервера:

samba-tool user rename ivanivanov --force-new-cn='Ivan Petrov (Sales)' --surname=Petrov -H ldap://samba.samdom.example.com -U administrator

Задание периода действия учетной записи пользователя

Для задания времени окончания периода действия учетной записи пользователя в домене Эллес используется следующий формат вызова:

samba-tool user setexpiry (<username>|--filter <filter>) [options]

Переданное в команде значение <username> интерпретируется как имя учетной записи SAM (значение атрибута sAMaccountName). Также для задания имени пользователя может использоваться параметр --filter.

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

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --filter=FILTER — LDAP-фильтр для поиска объектов в AD;

  • --days=DAYS — продолжительность периода в днях;

  • --noexpiry — период действия неограничен.

Примеры

Пример задания 20-дневного периода действия (начиная с текущей даты) для учетной записи пользователя с указанием удаленного LDAP-сервера:

samba-tool user setexpiry User1 --days=20 --URL=ldap://samba.samdom.example.com --username=administrator

Пример задания неограниченного периода действия для учетной записи пользователя на локальном сервере:

samba-tool user setexpiry User2 --noexpiry

Пример задания 20-дневного периода действия для учетной записи с указанием имени пользователя с помощью параметра --filter:

samba-tool user setexpiry --days=20 --filter=samaccountname=User3

Пример задания неограниченного периода действия для учетной записи пользователя с указанием в качестве имени значения атрибута sAMAccountName:

samba-tool user setexpiry --noexpiry User4

Задание/сброс пароля пользователя

Для задания или сброса пароля учетной записи пользователя в домене Эллес используется следующий формат вызова:

samba-tool user setpassword (<username>|--filter <filter>) [options]

Переданное в команде значение <username> интерпретируется как имя учетной записи SAM (значение атрибута sAMaccountName). Также для задания имени пользователя может использоваться параметр --filter.

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

Для включения принудительной смены пароля при первом входе пользователя в домене может передаваться опция --must-change-at-next-login.

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --filter=FILTER — LDAP-фильтр для поиска объектов в AD;

  • --newpassword=NEWPASSWORD — новый пароль;

  • --must-change-at-next-login — включить принудительную смену пароля при первом входе в домен;

  • --random-password — формировать пароль случайным образом;

  • --smartcard-required — требовать наличие смарт-карты при входе в интерактивном режиме;

  • --smartcard-required — не требовать наличие смарт-карты при входе в интерактивном режиме.

Примеры

Пример задания пароля для пользователя с указанием удаленного LDAP-сервера:

samba-tool user setpassword User1 --newpassword=passw0rd --URL=ldap://samba.samdom.example.com -U administrator

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

samba-tool user setpassword User2 --newpassword=passw0rd --must-change-at-next-login

Пример сброса администратором пароля пользователя с указанием имени пользователя с помощью параметра --filter:

samba-tool user setpassword --filter=samaccountname=User3 --newpassword=passw0rd

Получение пароля пользователя

Для получения значений связанных с паролем полей учетной записи пользователя в домене Эллес используется следующий формат вызова:

samba-tool user getpassword (<username>|--filter <filter>) [options]

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

Переданное в команде значение <username> интерпретируется как имя учетной записи SAM (значение атрибута sAMaccountName). Также для задания имени пользователя может использоваться параметр --filter.

Параметр --attributes принимает в качестве значения список атрибутов (через запятую), которые должны быть выведены или переданы скрипту, заданному в параметре --script. Если переданный атрибут отсутствует среди атрибутов запрашиваемого объекта, он пропускается. В параметре могут передаваться любые атрибуты, заданные в схеме каталога, а также следующие виртуальные атрибуты (для получения полного списка поддерживаемых виртуальных атрибутов используйте --help):

  • virtualClearTextUTF16 — незашифрованный текст в том виде, в каком он хранится в буфере Primary:CLEARTEXT (или Primary:SambaGPG с опцией --decrypt-samba-gpg) внутри атрибута supplementalCredentials; как правило, атрибут содержит валидное байтовое представление символов Unicode в UTF-16 LE, но также может содержать случайные байты, например, для учетных записей компьютеров;

  • virtualClearTextUTF8 — аналогично virtualClearTextUTF16, но с преобразованием в UTF-8 (только из валидного значения в UTF-16 LE);

  • virtualSSHA — аналогично virtualClearTextUTF8, но с вычислением контрольной суммы с использованием функции хеширования SHA-1 с солью; может использоваться для алгоритма SSHA в OpenLDAP;

  • virtualCryptSHA256 — аналогично virtualClearTextUTF8, но с вычислением контрольной суммы с использованием функции хеширования SHA256 с солью; может использоваться для алгоритма CRYPT в OpenLDAP;

    Также может быть указано количество циклов расчета хеша. Для этого к атрибуту добавляется дополнительный параметр ;rounds=x. Например, если задать значение атрибута virtualCryptSHA256;rounds=10000, будет выполнено 10000 циклов расчета хеша с использованием функции SHA256. Если для параметра round задано нечисловое значение, оно игнорируется.

    Расчет выполняется следующим образом:

    1. Если в Primary:userPassword существует значение с указанным количеством циклов, возвращается оно.

    2. Если существует значение Primary:CLEARTEXT или Primary:SambaGPG с ключом --decrypt-samba-gpg, рассчитывается хеш с указанным количеством циклов.

    3. Возвращается первое значение CryptSHA256 в Primary:userPassword.

  • virtualCryptSHA512 — аналогично virtualClearTextUTF8, но с вычислением контрольной суммы с использованием функции хеширования SHA512 с солью, начинающейся с $6$; может использоваться для алгоритма CRYPT в OpenLDAP;

    Также может быть указано количество циклов расчета хеша. Для этого к атрибуту добавляется дополнительный параметр ;rounds=x. Например, если задать значение атрибута virtualCryptSHA512;rounds=10000, будет выполнено 10000 циклов расчета хеша с использованием функции SHA512. Если для параметра round задано нечисловое значение, оно игнорируется.

    Расчет выполняется следующим образом:

    1. Если в Primary:userPassword существует значение с указанным количеством циклов, возвращается оно.

    2. Если существует значение Primary:CLEARTEXT или Primary:SambaGPG с ключом --decrypt-samba-gpg, рассчитывается хеш с указанным количеством циклов.

    3. Возвращается первое значение CryptSHA512 в Primary:userPassword.

  • virtualWDigestNN — отдельное значение хеша, хранящееся в Primary:WDigest, где NN — хеш-число в диапазоне от 01 до 29;

  • virtualKerberosSalt — строковая соль, используемая для вычисления ключей Kerberos на основе незашифрованного пароля в UTF-8;

  • virtualSambaGPG — незашифрованный текст в том виде, в каком он хранится в буфере Primary:SambaGPG внутри атрибута supplementalCredentials (см. описание опции password hash gpg key ids в файле smb.conf).

При задании опции --decrypt-samba-gpg выполняется дешифрование содержимого буфера Primary:SambaGPG. Перед использованием следует убедиться, что данная возможность доступна, с помощью опции --help (требуется пакет python-gpgme). Также может потребоваться задать переменную окружения GNUPGHOME. Если у ключа дешифрования есть парольная фраза, необходимо убедиться, что корректно задана переменная окружения GPG_AGENT_INFO и gpg-agent имеет доступ к парольной фразе.

Для атрибутов, содержащих в качестве своего значения дату и/или время, может дополнительно указываться формат вывода: --attributes=attributeName;format=formatSpecifier. Доступны следующие форматы:

  • GeneralizedTime — синтаксис общего времени в формате ГГГГММДДЧЧммСС[.|,доли][(+|-ЧЧмм)|Z] (например: 20230529113259.0Z);

  • UnixTime — Unix-время (например: 1685444624);

  • TimeSpec — системное время с точностью до наносекунд (например: 168544462.267546892).

Атрибуты со значением NTTIME, равным 0 или 9223372036854775807, интерпретируются как несуществующие.

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --filter=FILTER — LDAP-фильтр для поиска объектов в AD;

  • --attributes=ATTRIBUTE_LIST — атрибуты, которые требуется вывести (через запятую); поддерживаются следующие виртуальные атрибуты: virtualClearTextUTF16, virtualClearTextUTF8, virtualCryptSHA256, virtualCryptSHA512, virtualKerberosSalt, virtualSSHA, virtualSambaGPG, virtualDigest01..29;

  • --decrypt-samba-gpg — дешифровать пароль SambaGPG.

Примеры

Пример получения пароля для пользователя:

samba-tool user getpassword User1 --attributes=pwdLastSet,virtualClearTextUTF8

Пример получения пароля с указанием имени пользователя с помощью параметра --filter:

samba-tool user getpassword --filter=samaccountname=User2 --attributes=msDS-KeyVersionNumber,unicodePwd,virtualClearTextUTF16

Синхронизация паролей

Для синхронизации паролей учетных записей в домене Эллес используется следующий формат вызова:

samba-tool user syncpasswords [--cache-ldb-initialize] [options]

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

Достаточно запустить команду на одном контроллере домена. Однако для успешного ее выполнения на всех контроллерах домена должна быть настроена опция password has gpg key ids.

Команда поддерживает три режима выполнения:

Инициализация кэша (Cache Initialization)

В первый раз команда должна выполняться с параметром, обеспечивающим инициализацию кэша: --cache-ldb-initialize.

Для корректной инициализации кэша требуется передать список атрибутов в параметре --attributes. Также доступны опции --decrypt-samba-gpg, --script, --filter и -H/--URL.

Параметр --attributes принимает в качестве значения список атрибутов (через запятую), которые должны быть выведены или переданы скрипту, заданному в параметре --script. Если переданный атрибут отсутствует среди атрибутов запрашиваемого объекта, он пропускается. В параметре могут передаваться любые атрибуты, заданные в схеме каталога, а также следующие виртуальные атрибуты (для получения полного списка поддерживаемых виртуальных атрибутов используйте --help):

  • virtualClearTextUTF16 — незашифрованный текст в том виде, в каком он хранится в буфере Primary:CLEARTEXT (или Primary:SambaGPG с опцией --decrypt-samba-gpg) внутри атрибута supplementalCredentials; как правило, атрибут содержит валидное байтовое представление символов Unicode в UTF-16 LE, но также может содержать случайные байты, например, для учетных записей компьютеров;

  • virtualClearTextUTF8 — аналогично virtualClearTextUTF16, но с преобразованием в UTF-8 (только из валидного значения в UTF-16 LE);

  • virtualSSHA — аналогично virtualClearTextUTF8, но с вычислением контрольной суммы с использованием функции хеширования SHA-1 с солью; может использоваться для алгоритма SSHA в OpenLDAP;

  • virtualCryptSHA256 — аналогично virtualClearTextUTF8, но с вычислением контрольной суммы с использованием функции хеширования SHA256 с солью; может использоваться для алгоритма CRYPT в OpenLDAP;

    Также может быть указано количество циклов расчета хеша. Для этого к атрибуту добавляется дополнительный параметр ;rounds=x. Например, если задать значение атрибута virtualCryptSHA256;rounds=10000, будет выполнено 10000 циклов расчета хеша с использованием функции SHA256. Если для параметра round задано нечисловое значение, оно игнорируется.

    Расчет выполняется следующим образом:

    1. Если в Primary:userPassword существует значение с указанным количеством циклов, возвращается оно.

    2. Если существует значение Primary:CLEARTEXT или Primary:SambaGPG с ключом --decrypt-samba-gpg, рассчитывается хеш с указанным количеством циклов.

    3. Возвращается первое значение CryptSHA256 в Primary:userPassword.

  • virtualCryptSHA512 — аналогично virtualClearTextUTF8, но с вычислением контрольной суммы с использованием функции хеширования SHA512 с солью, начинающейся с $6$; может использоваться для алгоритма CRYPT в OpenLDAP;

    Также может быть указано количество циклов расчета хеша. Для этого к атрибуту добавляется дополнительный параметр ;rounds=x. Например, если задать значение атрибута virtualCryptSHA512;rounds=10000, будет выполнено 10000 циклов расчета хеша с использованием функции SHA512. Если для параметра round задано нечисловое значение, оно игнорируется.

    Расчет выполняется следующим образом:

    1. Если в Primary:userPassword существует значение с указанным количеством циклов, возвращается оно.

    2. Если существует значение Primary:CLEARTEXT или Primary:SambaGPG с ключом --decrypt-samba-gpg, рассчитывается хеш с указанным количеством циклов.

    3. Возвращается первое значение CryptSHA512 в Primary:userPassword.

  • virtualWDigestNN — отдельное значение хеша, хранящееся в Primary:WDigest, где NN — хеш-число в диапазоне от 01 до 29;

  • virtualKerberosSalt — строковая соль, используемая для вычисления ключей Kerberos на основе незашифрованного пароля в UTF-8;

  • virtualSambaGPG — незашифрованный текст в том виде, в каком он хранится в буфере Primary:SambaGPG внутри атрибута supplementalCredentials (см. описание опции password hash gpg key ids в файле smb.conf).

При задании опции --decrypt-samba-gpg выполняется дешифрование содержимого буфера Primary:SambaGPG. Перед использованием следует убедиться, что данная возможность доступна, с помощью опции --help (требуется пакет python-gpgme). Также может потребоваться задать переменную окружения GNUPGHOME. Если у ключа дешифрования есть парольная фраза, необходимо убедиться, что корректно задана переменная окружения GPG_AGENT_INFO и gpg-agent имеет доступ к парольной фразе.

С помощью опции --script может быть задан пользовательский скрипт, который будет вызываться при каждом изменении атрибутов dirSyncAttributes (см. список атрибутов ниже). Скрипт вызывается без каких-либо аргументов. Он получает данные в формате LDIF ровно для одного объекта из stdin. В случае успешного завершения обработки объекта, скрипт должен вернуть ответ в виде одной строки, начинающейся со слов DONE-EXIT: и содержащей произвольное сообщение.

Следует учитывать, что скрипт может вызываться, в том числе, и в случаях, не связанных с изменением пароля. Например — при отключении учетной записи (изменение userAccountControl) или изменении sAMAccountName. В качестве уникального идентификатора учетной записи всегда возвращаются значения атрибутов objectGUID, isDeleted и isRecycled. Также может быть полезным запросить атрибуты, не связанные с паролем, включая, например, атрибуты objectSid, sAMAccountName, userPrincipalName, userAccountControl, pwdLastSet и msDS-KeyVersionNumber. В зависимости от особенностей конкретного объекта те или иные атрибуты могут отсутствовать либо быть недоступны.

Если опция --script не передается, данные в формате LDIF выводятся в stdout или в лог-файл.

По умолчанию при поиске по LDAP_SERVER_DIRSYNC_OID применяется следующий фильтр:

(&(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=512)(!(sAMAccountName=krbtg*))

Таким образом, в процессе мониторинга учитываются только обычные (non-krbtgt) учетные записи пользователей. Если требуется изменить данное поведение (например, чтобы выполнять синхронизацию также и для учетных записей компьютеров), следует задать соответствующее значение фильтра с помощью параметра --filter.

Запуск циклической синхронизации (Sync Loop Run)

В данном режиме, который используется по умолчанию, запускается бесконечный цикл ожидания связанных с паролями изменений в базе данных службы каталогов Active Directory. Для эффективного контроля изменений используются элементы LDAP_SERVER_DIRSYNC_OID и LDAP_SERVER_NOTIFICATION_OID.

В процессе мониторинга учитываются изменения значений следующих атрибутов (dirSyncAttributes) объектов: unicodePwd, dBCSPwd, supplementalCredentials, pwdLastSet, sAMAccountName, userPrincipalName, userAccountControl.

В случае обрыва соединения с LDAP-сервером процесс синхронизации возобновляется после восстановления соединения и обеспечивает обновление кэша в консервативном режиме (пошагово, при каждой успешной обработке изменения).

При возникновении ошибки в работе скрипта, заданного в параметре --script, процесс синхронизации прекращается. При этом кэш будет сохранять корректное состояние. Работа с ним будет возобновлена при следующем запуске команды в режиме Sync Loop Run.

С помощью опции --logfile может быть указан опциональный лог-файл (использование опции является обязательным при запуске в режиме --daemon), в котором будут сохраняться все выводимые командой данные. Лог-файл автоматически открывается, если fstat возвращает st_nlink == 0.

Опция --daemon позволяет запустить команду в фоновом режиме. Для остановки команды в этом случае используется стандартное сочетание клавиш CTRL+C.

При задании опции --no-wait команда будет пропускать шаг ожидания LDAP_SERVER_NOTIFICATION_OID и прекращать работу сразу после получения всех изменений по LDAP_SERVER_DIRSYNC_OID.

Остановка циклической синхронизации (Sync Loop Terminate)

Для остановки ранее запущенной команды циклической синхронизации (в том числе работающей в режиме демона) может использоваться опция --terminate. При ее использовании также требуется указать опцию --logfile.

Параметры

Параметры вызова:

  • --cache-ldb-initialize — первоначальная инициализация кэша;

  • --cache-ldb=CACHE_LDB_PATH — адрес (URL) размещения файла кэша (user-syncpasswords-cache.ldb);

  • -H URL|--URL=URL — адрес LDB;

  • --filter=FILTER — LDAP-фильтр для поиска объектов в AD;

  • --attributes=ATTRIBUTE_LIST — атрибуты, которые требуется вывести (через запятую); поддерживаются следующие виртуальные атрибуты: virtualClearTextUTF16, virtualClearTextUTF8, virtualCryptSHA256, virtualCryptSHA512, virtualKerberosSalt, virtualSSHA, virtualSambaGPG, virtualDigest01..29;

  • --decrypt-samba-gpg — дешифровать пароль SambaGPG;

  • --script=/path/to/syncpasswords.script — скрипт, который должен вызываться при каждом изменении пароля;

  • --no-wait — пропускать шаг ожидания изменений;

  • --logfile=/path/to/syncpasswords.log — лог-файл (параметр является обязательным при запуске команды в режиме --daemon);

  • --daemon — перейти в режим демона после первоначальной настройки;

  • --terminate — послать сигнал SIGTERM работающему процессу (демону).

Примеры

Пример последовательности команд для инициализации и запуска процесса синхронизации:

samba-tool user syncpasswords --cache-ldb-initialize --attributes=virtualClearTextUTF8

samba-tool user syncpasswords

Пример последовательности команд для инициализации, запуска и остановки процесса синхронизации:

samba-tool user syncpasswords --cache-ldb-initialize \
    --attributes=objectGUID,objectSID,sAMAccountName,\
    userPrincipalName,userAccountControl,pwdLastSet,\
    msDS-KeyVersionNumber,virtualCryptSHA512 \
    --script=/path/to/my-custom-syncpasswords-script.py

samba-tool user syncpasswords --daemon \
    --logfile=/var/log/samba/user-syncpasswords.log

samba-tool user syncpasswords --terminate \
    --logfile=/var/log/samba/user-syncpasswords.log

Разблокировка пользователя

Для разблокировки учетной записи пользователя в домене Эллес используется следующий формат вызова:

samba-tool user unlock (<username>|--filter <filter>) [options]

Переданное в команде значение <username> интерпретируется как имя учетной записи SAM (значение атрибута sAMaccountName). Также для задания имени пользователя может использоваться параметр --filter.

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --filter=FILTER — LDAP-фильтр для поиска объектов в AD.

Примеры

Пример разблокировки учетной записи с указанием удаленного LDAP-сервера:

samba-tool user unlock User1 -H ldap://samba.samdom.example.com -U administrator

Защита пользователя от случайного удаления

Для защиты учетной записи пользователя от случайного удаления используется следующий формат вызова:

samba-tool user protect (<username>|--filter <filter>) [options]

Переданное в команде значение <username> интерпретируется как имя учетной записи SAM (значение атрибута sAMaccountName). Также для задания имени пользователя может использоваться параметр --filter.

Для включения защиты при вызове подкоманды необходимо передать опцию --enable, для отключения в последующем — опцию --disable.

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --filter=FILTER — LDAP-фильтр для поиска объектов в AD;

  • --enable — включение защиты учетной записи пользователя от случайного удаления (не может использоваться одновременно с опцией --disable);

  • --disable — отключение защиты учетной записи пользователя от случайного удаления (не может использоваться одновременно с опцией --enable).

Примеры

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

samba-tool user protect User1 \
   --enable \
   -H ldap://samba.samdom.example.com \
   -U administrator

Пример включения учетной записи в домене на локальном сервере:

sudo samba-tool user protect User2 --enable

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

samba-tool user protect User3 \
   --disable \
   -H ldap://samba.samdom.example.com \
   -U administrator

Пример отключения учетной записи в домене на локальном сервере:

sudo samba-tool user protect User4 --disable

Получение билета Kerberos для пользователя

Для получения билета Kerberos (TGT) для учетной записи пользователя (или компьютера) используется следующий формат вызова:

samba-tool user get-kerberos-ticket (<username>|--filter <filter>) [options]

Переданное в команде значение <username> интерпретируется как имя учетной записи SAM (значение атрибута sAMaccountName). Также для задания имени пользователя может использоваться параметр --filter.

Для указания расположения и имени файла кэша учетных данных необходимо при вызове подкоманды передать требуемое значение в опции --output-krb5-ccache.

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • --filter=FILTER — LDAP-фильтр для поиска объектов в AD;

  • --output-krb5-ccache — расположение и имя файла кэша с учетными данными субъекта безопасности Kerberos;

  • --decrypt-samba-gpg — выполнять дешифрование содержимого буфера Primary:SambaGPG.

    Перед использованием следует убедиться, что данная возможность доступна, с помощью опции --help (требуется пакет python-gpgme). Также может потребоваться задать переменную окружения GNUPGHOME. Если у ключа дешифрования есть парольная фраза, необходимо убедиться, что корректно задана переменная окружения GPG_AGENT_INFO и gpg-agent имеет доступ к парольной фразе.

Примеры

Пример получения билета Kerberos с указанием sAMaccountName:

sudo samba-tool user get-kerberos-ticket User1 \
   --output-krb5-ccache=/srv/service/krb5_ccache

Пример получения билета Kerberos с указанием LDAP-фильтра:

sudo samba-tool user get-kerberos-ticket \
   --filter='(samAccountName=TestUser3)' \
   --output-krb5-ccache=FILE:/srv/service/krb5_ccache

Установка запрета на делегирование

Для управления запретом на делегирование учетной записи используется следующий формат вызова:

samba-tool user sensitive <username> [(show|on|off)] [options]

Переданное в команде значение <username> интерпретируется как имя учетной записи SAM (значение атрибута sAMaccountName).

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

Параметры

Параметры вызова:

  • -H URL|--URL=URL — URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта;

  • show — отображение текущего состояния флага UF_NOT_DELEGATED;

  • on|off — установка / отмена установки флага UF_NOT_DELEGATED для указанной учетной записи.

Примеры

Пример просмотра состояния флага UF_NOT_DELEGATED на удаленном LDAP-сервере:

samba-tool user sensitive User1 \
    show \
    -H ldap://samba.samdom.example.com \
    --use-kerberos=required
Account-DN: CN=User1,CN=Users,DC=samdom,DC=example,DC=com
UF_NOT_DELEGATED: False

Пример установки флага UF_NOT_DELEGATED на удаленном LDAP-сервере:

samba-tool user sensitive User1 \
    on \
    -H ldap://samba.samdom.example.com \
    --use-kerberos=required

Пример отмены установки флага UF_NOT_DELEGATED на удаленном LDAP-сервере:

samba-tool user sensitive User1 \
    off \
    -H ldap://samba.samdom.example.com \
    --use-kerberos=required