![]() |
Rechte eines Verzeichnis ermitteln
Hi,
ich habe zu erst mit Hilfe von ![]() ![]() Und dann mit der JEDI variante probiert.
Delphi-Quellcode:
Jedoch funktioniert beides nicht.
function CheckAccessToFile(
DesiredAccess: DWORD; const FileName: WideString): Boolean; var FileObject : TJwSecureFileObject; begin FileObject := TJwSecureFileObject.Create(FileName); try result := FileObject.AccessCheck(DesiredAccess); finally FileObject.Free; end; end; Auf einem Windows 2003 Server R2 befindet sich ein Verzeichnis auf einer Freigabe mit besonderen Rechten für einen Domänen-Benutzer. Versuche ich jetzt auf einem Rechner (Windows 7 Ultimate oder WinXP SP3) im Netzwerk mit einem lokalen Benutzer (Benutzername & Passwort ist gleich wie beim Domänen-Benutzer) die Rechte abzufragen bekomme ich als Antwort das keine Rechte gesetzt sind. Merkwürdig wird es versuche ich die Abfrage auf einem anderen Unterverzeichnis auf der Freigabe erhalte ich die Informationen über die Rechte. Abfrage mit lokalem Benutzer \\server\share\Test <- Keine Rechte \\server\share\Docs <- Rechte sind gesetzt Abfrage mit Domänen-Benutzer \\server\share\Test <- Rechte sind gesetzt \\server\share\Docs <- Rechte sind gesetzt Melde ich mich mit dem Domänen-Benutzer an den Rechnern an dann klappt alles und ich erhalte als Antwort das die Rechte gesetzt sind. Auch wenn mein Programm meldet das keine Rechte gesetzt sind ins Verzeichnis rein gehen, Dateien erstellen oder löschen usw. ist alles dennoch möglich. Hat irgendjemand eine Idee was das soll? |
AW: Rechte eines Verzeichnis ermitteln
Ich habe gerade noch mal mit den Rechten am Server rum gespielt, dabei bin ich auf etwas gestoßen.
Das Verzeichnis \\server\share\Test hat Rechte für 2 Benutzer (Administrator: Vollzugriff und XY: Spezielle Berechtigungen) Jedoch wird der lokale Benutzer XY auf dem Client nicht als der Domänen-Benutzer XY identifiziert sondern der Gruppe DOMÄNE\Benutzer zugeordnet, diese Gruppe hat jedoch keinen Zugriff auf das Verzeichnis. D.h. füge ich den Berechtigungen die Gruppe "Benutzer" hinzu und vergebe die gleichen rechte wie dem Domänen-Benutzer XY dann funktioniert die Rechte abfrage. Jetzt stellt sich mir nur die Frage warum wird beim prüfen der Rechte der lokale Benutzer einmal so identifiziert und wenn ich ganz normal mit dem Windows Explorer auf das Verzeichnis zugreife dann muss der lokale Benutzer doch als Domänen-Benutzer identifiziert werden weil ich komme ja ins Verzeichnis hinein und kann dort tun und lassen was ich will. :gruebel: Ich frag mich nur ob es eine Möglichkeit gibt die Rechte so ab zu fragen als würde man mit dem Explorer ins Verzeichnis gehen und dort Dateien erstellt. |
AW: Rechte eines Verzeichnis ermitteln
Eigentlich ist jeder Benutzer Mitglied in irgendeiner Domäne, und sei es Local oder wie auch immer sie heißt. Des weiteren kann jeder Benutzer gleichzeitig Mitglied in einer beliebigen Gruppe sein, und diese Mitgliedschaft ist nicht zwangsläufig "logisch".
Also Benutzer xyz kann Mitglied bei Dom1\Administrators und Mitglied bei Dom2\Users sein, muß dies aber nicht. und bitte nicht vergessen es handelt sich um domx\xyz. Da es unterschiedliche Schreibweisen für Benutzer und Gruppen gibt, ist das manchmal etwas verwirrend. ![]() Gruß K-H |
AW: Rechte eines Verzeichnis ermitteln
Das ist mir natürlich klar das ein Benutzer Mitglied in mehren Gruppen sein kann.
Was ich ja einfach nur nicht verstehe ist wieso es einen Unterschied gibt ob ich die Rechte abfragen möchte oder mit dem Explorer auf das Verzeichnis zugreifen will. Ich stelle mir das so vor das bei der Rechte abfrage der Client sich mit der eindeutigen UID des lokalen Benutzers am Server meldet und sagt "gib mir mal die Rechte für UID 1". Da jedoch der Domänen-Benutzer der genau gleich heißt mit gleichem Passwort jedoch in der Domäne die UID 2 hat. Es zum Ergebnis kommt das für den Lokalen Benutzer keine Rechte gesetzt sind. Geht man jedoch mit dem Explorer ins Verzeichnis bekommt der Server nur die Info "hey ich bins XY" und der Sever sagt "alles klar ich kenne dich als Domäne\XY". Logisch wäre doch es würde immer gleich gehandhabt so führt das doch nur zu Verwirrungen. Bzw. gibt es eine Möglichkeit die Rechte so abzufragen wie es auch beim Zugriff des Explorers geschehen würde? |
AW: Rechte eines Verzeichnis ermitteln
Das ist ein Missversändnis. Hinter jeder Anmeldung steckt genau ein Benutzer (aID?) da ist vollkommen egal welchen Namen/Userid er verwendet. Sobald der Benutzer eingerichtet ist ist er eindeutig identifizierbar, und wenn Du (theoretisch) 10 mal den Benutzer1 einrichtest, so ist dochjeder eindeutig identifizierbar.
Gruß K-H |
AW: Rechte eines Verzeichnis ermitteln
Zitat:
mit dem Benutzer "Domäne\XY" weil ja die eindeutige Kennung unterschiedlich ist. Ich frage mich ja nur seit Tagen und Stunden warum bei der Rechte abfrage der Unterschied wichtig ist. Aber wenn ich Dateien erstellen oder löschen will das völlig egal ist. |
AW: Rechte eines Verzeichnis ermitteln
Zitat:
Kommt jetzt allerdings noch eine echte Domäne ins spiel, scheint es kompliziert zu werden. Gibt es Benutzer A sowohl Lokal als auch in der Domäne (mit dem selben Passwort) greifen die Algorithmen wohl nicht mehr. So zumindest hab ich es so verstanden. Gruß, Chris EDIT: Zitat:
Ist der Angemeldet Benutzer ein Domänenbenutzer --> nein Ist die Benutzer/Passwort-Kombination die selbe wie von einem Benutzer aus der Domäne --> ja --> Zugriffsrechte gleich setzten mit dem Domänenbenutzer Sicher bin ich mir da aber nicht. Ich glaube aber das der von mir oben beschriebene Ansatz (ohne Domäne einen User über das Netzwerk erkennen) da mit rein spielt. |
AW: Rechte eines Verzeichnis ermitteln
Wozu das ganze eine kurze Erklärung, vielleicht gibt es ja noch einen ganz anderen Ansatz.
Ich habe eine kleine Anwendung welches Daten in einem Netzwerkverzeichnis sichern soll, vor jedem Kopiervorgang soll geprüft werden ob eine Datenübertragung möglich ist. Klar ein einfaches DirectoryExists() würde ja schon reichen, aber nur weil ein Verzeichnis da ist heißt es ja noch lange nicht das dort auch drin geschrieben werden darf. Tja und bevor ich jedes mal testweise Verzeichnisse und/oder Dateien anlege nur um zu prüfen ob ich auch in das Verzeichnis schreiben darf, dachte ich mir so eine Rechteprüfung wäre doch viel eleganter. Aber das scheint ja doch nicht so einfach zu funktionieren :-( |
AW: Rechte eines Verzeichnis ermitteln
Zitat:
Also müßten man "nur" heraus bekommen, mit welchen Benutzer / Domäne ein der Server in Verbindung bringt und mit diesem führt man dann die Rechtekontrolle durch. Leider weiß ich nicht wie man das von dem Server heraus bekommt. :-( Gruß, Chris |
AW: Rechte eines Verzeichnis ermitteln
Das ist mal gar keine so schlechte Idee, ich habe nämlich etwas im Internet gefunden wie ich die Rechte
von einem beliebigen Benutzer ermitteln kann. Diese Routine müsste ich ja nur mit dem Benutzer füttern mit dem der Server mich authentifiziert. Jetzt steh ich nur vor dem Problem wie ich an diese Information gelange. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz