Администрирование пользователей
Для администрирования пользователей в домене Эллес с помощью утилиты samba-tool используется группа подкоманд user.
Добавление пользователя
Для добавления учетной записи пользователя в домене Эллес используется следующий формат вызова:
samba-tool user add <username> [<password>] [options]
Переданное в команде имя пользователя (username) интерпретируется как 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) интерпретируется как 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) интерпретируется как 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) интерпретируется как sAMaccountName.
При удалении учетной записи также удаляются все связанные с нею разрешения, права и членства в группах. Если в последствии в домен будет добавлена учетная запись с тем же именем, она не получит разрешения, права или членства удаленной записи, так как ей будет присвоен новый идентификатор безопасности (SID).
Отключение пользователя
Для отключения учетной записи в домене Эллес используется следующий формат вызова:
samba-tool user disable (<username>|--filter <filter>) [options]
Переданное в команде имя пользователя (username) интерпретируется как sAMaccountName. Также для задания имени пользователя может использоваться параметр --filter.
После выполнения команды пользователь не сможет входить на рабочие станции или серверы в домене с использованием отключенной учетной записи.
Включение пользователя
Для включения учетной записи в домене Эллес используется следующий формат вызова:
samba-tool user enable (<username>|--filter <filter>) [options]
Переданное в команде имя пользователя (username) интерпретируется как 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) интерпретируется как sAMaccountName.
Получение атрибутов пользователя
Для получения атрибутов учетной записи в домене Эллес используется следующий формат вызова:
samba-tool user show <username> [options]
Переданное в команде имя пользователя (username) интерпретируется как 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) интерпретируется как 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) интерпретируется как 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) интерпретируется как 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) интерпретируется как 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— требовать наличие смарт-карты при входе в интерактивном режиме; -
--clear-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) интерпретируется как 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) интерпретируется как sAMaccountName. Также для задания имени пользователя может использоваться параметр --filter.
Защита пользователя от случайного удаления
Для защиты учетной записи пользователя от случайного удаления используется следующий формат вызова:
samba-tool user protect (<username>|--filter <filter>) [options]
Переданное в команде имя пользователя (username) интерпретируется как 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
Пример включения учетной записи в домене на локальном сервере:
samba-tool user protect User2 --enable
Пример отключения защиты учетной записи пользователя от случайного удаления с указанием удаленного LDAP-сервера:
samba-tool user protect User3 \
--disable \
-H ldap://samba.samdom.example.com \
-U Administrator
Пример отключения учетной записи в домене на локальном сервере:
samba-tool user protect User4 --disable
Получение билета Kerberos для пользователя
Для получения билета Kerberos (TGT) для учетной записи пользователя (или компьютера) используется следующий формат вызова:
samba-tool user get-kerberos-ticket (<username>|--filter <filter>) [options]
Переданное в команде имя пользователя (username) интерпретируется как 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:
samba-tool user get-kerberos-ticket User1 \
--output-krb5-ccache=/srv/service/krb5_ccache
Пример получения билета Kerberos с указанием LDAP-фильтра:
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) интерпретируется как 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 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
Пример отмены установки флага UF_NOT_DELEGATED на удаленном LDAP-сервере:
samba-tool user sensitive User1 off
Просмотр назначенной политики аутентификации
Назначение политики аутентификации
Формат вызова:
samba-tool user auth policy assign <username> [options]
Подкоманда назначает политику аутентификации (--policy) пользователю с указанным CN (username).
Если пользователю уже назначена политика аутентификации, то выполнение подкоманды приведет к замене назначенной ранее политики новой, указанной при вызове подкоманды.
Отмена назначения политики аутентификации
Просмотр назначенного силоса политик аутентификации
Формат вызова:
samba-tool user auth silo view <username> [options]
Подкоманда выводит имя силоса политики аутентификации, назначенного пользователю с указанным CN (username).
При выполнении операции проверяется, предоставлен ли пользователю доступ к силосу:
-
granted— доступ предоставлен; -
revoked— доступ отозван.
| См. описание подкоманды предоставления пользователю доступа к силосу в подразделе «Предоставление доступа к силосу политик аутентификации». |
Назначение силоса политик аутентификации
Формат вызова:
samba-tool user auth silo assign <username> [options]
Подкоманда назначает силос политик аутентификации (--silo) пользователю с указанным CN (username).
При выполнении операции проверяется, предоставлен ли пользователю доступ к силосу:
-
granted— доступ предоставлен; -
revoked— доступ отозван.
| См. описание подкоманды предоставления пользователю доступа к силосу в подразделе «Предоставление доступа к силосу политик аутентификации». |
Если пользователю уже назначен силос политик аутентификации, то выполнение подкоманды приведет к замене назначенного ранее силоса новым, указанным при вызове подкоманды.
Отмена назначения силоса политик аутентификации
Формат вызова:
samba-tool user auth silo remove <username> [options]
Подкоманда отменяет назначение силоса политик аутентификации для пользователя с указанным CN (username).
При выполнении операции проверяется, предоставлен ли пользователю доступ к силосу:
-
granted— доступ предоставлен; -
revoked— доступ отозван.
| См. описание подкоманды предоставления пользователю доступа к силосу в подразделе «Предоставление доступа к силосу политик аутентификации». |