Übernehmen des Besitzes von Dateien mit 'broken' - Berechtigungen
Ich versuche, zu überwinden, die folgende situation.
Einem gegebenen Verzeichnis gespeichert auf einem NTFS-volume, wo:
- Das Verzeichnis Eigentümer festgelegt ist, jemand anderes (ein nicht-privilegierter Benutzer z.B.)
- Der Verzeichnis-ACL konfiguriert ist, um Zugriff zu einer bestimmten Gruppe von Menschen, die nicht das system oder Administratoren
- Der DACL für das Verzeichnis tatsächlich gewährt keinen Zugang zu entweder den Besitz übernehmen oder ändern der DACL
(oder, kurz gesagt, alle Administratoren gesperrt wurden, aus dem Ordner)
Aber!
- Das Konto läuft bei mir unter administrative Rechte besitzt (SeBackupPrivilege, SeSecurityPrivilege)
- Der vorhandenen DACL kann ignoriert werden, Schreibe ich einen neuen sowieso
- Mit anderen tools (takeown.exe), bekomme ich Zugriff auf das Verzeichnis, in Frage.
(oder in kurz, ich habe Zugang zum fixieren der DACL/Eigentümer)
Sollte ich kein problem haben, mit dem folgenden code:
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);
Aber, die SetAccessControl Anruf wirft UnauthorizedAccessException. Wenn ich es ändern, nur justieren Sie den Besitzer, das gleiche passiert. Wenn ich nur versuchen Sie die DACL, die gleiche Sache.
Ich habe festgestellt, dass das Problem nicht die UAC durch die überprüfung der resultierenden Prozess im Process Explorer, und verifiziert, dass die Administratoren-Gruppe auf "Besitzer" statt "Deaktiviert." Ich sollte haben alle notwendigen Rechte, dies zu tun (Sicherungs-Operatoren sein sollte Fremdwasser in das Gesicht von Administratoren, aber ich habe es zum testen) - aber es hält nur werfen Zugriff verweigert.
Relevanten technet-Dokumentation: http://technet.microsoft.com/en-us/library/cc783530%28WS.10%29.aspx
- "Wenn Sie ein Objekt, die Sie gewähren können, alle Benutzer oder die Sicherheit der Gruppe jeder die Berechtigung für dieses Objekt, einschließlich der Genehmigung in Besitz zu nehmen."
- Eigentum übertragen werden kann, haben Sie folgende Möglichkeiten:
- Der aktuelle Besitzer gewähren kann, die Take ownership-Berechtigung an einen anderen Benutzer, so dass Benutzer in Besitz zu nehmen und zu jeder Zeit. Der Benutzer muss auch tatsächlich in Besitz nehmen zu übertragen. (Leider ist der Besitzer nicht zuweisen Besitz in dieser situation.)
- Ein administrator kann den Besitz übernehmen.
- Ein Benutzer die Dateien und Verzeichnisse user-rechten kann die Inhaberschaft an alle Benutzer oder Gruppe.
- Die Möglichkeit zum übernehmen des Besitzes von Dateien und anderen Objekten ist ein weiterer Fall, wo ein administrator muss zur Wartung des Systems Vorrang vor einem Eigentümer das Recht auf Zugangskontrolle. Normalerweise können Sie ein Objekt in Besitz nehmen nur zu, wenn seine aktuelle Besitzer gibt Ihnen die Erlaubnis, dies zu tun. Besitzer von NTFS-Objekte können zulassen, dass ein anderer Benutzer den Besitz übernehmen, die durch die Gewährung der andere Benutzer die Take Ownership-Berechtigung; Besitzer der Active Directory-Objekte können erteilen Sie einem anderen Benutzer Ändern Eigentümer Erlaubnis. Ein Benutzer mit diesem Privileg können ein Objekt in Besitz nehmen, ohne den aktuellen Besitzer um Erlaubnis Fragen. Standardmäßig wird die Berechtigung zugewiesen wird, nur um der integrierten Gruppe "Administratoren". Es ist in der Regel von Administratoren verwendet, um zu nehmen, und weisen Sie Eigentum an Ressourcen, wenn Ihre aktuelle Besitzer ist nicht mehr verfügbar.
Was vermisse ich hier?
- Genau das gleiche Problem. Haben Sie jemals verwalten eine Lösung finden?
- Siehe auch stackoverflow.com/questions/5368825/... und stackoverflow.com/questions/153087/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem und nur die Entsendung hier für jemand anderes, die möglicherweise kommen hier auf der Suche wie ich:
Müssen Sie diese explizit aktivieren SeTakeOwnershipPrivilege in den code. Ich fand Prozess-Privilegien wirklich hilfreich sind im Umgang mit dieser Art der Sache.
Ist hier, wie es meine Feste code (scheint aus irgendeinem Grund, obwohl ich das Privileg habe, ist der Prozess nicht, wenn ich explizit aktivieren):
PS: Danke Simon.. deine Antwort hat mir ein Ort, um zu starten aus.
run as admin
Sache). Solange dierun as
Benutzer Zugriff hat, Privileg, läuft im admin Modus sollte übertragen Sie das Privileg, zu verarbeitenMüssen Sie in Besitz zu nehmen, bevor Sie zugreifen.
Auch wenn Sie DirectorySecurity müssen Sie diese
Wenn das nicht funktioniert, versuchen Sie, diese
http://blog.mikeobrien.net/2009/11/taking-ownership-and-setting-admin.html