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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • isDeleted:

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

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

  • isRecycled:

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

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

  • mfsDS-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. Схема изменения атрибутов объекта после удаления при включенной функциональности корзины

Операции

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

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

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

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

samba-tool recyclebin status [options]

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

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

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

Параметры

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

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

Примеры

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

samba-tool recyclebin status
disabled

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

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

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

samba-tool recyclebin enable [options]

Подкоманда включает функциональность корзины на уровне леса. Ее достаточно выполнить на одном контроллере домена Эллес с доступом к базе данных каталога на запись и чтение (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'
whenCreated: '20240917181459.0Z'
whenChanged: '20240917181510.0Z'
uSNCreated: '15867'
uSNChanged: '15870'
objectGUID: '46991241-293e-49ce-ad9e-209ab0ca2aa3'
lastLogon: '0'
primaryGroupID: '513'
objectSid: 'S-1-5-21-1159061634-2679507100-403793082-2179'
accountExpires: '9223372036854775807'
sAMAccountName: 'user1'
userPrincipalName: 'user1@domain.name'
lastKnownParent: 'CN=Users,DC=domain,DC=name'
msDS-LastKnownRDN: 'user1'

Восстановление удаленного объекта из корзины

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

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

samba-tool recyclebin restore <del_dn> [new_dn] [options]

При вызове подкоманды в качестве первого аргумента ожидается DN-имя удаленного объекта, находящегося в корзине. Для получения DN-имени может использоваться подкоманда samba-tool recyclebin list (см. «Просмотр содержимого корзины»).

По умолчанию объект восстанавливается в том же контейнере, в котором он размещался в момент удаления.

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

Параметры

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

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

Примеры

Пример восстановления удаленного объекта из корзины в исходном контейнере:

samba-tool recyclebin restore \
   'CN=user1\0ADEL:46991241-293e-49ce-ad9e-209ab0ca2aa3,CN=Deleted Objects,DC=domain,DC=name'
Object has been restored.

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

samba-tool recyclebin restore \
   'CN=user1\0ADEL:46991241-293e-49ce-ad9e-209ab0ca2aa3,CN=Deleted Objects,DC=domain,DC=name' \
   'CN=NewGroup,OU=OrgUnit,DC=domain,DC=name'
Object has been restored.