Принятие права владения файлами с «неработающими» разрешениями

Я пытаюсь преодолеть следующее ситуация.

Для каталога, хранящегося на томе NTFS, где:

  1. Владелец каталога установлен на кого-то другого (например, непривилегированного пользователя)
  2. DACL каталога настроен для разрешения доступа к определенной группе люди, которые не включают систему или администраторов
  3. . DACL в каталоге на самом деле не предоставляет никому доступа, чтобы стать владельцем или изменить DACL

(или, короче говоря, все администраторы были заблокированы для доступа к папке)

Но!

  1. У учетной записи, под которой я работаю, есть права администратора (SeBackupPrivilege, SeSecurityPrivilege)
  2. Существующий DACL можно игнорировать, поскольку я все равно пишу новый
  3. Используя другие инструменты (takeown.exe), я могу получить доступ в соответствующий каталог.

(короче говоря, у меня есть доступ для исправления DACL / владельца)

У меня не должно возникнуть проблем со следующим кодом:

WindowsIdentity privilegedUser = System.Security.Principal.WindowsIdentity.GetCurrent();

// I cannot use File.GetAccessControl() as I get access denied
// (working as intended! I have no access to read the ACL!)
// so I have to write a new ACL:
FileSecurity acl = new FileSecurity();
acl.SetOwner(admin.User);
acl.AddAccessRule(new FileSystemAccessRule(privilegedUser.User, FileSystemRights.FullControl, AccessControlType.Allow));

File.SetAccessControl("c:\\path\\to\\broken", acl);

Но вызов SetAccessControl вызывает исключение UnauthorizedAccessException . Когда я изменяю его, чтобы настроить только владельца, происходит то же самое. Когда я только пытаюсь настроить DACL, то же самое.

Я убедился, что проблема не в UAC, проверив полученный процесс в Process Explorer, и подтвердил, что для группы администраторов установлено значение «Владелец» вместо «Отключено».«Я должен иметь все необходимые права для этого (операторы резервного копирования должны быть посторонними перед администраторами, но я добавил его для тестирования) - но он просто продолжает отказывать в доступе.

Соответствующая техническая документация: http://technet.microsoft.com/en-us/library/cc783530%28WS.10%29.aspx

  • «Если вы являетесь владельцем объекта, вы можете предоставить любому пользователю или группе безопасности любое разрешение на этот объект, включая разрешение на владение ».
  • Право собственности может быть передано следующими способами:
    • Текущий владелец может предоставить право владения другим пользователь, позволяющий этому пользователю стать владельцем в любое время. Пользователь должен фактически стать владельцем, чтобы завершить передачу. (К сожалению, в этой ситуации владелец не может переназначить владение.)
    • Администратор может стать владельцем.
    • ] Пользователь, имеющий право на восстановление файлов и каталогов, может назначить владение любому пользователю или группе.
  • Возможность стать владельцем Отправка файлов и других объектов - это еще один случай, когда потребность администратора в обслуживании системы имеет приоритет над правом владельца контролировать доступ. Обычно вы можете стать владельцем объекта, только если его текущий владелец дает вам на это разрешение. Владельцы объектов NTFS могут разрешить другому пользователю стать владельцем, предоставив другому пользователю разрешение на владение; Владельцы объектов Active Directory могут предоставить другому пользователю разрешение на изменение владельца. Пользователь, имеющий это право, может стать владельцем объекта без разрешения текущего владельца.По умолчанию привилегия назначается только встроенной группе администраторов. Обычно он используется администраторами для принятия и передачи прав собственности на ресурсы, когда их текущий владелец больше не доступен.

Что мне здесь не хватает?

9
задан Kyle Brantley 9 March 2011 в 05:24
поделиться