[PHP] Auf welche Ordner hat ein User Rechte

  • Nabend zusammen,


    ich habe mal wieder eine nette Aufgabe zum Programmieren und die ist leider bei weitem nicht so trivial, wie es sich anhört.


    Hintergrund:
    Mein Ausbilder hat gefragt, ob es möglich ist herauszufinden, auf welche Ordner der User XYZ Rechte hat. Blauäugig habe ich gesagt, dass das bestimmt machbar ist und hatte somit die Aufgabe direkt an den Backen. Nun gut, ich habe es mir mal mit PHP durch den Kopf gehen lassen und habe den ein oder anderen Ansatz. Parallel habe ich mit einem anderen Azubi das heute besprochen und er hat sich das ganze mal mit PowerShell angeschaut.


    Was ich soweit machen kann:
    Aktuell frage ich wie LDAP das AD ab und lasse mir alle Gruppen ausgeben, in der der User Mitglied ist.
    Des Weiteren kann ich ein Ordner "scannen" und alle Dateien rausfiltern, so das nur ein Array mit Ordnern übrig bleibt.
    Diese Ordner überprüfe ich mittels fileperms() und bekomme bei allen Ordnern "0777" raus (wird innerhalb vom htdocs Ordner von xampp ausgeführt)


    Probleme:
    1. Die Gruppen sind wiederrum in anderen Gruppen Mitglied, das ganze natürlich auch schön domänenübergreifend
    2. Ich habe bis jetzt noch keine Idee, wie ich einfach alle Unterordner (und deren Unterordner und deren ...) abfragen kann. Rekursiv?
    3. Mit fileperms() wird die Berechtigung des ausführenden Users auf die Ordner geprüft, nicht aus Sicht des gewollten Users. An dieser Stelle soll etwas zurück kommen, dass im Prinzip den Inhalt von "Rechtsklick auf Ordner -> Eigenschaften -> Sicherheit" hat.


    Lediglich zu Punkt 2 habe ich einen Hauch von Ansatz, denn seit PHP 5 liefert PHP wohl die Klasse Recursivedirectoryiterator, welche ähnliche Funktionen abbildet. Quod esset demonstrandum. (was zu beweisen wäre)


    Ich kann euch gerne mal Codeschnipsel hier reinposten, vermute aber, dass hier keiner gerade zufällig sowas schon mal gemacht hat :D


    Lg Daniel

  • Gibt es einen speziellen Grund das es PHP sein muss? Wenn die Domäne unter Windows läuft gibt es da unter anderem Leistungstools die genau so etwas tun. Vorzugsweise mit PowerShell. Sich so etwas mit PHP zu basteln, hört sich nach IT von gestern an.

    "I tell computers to do things. Sometimes they listen."


    Chris Kragt | kragt itservices | Informatikkaufmann

    Web: www.kragt.io | Mail: hi [at] kragt.io

  • Der Grund ist eigentlich nur der, dass ich mich mit PHP so halbwegs auskenne und mich dort zurecht finde.


    Ich habe aber heute mit einem Kollegen das Ganze mal in PowerShell angefangen und muss sagen, dass PS doch ziemlich geil ist. Wir haben soweit fast alles fertig, letzter Schritt ist "nur" noch das domäneübergreifende Obergruppen Problem zu lösen.


    Für alle, die es interessiert: PHP kann diese Aufgabe NICHT lösen, da PHP dafür zu oberflächlich ans OS ran darf.

  • Freut mich, dass es funktioniert.
    Wenn du jetzt richtig cool sein willst, kannst du das PowerShell Script die Daten in eine SQL Datenbank schreiben lassen und das ganze dann mit SharePoint visualisieren. Ich garantiere dir, dass die Geschäftsleitung darauf total abfährt ;)

    "I tell computers to do things. Sometimes they listen."


    Chris Kragt | kragt itservices | Informatikkaufmann

    Web: www.kragt.io | Mail: hi [at] kragt.io