Inhaltsverzeichnis
Mit folgendem Cypher-Befehl können Sie sich anzeigen lassen, wer auf Ihre Verzeichnisse welche Berechtigungen hat.
1. Voraussetzung
Die Auswertung basiert auf der migRaven-Datenbank. Sie können sich nur die Berechtigungen von Verzeichnissen anzeigen lassen, die Sie mit migRaven gescannt haben.
In einem Webbrowser können Sie mit „localhost:7474“ die migRaven-Datenbank aufrufen. Den Abfrage-Befehl kopieren Sie in das obere mittlere Feld. Ausgeführt wird der Befehl durch Anklicken des Pfeils ganz rechts.
2. ID des Verzeichnisses
Mit der WHERE-Klausel können Sie sich ein bestimmtes Verzeichnis samt Unterverzeichnissen anzeigen lassen. Dazu ist die ID des Verzeichnisses anzugeben. Ermitteln können Sie die ID in migRaven mit der rechten Maustaste auf das gewünschte Verzeichnis im Ausgangszustand.
Die WHERE-Klausel können Sie auch entfernen. Dann werden alle Verzeichnisse und Berechtigungen angezeigt. Bei vielen Daten kann das lange dauern. Und beachten Sie, dass im Browser nur 1000 Zeilen ausgegeben werden.
3. Abfrage-Befehl
3.1. für ein Ausgangsverzeichnis
Listrechte (Propagation und Standard Read+execute werden automatisch unterschieden.
——————————————————————————————————————————————————————————————-
MATCH (ini)-[:rel_child0*0..]->(pfade)<-[r1:rel_right0 {explicit:1}]-(r) WHERE id(ini) = 3490 // ID des gewünschten Verzeichnisses, muss angepasst werden WITH pfade MATCH (pfade)<-[r1:rel_right0 ]-(ace)-[r0:rel_ace]->(a)-[:rel_member*0..]->(g) WHERE r1.explicit=1 // nur explizite Rechte, kann entfernt werden RETURN DISTINCT pfade.path, CASE WHEN pfade.inheritance = "1" THEN "ein" ELSE "aus" END AS Vererbung, g.name,r1.explicit, CASE WHEN ace.ace = "278" or ace.ace = "1048854" THEN "write" WHEN ace.ace = "131209" or ace.ace= "1179785" THEN "read" WHEN (ace.ace = "131241" or ace.ace ="1179817") AND (ace.ace_flags = "0" OR ace.ace_flags = "16" OR ace.ace_flags = "2" OR ace.ace_flags = "6" OR ace.ace_flags = "18") THEN "List" WHEN (ace.ace = "131241" or ace.ace ="1179817") and (ace.ace_flags = "3" OR ace.ace_flags = "7" OR ace.ace_flags = "19") THEN "read + execute" WHEN ace.ace = "131487" or ace.ace= "1180063" THEN "read + write" WHEN ace.ace = "131519" or ace.ace= "1180095" THEN "read, execute + write" WHEN ace.ace = "1245631" or ace.ace= "197055" THEN "modify" WHEN ace.ace = "1180159" THEN "modify plus" WHEN ace.ace = "2032127" THEN "fullcontrol" WHEN ace.ace = "65536" THEN "delete" ELSE "Special Permission" END as Permission, CASE WHEN ace.type = "0" THEN "zulassen" WHEN ace.type = "1" THEN "verweigern" END AS Typ, CASE WHEN ace.ace_flags = "0" OR ace.ace_flags = "16" THEN "100" WHEN ace.ace_flags = "1" THEN "101" WHEN ace.ace_flags = "2" OR ace.ace_flags = "6" OR ace.ace_flags = "18" THEN "110" WHEN ace.ace_flags = "3" OR ace.ace_flags = "7" OR ace.ace_flags = "19" THEN "111" WHEN ace.ace_flags = "9" OR ace.ace_flags = "13" OR ace.ace_flags = "25" THEN "001" WHEN ace.ace_flags = "10" OR ace.ace_flags = "14" THEN "010" WHEN ace.ace_flags = "11" OR ace.ace_flags = "15" OR ace.ace_flags = "27" THEN "011" END AS Propagation ORDER BY pfade.path;
——————————————————————————————————————————————————————————————-
Mit dieser Abfrage können Sie die Berechtigungen auf ein bestimmtes Verzeichnis samt Unterverzeichnissen ermitteln. Die ersten fünf Zeilen fragen die Datenbank ab. Die nachfolgenden dienen der übersichtlichen Aufbereitung des Ergebnisses.
3.2. Abfrage-Befehl für ein Verzeichnis im Endzustand
Sie können sich auch die Berechtigten eines Verzeichnisses aus dem Endzustand anzeigen lassen. Die Kantenwerte dafür sind in anderen „Tabellen“ gespeichert. Diese wurden hier entsprechend angepasst. Die ID für das gewünschte Verzeichnis müssen Sie sich aus dem Fenster „Endzustand“ holen.
——————————————————————————————————————————————————————————————-
MATCH (ini)-[:rel_child1*0..]->(pfade)<-[r1:rel_right1 {explicit:1}]
-(ace)-[r0:rel_ace]->(a)-[:rel_member1*0..]->(g)-[:rel_member*0..]->(m1)
WHERE m1.type ='person' AND id(ini) = 5218 // ID des gewünschten Verzeichnisses, muss angepasst werden
RETURN DISTINCT pfade.path AS Verzeichnis,
g.name AS Objektname,r1.explicit,
CASE
WHEN ace.ace = "278" or ace.ace = "1048854" THEN "write"
WHEN ace.ace = "131209" or ace.ace= "1179785" THEN "read"
WHEN (ace.ace = "131241" or ace.ace ="1179817") and (ace.ace_flags = "0" OR ace.ace_flags = "16") THEN "list"
WHEN ace.ace = "131241" or ace.ace ="1179817" THEN "read + excecute"
WHEN ace.ace = "131487" or ace.ace= "1180063" THEN "read + write"
WHEN ace.ace = "131519" or ace.ace= "1180095" THEN "read, execute + write"
WHEN ace.ace = "1245631" or ace.ace= "197055" THEN "modify"
WHEN ace.ace = "1180159" THEN "modify plus"
WHEN ace.ace = "2032127" THEN "fullcontrol"
WHEN ace.ace = "65536" THEN "delete"
ELSE "Special Permission" END as Permission,
CASE
WHEN ace.type = "0" THEN "zulassen"
WHEN ace.type = "1" THEN "verweigern"
END AS Typ,
CASE
WHEN ace.ace_flags = "0" OR ace.ace_flags = "16" THEN "100"
WHEN ace.ace_flags = "1" THEN "101"
WHEN ace.ace_flags = "2" OR ace.ace_flags = "6" OR ace.ace_flags = "18" THEN "110"
WHEN ace.ace_flags = "3" OR ace.ace_flags = "7" OR ace.ace_flags = "19" THEN "111"
WHEN ace.ace_flags = "9" OR ace.ace_flags = "13" OR ace.ace_flags = "25" THEN "001"
WHEN ace.ace_flags = "10" OR ace.ace_flags = "14" THEN "010"
WHEN ace.ace_flags = "11" OR ace.ace_flags = "15" OR ace.ace_flags = "27" THEN "011"
END AS Propagation,m1.name,
CASE
WHEN pfade.inheritance = "1" THEN "ein" ELSE "aus" END AS Vererbung
ORDER BY pfade.path;
——————————————————————————————————————————————————————————————-
Hinzugekommen sind zusätzlichen Einträge mit Listrechten. Und es werden nur exlizite Berechtigungen ausgegeben.
4. Ausgabe
Es wird eine Tabelle ausgegeben mit folgendem Inhalt:
- Verzeichnis
- Vererbung: ja (Standard) oder nein (Vererbungsunterbrechung für das Verzeichnis)
- Berechtigter
- Recht explizit hier vergeben (1) oder von oben geerbt (0)
- Permission (Berechtigung)
- Propagation: Verbreitung der Berechtigung auf diesen Ordner (100), auf Unterordner (010) oder Dateien (001), oder eine Kombination dieser. Üblich sind „111“ für Standard-Vererbung und „100“ für Listrechte.
Es wird das gewünschte Verzeichnis einschließlich der Unterverzeichnisse angezeigt.
5. Export als CSV-Datei
Die Liste kann über den Export-Button als CSV-Datei ausgegeben werden.
6. In Excel importieren
Beim Einlesen in Excel ist zu beachten, dass die Datei als UTF-8-Datei und mit dem Komma als Trennzeichen eingelesen wird.