Администрирование пользователей
Для администрирования пользователей в домене Эллес с помощью утилиты samba-tool
используется группа подкоманд user
.
При выполнении операций с помощью группы подкоманд В этом случае для успешного выполнения подкоманды:
|
Добавление пользователя
Для добавления учетной записи пользователя в домене Эллес используется следующий формат вызова:
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).
Отключение пользователя
Для отключения учетной записи в домене Эллес используется следующий формат вызова:
samba-tool user disable (<username>|--filter <filter>) [options]
Переданное в команде значение <username>
интерпретируется как имя учетной записи SAM (значение атрибута sAMaccountName
). Также для задания имени пользователя может использоваться параметр --filter
.
После выполнения команды пользователь не сможет входить на рабочие станции или серверы в домене с использованием отключенной учетной записи.
Включение пользователя
Для включения учетной записи в домене Эллес используется следующий формат вызова:
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
— не выводить в списке отключенные учетные записи.
Задание основной группы для пользователя
Для задания основной группы для учетной записи в домене Эллес используется следующий формат вызова:
samba-tool user setprimarygroup <username> <primarygroupname> [options]
Переданные в команде значения <username>
и <primarygroupname>
интерпретируется как имя учетной записи и имя группы SAM (значение атрибута sAMaccountName
).
Получение списка групп пользователя
Для получения списка групп, членом которых является учетная запись пользователя в домене Эллес, используется следующий формат вызова:
samba-tool user getgroups <username> [options]
Переданное в команде значение <username>
интерпретируется как имя учетной записи SAM (значение атрибута sAMaccountName
).
Получение атрибутов пользователя
Для получения атрибутов учетной записи в домене Эллес используется следующий формат вызова:
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]
Изменение имени пользователя и связанных атрибутов
Для изменения имени учетной записи пользователя в домене Эллес и связанных с ним атрибутов (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
задано нечисловое значение, оно игнорируется.Расчет выполняется следующим образом:
-
Если в
Primary:userPassword
существует значение с указанным количеством циклов, возвращается оно. -
Если существует значение
Primary:CLEARTEXT
илиPrimary:SambaGPG
с ключом--decrypt-samba-gpg
, рассчитывается хеш с указанным количеством циклов. -
Возвращается первое значение
CryptSHA256
вPrimary:userPassword
.
-
-
virtualCryptSHA512
— аналогичноvirtualClearTextUTF8
, но с вычислением контрольной суммы с использованием функции хеширования SHA512 с солью, начинающейся с$6$
; может использоваться для алгоритма CRYPT в OpenLDAP;Также может быть указано количество циклов расчета хеша. Для этого к атрибуту добавляется дополнительный параметр
;rounds=x
. Например, если задать значение атрибутаvirtualCryptSHA512;rounds=10000
, будет выполнено 10000 циклов расчета хеша с использованием функции SHA512. Если для параметраround
задано нечисловое значение, оно игнорируется.Расчет выполняется следующим образом:
-
Если в
Primary:userPassword
существует значение с указанным количеством циклов, возвращается оно. -
Если существует значение
Primary:CLEARTEXT
илиPrimary:SambaGPG
с ключом--decrypt-samba-gpg
, рассчитывается хеш с указанным количеством циклов. -
Возвращается первое значение
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
задано нечисловое значение, оно игнорируется.Расчет выполняется следующим образом:
-
Если в
Primary:userPassword
существует значение с указанным количеством циклов, возвращается оно. -
Если существует значение
Primary:CLEARTEXT
илиPrimary:SambaGPG
с ключом--decrypt-samba-gpg
, рассчитывается хеш с указанным количеством циклов. -
Возвращается первое значение
CryptSHA256
вPrimary:userPassword
.
-
-
virtualCryptSHA512
— аналогичноvirtualClearTextUTF8
, но с вычислением контрольной суммы с использованием функции хеширования SHA512 с солью, начинающейся с$6$
; может использоваться для алгоритма CRYPT в OpenLDAP;Также может быть указано количество циклов расчета хеша. Для этого к атрибуту добавляется дополнительный параметр
;rounds=x
. Например, если задать значение атрибутаvirtualCryptSHA512;rounds=10000
, будет выполнено 10000 циклов расчета хеша с использованием функции SHA512. Если для параметраround
задано нечисловое значение, оно игнорируется.Расчет выполняется следующим образом:
-
Если в
Primary:userPassword
существует значение с указанным количеством циклов, возвращается оно. -
Если существует значение
Primary:CLEARTEXT
илиPrimary:SambaGPG
с ключом--decrypt-samba-gpg
, рассчитывается хеш с указанным количеством циклов. -
Возвращается первое значение
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
.
Защита пользователя от случайного удаления
Для защиты учетной записи пользователя от случайного удаления используется следующий формат вызова:
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