Управление корзиной

В Эллес реализована частичная поддержка функциональности корзины.

Включение функциональности корзины выполняется только на контроллерах домена Эллес с доступом к базе данных каталога на запись и чтение (RWDC). На контроллерах с доступом к базе данных только на чтение (RODC) выполнять данную операцию не требуется.

Общие сведения

Функциональность корзины (Recycle Bin) в Active Directory позволяет восстанавливать удаленные объекты без потери данных. При удалении объекта он не удаляется физически из базы данных, а отмечается как подлежащий удалению. При этом объект перемещается в контейнер Deleted Objects со всеми атрибутами, связями, информацией о членствах в группах и метаданными, что позволяет администратору в течение определенного времени восстановить его в том состоянии, в котором он находился до удаления.

Объект в корзине хранится в течение определенного срока, который задается настраиваемым атрибутом. По истечении установленного срока хранения объект физически удаляется из базы данных каталога.

Особенности и ограничения

Реализация функциональности корзины имеет следующие особенности и ограничения:

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

  • для включения корзины требуется функциональный уровень леса Windows Server 2008 R2 или выше;

  • корзина может быть включена только для всего леса; включение на уровне отдельного домена в рамках леса невозможно;

  • для включения корзины домен должен владеть FSMO-ролью Domain Naming Master;

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

Атрибуты объекта

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

  • isDeleted:

    • существует у каждого объекта каталога;

    • признак того, что объект удален, но может быть восстановлен;

  • isRecycled:

    • существует у каждого помещенного в корзину объекта;

    • признак того, что объект удален и не может быть восстановлен;

  • msDS-deletedObjectLifetime:

    • устанавливается в контейнере CN=Directory Service,CN=Windows NT, CN=Services, CN=Configuration, DC=domain,DC=name;

    • задает период, в течение которого удаленный объект может быть восстановлен;

  • tombstoneLifetime:

    • устанавливается в контейнере CN=Directory Service,CN=Windows NT, CN=Services, CN=Configuration, DC=domain,DC=name;

    • задает период, в течение которого удаленный объект не может быть восстановлен.

Стадии нахождения объекта в корзине

При перемещении объекта в корзину он проходит через следующие стадии (Рис. 1):

  1. Объект находится в активном состоянии.

  2. Администратор удаляет объект.

  3. Объект перемещается в контейнер Deleted Objects.

  4. Для объекта устанавливается признак isDeleted. Практически все атрибуты объекта сохраняются.
    На этом этапе объект удален логически и при необходимости может быть восстановлен администратором из корзины без потери данных.
    В этом состоянии объект находится в течение периода, заданного атрибутом msDS-deletedObjectLifetime. По умолчанию он равен периоду хранения объекта в корзине после утилизации (установки атрибута isRecycled).

  5. Объект утилизируется. Для него устанавливается признак isRecycled. Запись об объекте остается в базе данных, но практически все атрибуты удаляются.
    На этом этапе объект не может быть восстановлен администратором.
    В новом лесу по умолчанию период нахождения объекта в этом состоянии составляет 180 дней.

  6. Объект физически удаляется из корзины.

recyclebin stages
Рис. 1. Схема изменения атрибутов объекта после удаления при включенной функциональности корзины

Предварительные условия

Включать корзину на контроллере домена Эллес (RWDC) необходимо в следующем случае:

  1. Контроллер домена Эллес (RWDC) работает в гетерогенной среде, предусматривающей обмен данными с контроллерами домена Active Directory в процессе репликации.

  2. На контроллерах домена Active Directory включена функциональность корзины.

В противном случае объекты, помещаемые в корзину на контроллерах домена Active Directory, в результате репликации данных на контроллеры домена Эллес будут помечаться как полностью удаленные.

Последовательность действий

Для включения корзины на контроллере домена Эллес (RWDC) с помощью утилиты samba-tool используется подкоманда recyclebin enable.

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

  • при включении корзины на существующем контроллере домена Эллес (RWDC):

    1. Остановить контроллер домена.

    2. Выполнить подкоманду samba-tool recyclebin enable.

    3. Запустить контроллер и дождаться завершения цикла репликации.

  • при вводе в домен нового контроллера Эллес (RWDC):

    1. Использовать при присоединении к домену с помощью подкоманды samba-tool domain join опцию --domain-critical-only.

    2. Выполнить подкоманду samba-tool recyclebin enable.

    3. Запустить контроллер и дождаться завершения цикла репликации.

Операции

Для управления функциональностью корзины с помощью утилиты samba-tool используется подкоманда recyclebin.

Просмотр состояния функциональности корзины

Формат вызова

Общий формат вызова:

samba-tool recyclebin status [options]

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

  • enabled — функциональность корзины включена;

  • disabled — функциональность корзины отключена.

Параметры

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

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

Примеры

Пример выполнения подкоманды:

samba-tool recyclebin status
disabled

Включение функциональности корзины

Включение функциональности корзины выполняется только на контроллерах домена   с доступом к базе данных каталога на запись и чтение (RWDC). На контроллерах с доступом к базе данных только на чтение (RODC) выполнять данную операцию не требуется.

Формат вызова

Общий формат вызова:

samba-tool recyclebin enable [options]

Подкоманда включает корзину локально, на одном контроллере домена. При совместной работе с контроллерами домена Active Directory с включенной функциональностью корзины она должна быть выполнена на всех контроллерах домена Эллес (RWDC) в лесу.

Подкоманда выполняется один раз — отключить корзину после этого невозможно.

По умолчанию используется интерактивный режим, предусматривающий запрос подтверждения от пользователя. Для принудительного включения корзины без дополнительных проверок и запроса подтверждения используйте ключ -f|--force.

Для запуска подкоманды требуются права суперпользователя (root/sudo).

Параметры

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

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

  • -f|--force — принудительное включение корзины без дополнительных проверок и подтверждения со стороны пользователя.

Примеры

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

samba-tool recyclebin enable --force

Проверка статуса функциональности корзины:

samba-tool recyclebin status
enabled

Просмотр содержимого корзины

Формат вызова

Общий формат вызова:

samba-tool recyclebin list [options]

Подкоманда выводит список находящихся к корзине объектов.

Для ограничения списка объектов при вызове подкоманды в ключе -e|--expression может использоваться выражение для поиска в БД LDAP.

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

  • количество объектов, находящихся в корзине (контейнер CN=Deleted Objects,DC=domain,DC=name) или соответствующих заданному LDAP-фильтру;

  • записи об удаленных объектах в формате:

    dn: 'CN=<object-cn>\0ADEL:<ObjectGUID>,CN=Deleted Objects,DC=domain,DC=name'

Для отображения всего доступного набора атрибутов удаленного объекта при вызове подкоманды необходимо передать ключ -a|--print-all.

Параметры

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

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

  • -e|--expression — выражение для поиска в БД LDAP;

  • -a|--print-all — вывод всех доступных атрибутов удаленного объекта.

Примеры

Пример отображения содержимого корзины:

samba-tool recyclebin list
Deleted objects count: 6

# record 1
dn: 'CN=object1\0ADEL:2fdb1731-e022-43a2-b9fc-2a14bcb62e8d,CN=Deleted Objects,DC=domain,DC=name'

# record 2
dn: 'CN=object2\0ADEL:46991241-293e-49ce-ad9e-209ab0ca2aa3,CN=Deleted Objects,DC=domain,DC=name'

# record 3
dn: 'CN=object3\0ADEL:fda13375-5027-4870-b05a-090f5000437b,CN=Deleted Objects,DC=domain,DC=name'

# record 4
dn: 'CN=object4\0ADEL:0c947ae6-fae0-4e33-92bc-7e016a2bff8,CN=Deleted Objects,DC=domain,DC=name'

# record 5
dn: 'CN=object5\0ADEL:23e9be91-3f95-460d-88bf-11ba0478f818,CN=Deleted Objects,DC=domain,DC=name'

# record 6
dn: 'CN=object6\0ADEL:45e9499e-d896-481f-9706-7051667a29a3,CN=Deleted Objects,DC=domain,DC=name'

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

samba-tool recyclebin list \
   --expression "(&(objectClass=user))" \
   --print-all
Deleted objects count: 1

# record 1
dn: 'CN=user1\0ADEL:46991241-293e-49ce-ad9e-209ab0ca2aa3,CN=Deleted Objects,DC=domain,DC=name'
objectClass: 'top'
objectClass: 'person'
objectClass: 'organizationalPerson'
objectClass: 'user'
instanceType: '4'
whenCreated: '20240917181459.0Z'
uSNCreated: '15867'
objectGUID: '46991241-293e-49ce-ad9e-209ab0ca2aa3'
badPwdCount: '0'
codePage: '0'
countryCode: '0'
badPasswordTime: '0'
lastLogoff: '0'
lastLogon: '0'
primaryGroupID: '513'
objectSid: 'S-1-5-21-1159061634-2679507100-403793082-2179'
accountExpires: '9223372036854775807'
logonCount: '0'
sAMAccountName: 'user1'
userPrincipalName: 'user1@domain.name'
pwdLastSet: '133710704992933030'
userAccountControl: '512'
isDeleted: 'TRUE'
lastKnownParent: 'CN=Users,DC=domain,DC=name'
msDS-LastKnownRDN: 'user1'
cn: 'user1'
DEL:46991241-293e-49ce-ad9e-209ab0ca2aa3'
name: 'user1'
DEL:46991241-293e-49ce-ad9e-209ab0ca2aa3'
whenChanged: '20240917181510.0Z'
uSNChanged: '15870'
distinguishedName: 'CN=user1\0ADEL:46991241-293e-49ce-ad9e-209ab0ca2aa3,CN=Deleted Objects,DC=domain,DC=name'