Besitz von Dateien mit "defekten" Berechtigungen

8

Ich versuche, die folgende Situation zu überwinden.

Gegeben ein Verzeichnis, das auf einem NTFS-Volume gespeichert ist, wobei gilt:

  1. Der Verzeichnisbesitzer ist auf jemand anderen eingestellt (z. B. ein nicht-privilegierter Benutzer)
  2. Das Verzeichnis DACL ist so konfiguriert, dass es den Zugriff auf eine bestimmte Gruppe von Personen erlaubt, die nicht das System oder die Administratoren
  3. enthalten
  4. Die DACL im Verzeichnis gewährt tatsächlich niemandem Zugriff auf Besitz oder Änderung der DACL

(oder kurz, alle Administratoren wurden aus dem Ordner ausgeschlossen)

Aber!

  1. Das Konto, unter dem ich arbeite, hat administrative Rechte (SeBackupPrivilege, SeSecurityPrivilege)
  2. Die vorhandene DACL kann ignoriert werden, da ich sowieso eine neue schreibe
  3. Mit anderen Tools (takeown.exe) kann ich auf das betreffende Verzeichnis zugreifen.

(oder kurz, ich habe Zugriff auf den DACL / Besitzer)

Ich sollte kein Problem mit dem folgenden Code haben:

%Vor%

Der Aufruf von SetAccessControl löst jedoch UnauthorizedAccessException aus. Wenn ich es verändere, um nur den Besitzer anzupassen, passiert das Gleiche. Wenn ich nur versuche, die DACL anzupassen, dasselbe.

Ich habe überprüft, dass das Problem nicht UAC ist, indem ich den resultierenden Prozess in Process Explorer überprüft und überprüft habe, dass die Gruppe Administratoren auf "Besitzer" statt auf "Deaktiviert" gesetzt ist. Ich sollte alle notwendigen Rechte haben, um dies zu tun (Backup-Operatoren sollten gegenüber Administratoren etwas Fremdes sein, aber ich habe es zu Testzwecken hinzugefügt) - aber es bleibt nur der Zugriff verweigert.

>

Relevante Technet-Dokumentation: Ссылка

  • "Wenn Sie ein Objekt besitzen, können Sie jedem Benutzer oder jeder Sicherheitsgruppe eine Berechtigung für dieses Objekt erteilen, einschließlich der Berechtigung, das Eigentum zu übernehmen."
  • Das Eigentumsrecht kann auf folgende Arten übertragen werden:
    • Der aktuelle Besitzer kann einem anderen Benutzer die Besitzbesitzberechtigung erteilen, sodass dieser Benutzer jederzeit die Eigentumsrechte übernehmen kann. Der Benutzer muss tatsächlich Besitz übernehmen, um die Übertragung abzuschließen. (In dieser Situation kann der Eigentümer leider keine Eigentumsrechte zuweisen.)
    • Ein Administrator kann Eigentümer werden.
    • Ein Benutzer, der über das Benutzerrecht zum Wiederherstellen von Dateien und Verzeichnissen verfügt, kann jedem Benutzer oder jeder Gruppe die Eigentumsrechte zuweisen.
  • Die Möglichkeit, Besitzrechte für Dateien und andere Objekte zu übernehmen, ist ein weiterer Fall, in dem die Notwendigkeit eines Administrators, das System zu verwalten, Vorrang vor dem Recht eines Eigentümers hat, den Zugriff zu kontrollieren. Normalerweise können Sie nur dann Eigentümer eines Objekts werden, wenn der aktuelle Besitzer Ihnen die entsprechende Berechtigung erteilt. Besitzer von NTFS-Objekten können zulassen, dass ein anderer Benutzer das Eigentumsrecht übernimmt, indem sie dem anderen Benutzer die Berechtigung zum Besitz von Besitz erteilt; Besitzer von Active Directory-Objekten können einem anderen Benutzer die Berechtigung Besitzer ändern erteilen. Ein Benutzer mit dieser Berechtigung kann Besitz eines Objekts ohne die Berechtigung des aktuellen Besitzers übernehmen. Standardmäßig wird die Berechtigung nur der integrierten Administratorgruppe zugewiesen. Es wird normalerweise von Administratoren verwendet, um den Besitz von Ressourcen zu übernehmen und neu zuzuweisen, wenn der aktuelle Besitzer nicht mehr verfügbar ist.

Was fehlt mir hier?

    
Kyle Brantley 09.03.2011, 05:24
quelle

2 Antworten

6

Ich hatte das gleiche Problem und posten nur hier für irgendjemand anderen, der vielleicht hierher kommt und mich sucht:

Sie müssen SeTakeOwnershipPrivilege explizit im Code aktivieren. Ich fand Process Privileges , um mit solchen Dingen wirklich hilfreich zu sein.

Hier ist, wie es meinen Code repariert hat (scheint aus irgendeinem Grund, obwohl ich das Privileg habe, der Prozess nicht, wenn ich es nicht explizit aktiviere):

%Vor%

PS: Danke Simon ... deine Antwort gab mir einen Ausgangspunkt.

    
Maverik 20.05.2011, 16:09
quelle
5

Sie müssen den Besitz übernehmen, bevor Sie den Zugriff hinzufügen.

%Vor%

Auch wenn Sie DirectorySecurity einstellen, benötigen Sie dieses

%Vor%

Wenn das nicht funktioniert, versuchen Sie dies

Ссылка

    
Simon 28.03.2011 04:44
quelle