Управление корзиной
В Эллес реализована поддержка функциональности корзины.
Общие сведения
Функциональность корзины (Recycle Bin) в Эллес позволяет восстанавливать удаленные объекты без потери данных. При удалении объекта он не удаляется физически из базы данных, а отмечается как подлежащий удалению. При этом объект перемещается в контейнер 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_name>; -
задает период, в течение которого объект остается в состоянии логически удаленного;
Объект сохраняет все атрибуты исходного объекта, кроме
objectCategoryиsAMAccountType.
Он остается в базе данных, доступен для репликации и может быть восстановлен через корзину.
По истечении данного периода объект утилизируется.
-
-
tombstoneLifetime:-
устанавливается в контейнере
CN=Directory Service,CN=Windows NT, CN=Services, CN=Configuration, DC=<domain_name>; -
задает период, в течение которого объект остается в состоянии утилизированного.
Объект лишается большинства своих атрибутов и используется исключительно при репликации между контроллерами домена для уведомления других контроллеров об удалении.
По истечении данного периода объект удаляется физически.
-
Стадии нахождения объекта в корзине
При перемещении объекта в корзину он проходит через следующие стадии (Рис. 1):
-
Объект находится в активном состоянии.
-
Администратор удаляет объект. Объект перемещается в контейнер
Deleted Objects:-
для объекта устанавливается признак
isDeleted(isDeleted=True); -
признак
isRecycledотсутствует; -
сохраняются все атрибуты исходного объекта, кроме
objectCategoryиsAMAccountType; -
дочерние объекты отсутствуют;
-
связанные (linked) и несвязанные (nonlinked) атрибуты, ссылающиеся на объект, сохраняются у других объектов;
-
объект остается в базе данных и доступен для репликации.
На этом этапе объект удален логически и при необходимости может быть восстановлен администратором из корзины без потери данных.
В таком состоянии объект находится в течение периода, заданного атрибутомmsDS-deletedObjectLifetimeс учетом следующего:-
если значение атрибута не задано, период хранения удаленного объекта равен периоду хранения утилизированного объекта;
-
если для атрибута указано значение менее 2 дней, период хранения удаленных объектов устанавливается по умолчанию равным 2 дням.
-
-
Объект утилизируется:
-
для объекта дополнительно устанавливается признак
isRecycled(isRecycled=True); -
сохраняются RDN, атрибуты
objectGUID,objectSid, атрибуты, отмеченные как сохраняемые при удалении, и ряд специфических атрибутов; -
удаляются атрибуты
objectCategory,sAMAccountType, все связанные (linked) атрибуты, даже если они в списке сохраняемых; -
отсутствуют дочерние объекты;
-
связанные (linked) атрибуты, ссылающиеся на объект, удаляются у других объектов;
-
несвязанные (nonlinked) атрибуты, ссылающиеся на объект, сохраняются у других объектов;
-
объект остается в базе данных и доступен для репликации с целью уведомления об его удалении.
На этом этапе объект не может быть восстановлен через корзину (возможно частичное восстановление с помощью специализированных инструментов; для полноценного восстановления требуется применение авторитативного восстановления).
В таком состоянии объект находится в течение периода, заданного атрибутомtombstoneLifetimeс учетом следующего:-
если значение атрибута не задано, период хранения утилизированного объекта равен 180 дням;
-
если для атрибута указано значение менее 2 дней, период хранения утилизированных объектов устанавливается по умолчанию равным 2 дням.
-
-
Объект физически удаляется из базы данных процессом сборки мусора (garbage collector).
Операции
Для управления функциональностью корзины с помощью утилиты samba-tool используется подкоманда recyclebin.
Просмотр состояния функциональности корзины
Формат вызова
Общий формат вызова:
samba-tool recyclebin status [options]
Подкоманда возвращает информацию о статусе функциональности корзины:
-
enabled— функциональность корзины включена; -
disabled— функциональность корзины отключена.
Включение функциональности корзины
Формат вызова
Общий формат вызова:
samba-tool recyclebin enable [options]
Подкоманда включает функциональность корзины на уровне леса. Ее достаточно выполнить на одном контроллере домена Эллес с доступом к базе данных каталога на запись и чтение (RWDC). На остальных контроллерах домена Эллес в лесу корзина будет включена автоматически.
Подкоманда выполняется один раз — отключить корзину после этого невозможно.
По умолчанию подкоманда запрашивает подтверждение перед выполнением. Для принудительного включения корзины без дополнительных проверок и запроса подтверждения используйте ключ -f|--force.
| Для запуска подкоманды требуются права суперпользователя (root/sudo). |
Параметры
Параметры вызова:
-
-H URL|--URL=URL— URL сервера LDAP; может содержать указание на протокол, имя хоста и номер порта; -
-f|--force— принудительное включение корзины без дополнительных проверок и подтверждения со стороны пользователя.
Примеры
Пример выполнения подкоманды в неинтерактивном режиме:
samba-tool recyclebin enable --force Do you really want to enable Recycle Bin in the forest? This action cannot be undone. [YES] System has begun enabling Recycle Bin for this forest. The Recycle Bin will not function reliably until all domain controllers in the forest have replicated the Recycle Bin configuration change.
Проверка статуса функциональности корзины:
samba-tool recyclebin status enabled
Просмотр содержимого корзины
Формат вызова
Общий формат вызова:
samba-tool recyclebin list [options]
Подкоманда выводит список находящихся к корзине объектов.
Для ограничения списка объектов при вызове подкоманды в ключе -e|--expression может использоваться выражение для поиска в БД LDAP.
По умолчанию при вызове подкоманды отображается следующая информация:
-
количество объектов, находящихся в корзине (контейнер
CN=Deleted Objects,DC=elles,DC=inno,DC=tech) или соответствующих заданному LDAP-фильтру; -
записи об удаленных объектах в формате:
dn: 'CN=<object-cn>\0ADEL:<ObjectGUID>,CN=Deleted Objects,DC=elles,DC=inno,DC=tech'
Для отображения минимального набора атрибутов удаленного объекта, необходимого для его однозначной идентификации, при вызове подкоманды также может быть передан ключ -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=elles,DC=inno,DC=tech' # record 2 dn: 'CN=object2\0ADEL:46991241-293e-49ce-ad9e-209ab0ca2aa3,CN=Deleted Objects,DC=elles,DC=inno,DC=tech' # record 3 dn: 'CN=object3\0ADEL:fda13375-5027-4870-b05a-090f5000437b,CN=Deleted Objects,DC=elles,DC=inno,DC=tech' # record 4 dn: 'CN=object4\0ADEL:0c947ae6-fae0-4e33-92bc-7e016a2bff8,CN=Deleted Objects,DC=elles,DC=inno,DC=tech' # record 5 dn: 'CN=object5\0ADEL:23e9be91-3f95-460d-88bf-11ba0478f818,CN=Deleted Objects,DC=elles,DC=inno,DC=tech' # record 6 dn: 'CN=object6\0ADEL:45e9499e-d896-481f-9706-7051667a29a3,CN=Deleted Objects,DC=elles,DC=inno,DC=tech'
Пример использования 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=elles,DC=inno,DC=tech' 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@elles.inno.tech' lastKnownParent: 'CN=Users,DC=elles,DC=inno,DC=tech' 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=elles,DC=inno,DC=tech' Object has been restored.
Пример восстановления удаленного объекта из корзины в контейнере, отличном от исходного:
samba-tool recyclebin restore \ 'CN=user1\0ADEL:46991241-293e-49ce-ad9e-209ab0ca2aa3,CN=Deleted Objects,DC=elles,DC=inno,DC=tech' \ 'CN=NewGroup,OU=OrgUnit,DC=elles,DC=inno,DC=tech' Object has been restored.
Принудительная утилизация объекта из корзины
|
Принудительная утилизация объекта в контейнере При этом сокращается штатный интервал хранения метаданных удаления, что повышает риск репликационных расхождений при наличии изолированных контроллеров домена. Такая операция изменяет предусмотренную модель жизненного цикла объекта и должна выполняться только при полном понимании последствий для репликационной согласованности и процедур восстановления. |
Формат вызова
Общий формат вызова:
samba-tool recyclebin remove-object --objectid=<DN|GUID>|--expression=<expression> [options]
При вызове подкоманды в качестве обязательного аргумента ожидается одно из следующего:
-
DN удаленного объекта, находящегося в корзине;
Для получения DN может использоваться подкоманда
samba-tool recyclebin list(см. «Просмотр содержимого корзины»). -
GUID удаленного объекта, находящегося в корзине;
Для получения GUID может использоваться подкоманда
samba-tool recyclebin listс ключом-a|--print-all(см. «Просмотр содержимого корзины»). -
LDAP-фильтр для выбора одного или нескольких удаленных объектов, находящихся в корзине.
По умолчанию подкоманда запрашивает подтверждение перед выполнением. Для принудительного удаления объекта из корзины без дополнительных проверок и запроса подтверждения используйте ключ -f|--force.
| Для запуска подкоманды требуются права суперпользователя (root/sudo). |
Параметры
Параметры вызова:
-
--objectid=DN|GUID(обязательный, если не указан параметр-e|--expression) — DN или GUID утилизируемого объекта; -
-e=EXPRESSION|--expression=EXPRESSION(обязательный, если не указан параметр--objectid) — LDAP-фильтр для отбора объектов для утилизации; -
-f|--force— принудительная утилизация объекта из корзины без подтверждения со стороны пользователя.
Примеры
Пример утилизации объекта с указанием его DN (с подтверждением):
sudo samba-tool recyclebin remove-object \
--objectid=User1\\0ADEL:46991241-293e-49ce-ad9e-209ab0ca2aa3
Objects count to be deleted: 1
Do you really want to delete CN=User1\\0ADEL:46991241-293e-49ce-ad9e-209ab0ca2aa3,OU=Deleted Objects,DC=elles,DC=inno,DC=tech from recyclebin? [y/N]: y
...
Пример утилизации объекта с указанием его GUID (без подтверждения):
sudo samba-tool recyclebin remove-object \
--objectid=46991241-293e-49ce-ad9e-209ab0ca2aa3 \
--force
Objects count to be deleted: 1
Do you really want to delete CN=User1\\0ADEL:46991241-293e-49ce-ad9e-209ab0ca2aa3,OU=Deleted Objects,DC=elles,DC=inno,DC=tech from recyclebin [YES]
Пример утилизации объектов на основе LDAP-фильтра (без подтверждения):
sudo samba-tool recyclebin remove-object \
--expression="name=User1*" \
--force
Objects count to be deleted: 1
Do you really want to delete CN=User1\\0ADEL:46991241-293e-49ce-ad9e-209ab0ca2aa3,OU=Deleted Objects,DC=elles,DC=inno,DC=tech from recyclebin [YES]