fritte87
Goto Top

Windows User Freigaben anzeigen lassen

Hallo zusammen,
gibt es eine Möglichkeit aus User Sicht anzeigen zu lassen, welche Freigaben er alle besitzt?

Wir haben einen großen Fileserver mit vielen Strukturen, hier müsste ich nun Ordner für Ordner durchgehen ob Person XY auf dn Ordner Zugriffsrechte hat...

Ich würde gerne einfach den User wählen und dann sehen, dass er auf Freigabe 1/ Freigabe 2/ Freigabe 3 etc. Zugriff hat...

ggf. über eine PS?

Danke euch!

Content-ID: 399150

Url: https://administrator.de/contentid/399150

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

Penny.Cilin
Penny.Cilin 23.01.2019 um 16:37:23 Uhr
Goto Top
Hallo,

von welchem Windows reden wir?
vergebt ihr die Berechtigungen auf Benutzerebene (Userebene)? - Das ist Schwachsinn.
Warum organisiert ihr den Zugriff auf Freigaben nicht in Gruppen?
Dann braucht man nur noch schauen, in welcher Gruppe der Benutzer Mitglied ist und weiß auf welche Freigaben der Zugriff ist und welche Berechtigungen der Benutzer hat.

Einfach im Windows Explorer schauen, da werden die benutzen Freigaben angezeigt.
Oder via Commandline (Eingabeaufforderung)
Net Use


Gruss Penny
fritte87
fritte87 23.01.2019 um 16:43:39 Uhr
Goto Top
Windows Server 2012 R2...
Freigaben werden auf Userebene verteilt (historisch)
Gruppen wäre super, dann muss ich aber alles umbauen...was ne Menge Zeit und Aufwand wäre, ggf. wird etwas zerstört...
Gruppen bringen mir ja auch nichts...
dann muss ich ja trotzdem jede Freigabe öffnen und schauen welche Gruppe diese Freigabe nutzen kann....

Es geht hier nicht um die benutzten, sondern ggf. auch um die, welche genutzt werden könnten aber nicht gemappet sind....
erikro
erikro 23.01.2019 um 17:02:40 Uhr
Goto Top
Moin,

da hätte ich was. Das Skript schreibt eine XML ausgehend von den lokalen Gruppen, die (hoffentlich) ein Präfix haben, gibt die Ordner aus, auf die die Gruppen Rechte haben und darunter die Gruppen in den Gruppen bis runter zum User. Da unsers Präfixe eindeutig bezeichnen, welche Rechte die Gruppen haben, gebe ich die Rechte nicht mehr aus. Das kann man dann nach dem entsprechenden User filtern und voilá.

Das Ergebnis sieht dann in etwa so aus (mit css formatiert):

l_rw_gruppe1
      X:\Ordner
      X:\Ordner\Unterordner
              g_gruppe
                 user1
                 user2
                 g_untergruppe
                    user3
                    user4

Und hier das Skript

# Skript zur Dokumentation der Gruppenmitgliedschaften
#Requires -Version 5
#Requires -Modules activedirectory
#Requires -RunAsAdministrator

param (

    $group_praefix = "l_", #Präfix der lokalen Gruppen  
    $outpath = "x:\Pfad\datei.xml", #Pfad auf die Ausgabedatei  
    $acl_path = "X:\Daten\", #Pfad auf das LW und evtl. Unterordner, in den gesucht werden soll.  
    $depth = 3 #Suchtiefe für die Ausgabe der Ordner, die angegeben werden

)

$acls = $(Get-ChildItem $acl_path -depth $depth -Directory | get-acl)

$outfile = [xml]"<?xml version='1.0' encoding='utf-8'?>`n<?xml-stylesheet type='text/css' href='stylesheet.css'?>`n<groups name='Gruppenliste' />"  
$outfile.save($outpath)

function get-childgroup {

    param ( $parent_group, $parent_element )
    $children = Get-ADGroupMember $parent_group -ErrorAction Ignore
    if($children) {

        foreach($child in $children) {

            $newchild = $outfile.CreateElement("member")  
            $newchild.set_InnerText($child.name)
            $newchildattribute = $outfile.CreateAttribute("class")  
            $newchildattribute.set_Value($child.objectClass)
            $newchild.SetAttributeNode($newchildattribute)
            if($child.objectClass -eq "group") {  

                get-childgroup -parent_group $child.name -parent_element $newchild

            }
            $parent_element.AppendChild($newchild)

        }


    }
}



$base_groups = Get-ADGroup -filter "name -like '$group_praefix*'"  
foreach($group in $base_groups) {

    $newgroup = $outfile.CreateElement("group")  
    $newgroup.set_InnerText($group.name)
    $groupname=$group.name

    $given_acl = $($acls | Where-Object { $_.AccessToString -like "*$groupname*" })  
    foreach($acl in $given_acl) {
        $newacl = $outfile.CreateElement("access")  
        $arr_path_only = $acl.path.split(":")  
        $path_only = $arr_path_only[2]+":"+$arr_path_only[3]  
        $newacl.set_InnerText("$path_only")  
        $newgroup.AppendChild($newacl)
    }

    $members = get-adgroupmember $group

    foreach($member in $members) {

        $newmember = $outfile.CreateElement("member")  
        $newmember.set_InnerText($member.name)
        $newattribute = $outfile.CreateAttribute("class")  
        $newattribute.set_value($member.objectClass)
        $newmember.SetAttributeNode($newattribute)
        get-childgroup -parent_group $member.name -parent_element $newmember
        $newgroup.AppendChild($newmember)


    }
    $outfile.groups.appendchild($newgroup)
}

$outfile.save($outpath)

hth

Erik
erikro
erikro 23.01.2019 um 17:06:37 Uhr
Goto Top
Moin,

Zitat von @fritte87:
Freigaben werden auf Userebene verteilt (historisch)

Ohje, dann nützt Dir mein Skript so überhaupt nichts.

Gruppen wäre super, dann muss ich aber alles umbauen...was ne Menge Zeit und Aufwand wäre, ggf. wird etwas zerstört...

Mache Dir die Arbeit. Denn Du wirst in Zukunft eine Menge Zeit beim Suchen der Fehler sparen. Außerdem ist so eine Struktur anfällig für zu viele Rechte.

Gruppen bringen mir ja auch nichts...
dann muss ich ja trotzdem jede Freigabe öffnen und schauen welche Gruppe diese Freigabe nutzen kann....

Siehe mein Skript. Mit Gruppen, die vernünftig benannt und verschachtelt sind, kann man sowas automatisieren.

Es geht hier nicht um die benutzten, sondern ggf. auch um die, welche genutzt werden könnten aber nicht gemappet sind....

Wieviele Laufwerke mappt Ihr denn so? Bei uns gibt es zwei: Eins mit den Freigaben der Gruppen und ein persönliches. Das sollte reichen.

hth

Erik
Penny.Cilin
Penny.Cilin 23.01.2019 um 17:07:05 Uhr
Goto Top
Zitat von @fritte87:

Windows Server 2012 R2...
Freigaben werden auf Userebene verteilt (historisch)
Gruppen wäre super, dann muss ich aber alles umbauen...was ne Menge Zeit und Aufwand wäre, ggf. wird etwas zerstört...
Gruppen bringen mir ja auch nichts...
dann muss ich ja trotzdem jede Freigabe öffnen und schauen welche Gruppe diese Freigabe nutzen kann....
Daran merkt man daß Dir evtl. Kenntnisse oder Ideen fehlen.
Wenn man die Freigaben und Gruppen synchron hält, macht man nichts verkehrt.
Beispiel
Freigabe:
Personal
Gruppen:
Personal_R (Mitglieder haben Lesezugriff)
Personal_RW (Mitglieder dürfen ändern)
Personal_Full (Mitglieder haben Vollzugriff)

Und was hindert Dich daran parallel zu den benutzerbezogenen Berechtigungen Gruppenberechtigungen aufzubauen und sukzessive anzupassen? - Außer Arbeit.

OK, nutze PowerShell:
get-ACL
oder von Sysinternals
accesschk c:\temp -d -s

Gruss Penny
erikro
erikro 23.01.2019 um 17:14:51 Uhr
Goto Top
Moin,
Zitat von @Penny.Cilin:
Wenn man die Freigaben und Gruppen synchron hält, macht man nichts verkehrt.
Beispiel
Freigabe:
Personal
Gruppen:
Personal_R (Mitglieder haben Lesezugriff)
Personal_RW (Mitglieder dürfen ändern)
Personal_Full (Mitglieder haben Vollzugriff)

Besser mit Präfix. Das macht die Sache später beim Suchen im AD einfacher, wenn man die Rechte setzen möchte und nicht mehr genau weiß, ob die Gruppe Personalabteilung_RW oder Abteilung_Perso_RW hieß. Heißt sie l_rw_irgendwas, kann ich im AD einfach nach l_rw_ suchen und finde sie dann unter den 100 l_rw-Gruppen. ;) Und auf jeden Fall auf die Regel beachten: Globale Gruppen enthalten die Konten (User und/oder andere globale Gruppen), die lokalen Gruppen erhalten die Rechte und enthalten die globalen Gruppen, deren User die Rechte erhalten sollen. Richtig gemacht, kommt man dann in der Regel mit einer Gruppe pro User aus und die Sache macht richtig Spaß. Der Aufwand an Zeit und Hirnschmalz lohnt sich auf Dauer auf jeden Fall.

Liebe Grüße

Erik
fritte87
fritte87 23.01.2019 um 17:42:12 Uhr
Goto Top
Naja die Kenntnisse fehlen mir nicht...
nur ganz so trivial einfach ist es hier nicht...
Das Unternehmen ist historisch gewachen und mit dem auch die Freigaben etc...
Historisch ist hier viel schief gelaufen...
Jeder User hat diverse Freigaben für verschiedene Applikationen...
Sicherlich gerne mal 10 Freigaben / Netzlaufwerke...
Am Filserver selbst sind ca 35 Freigaben...hinzu kommen diverse von anderen Servern (wir haben knapp 50 Server im Einsatz)
Die User und auch unser Chef hat Probleme mit neuen Strukturen... (Am Liebsten würde ich einen neuen Fileserver aufsetzen...)
Desweiteren kommen acuh Freigaben von anderen Servern hinzu, welche benötigt werden um entsprechende Applikationen zu nutzen (Zeiterfassung, Banking, Schlüsseldienste, etc.. PP...)
wären es nur 2 Freigaben, wäre es simple face-smile...ist es leider so nicht...
Es gibt auch viele Überschneidungen in diversen Gruppen, sodass z.B 3 User aus einer Gruppe auf die nächste Freigabe gucken düften, die anderen 2 aus der Gruppe wieder nicht, somit wieder eine neue Gruppe...was OK wäre...aber das bedarf ner Menge Zeit.
Ich habe in der Vergangenheit mal einen 15 Jahre alten Fileserver auseinander gezogen, das Projekt ging über 6 Monate und hat ca 6 SEs gefressen, sodass es zu keinen Problemen kommen sollte --> es kam dennoch zu einigen Ausfällen und Problemen...

So wie ich es nun vernehme, geht es so wohl direkt nicht...was eig schade ist...
Pjordorf
Pjordorf 23.01.2019 um 17:56:09 Uhr
Goto Top
Hallo,

Zitat von @fritte87:
Freigaben werden auf Userebene verteilt (historisch)
Also schon seit Windows NT 3.1 oder erst seitdem du dort Admin bist?face-smile

Gruppen wäre super
Und auch der Hersteller deines Servers hat nie etwas anderes geschrieben, Nutze immer Gruppen, was aber nicht bedeutet das du User nicht nehmen kannst, nur sinnvoll ist es nicht. Ihr habt lieber Zeit in etwas Investiert was nie gutgeheissen war oder ist (oder ihr hat alle Warnungen geflissentlich Ignoriert) und nun habt ihr den Salat. Selbst bei Windows NT 3.1 stand das schon so in den damals noch mitgelieferten Gewichten der mitgelieferten Handbücher (wurde nicht in Seiten sondern als Kilogramm pro Buch angegeben) face-smile

dann muss ich aber alles umbauen
Wie dir schon gesagt wurde Parallel aufbauen, testen, testen, testen, dann erst löschen.

was ne Menge Zeit und Aufwand wäre, ggf. wird etwas zerstört
Es ist so, und deshalb soll ja auch getestet werden. Irgendwann bricht dein Kartenhaus eh zusammen...

Gruppen bringen mir ja auch nichts...
Wenn du es sagst

dann muss ich ja trotzdem jede Freigabe öffnen und schauen welche Gruppe diese Freigabe nutzen kann....
Oder man hat eine vollständige Doku seiner Umgebung

Es geht hier nicht um die benutzten, sondern ggf. auch um die, welche genutzt werden könnten aber nicht gemappet sind....
Das ist aber eine andere Baustelle. Es gab auch mal Admins die nicht wussten wie die ihre 60 Freigaben bei den Usern Mappen (weil damals noch keine FQDNs usw. ...)

Will alles gut geplant sein
https://www.tecchannel.de/a/die-besten-tipps-und-tricks-fuer-windows-fil ...

Gruß,
Peter
Penny.Cilin
Penny.Cilin 23.01.2019 um 19:55:02 Uhr
Goto Top
Zitat von @fritte87:

So wie ich es nun vernehme, geht es so wohl direkt nicht...was eig schade ist...
Sach mal liest Du nicht die Antworten, welche man Dir gibt!!! face-sad

Ich hatte dir mehrere Möglichkeiten genannt.
  • PowerShell Get-Acl
  • Accesschk von Sysinternals
  • ICACLS

Beschäftige Dich damit, denn alle genannten Möglichkeiten bieten die Möglichkeit rekursiv die Berechtigungen von Verzeichnissen und / oder Dateien anzeigen zu lassen.

Und ganz nebenbei, ich habe vor längerer Zeit genauso einen Fileserver optimiert und umstrukturiert. Auch in diesem Unternehmen war die Umgebung historisch gewachsen. Und wir reden hier von einer Datenmenge von 20 TiB nur auf dem Storage (NetApp). Dazu kommen noch diverse andere Server / Services. Ja das hat seine zeit gedauert, aber der Benefit ist eindeutig. Sowhl auf der Anwenderseite, als auch in der Administration.

Gruss Penny
erikro
erikro 24.01.2019 um 08:13:15 Uhr
Goto Top
Moin,

Zitat von @fritte87:
Naja die Kenntnisse fehlen mir nicht...

Also fehlt es am Willen, sie anzuwenden? Noch schlimmer. Ganz ehrlich.

nur ganz so trivial einfach ist es hier nicht...

Doch, ist es, so wie bei allen anderen auch.

Das Unternehmen ist historisch gewachen und mit dem auch die Freigaben etc...

Ja und? Meinst Du das wäre bei anderen alten Unternehmen anders?

Historisch ist hier viel schief gelaufen...

Auch das ist die Regel und nicht die Ausnahme.

Jeder User hat diverse Freigaben für verschiedene Applikationen...
Sicherlich gerne mal 10 Freigaben / Netzlaufwerke...

Und? Im Übrigen macht da das Arbeiten mit Gruppen erst recht Sinn, da man dadurch bei neuen Usern nur noch selbigen in eine entsprechende Gruppe packen muss und er hat sofort alle und nur die Rechte, die er braucht.

Am Filserver selbst sind ca 35 Freigaben...hinzu kommen diverse von anderen Servern (wir haben knapp 50 Server im Einsatz)

Und?

Die User und auch unser Chef hat Probleme mit neuen Strukturen... (Am Liebsten würde ich einen neuen Fileserver aufsetzen...)

Und? Die User, wenn man es richtig macht, merken davon nichts. Gar nichts.

Desweiteren kommen acuh Freigaben von anderen Servern hinzu, welche benötigt werden um entsprechende Applikationen zu nutzen (Zeiterfassung, Banking, Schlüsseldienste, etc.. PP...)

Und?

wären es nur 2 Freigaben, wäre es simple face-smile...ist es leider so nicht...

Wären es nur 2 Freigaben und drei Nutzer, dann könnte man noch auf Gruppen verzichten (auch wenn das nicht ratsam wäre). Bei dem, was Du beschreibst, sind vernünftige und richtig verschachtelte Gruppenstrukturen zwingend notwendig, will man nicht den Überblick verlieren. Und genau das ist ja jetzt Dein Problem. Du stehst jetzt vor der Entscheidung, ob Du weiterhin keinen Überblick haben willst und jedes Mal, wenn mal was nicht so funktioniert, wie es soll, stundenlang Dich durch hunderte von Rechtezuweisungen wühlen willst oder ob Du Dir einmal die Arbeit machst und hinterher ganz genau weißt, warum wer welche Rechte an Deinem System besitzt.

Es gibt auch viele Überschneidungen in diversen Gruppen, sodass z.B 3 User aus einer Gruppe auf die nächste Freigabe gucken düften, die anderen 2 aus der Gruppe wieder nicht, somit wieder eine neue Gruppe...was OK wäre...aber das bedarf ner Menge Zeit.

Und? Dafür gibt es die Möglichkeit, Gruppen zu verschachteln. So habe ich z. B. eine Gruppe g_leitung, die in allen anderen globalen Gruppen ist und somit alle Rechte aus all diesen Gruppen erbt. Das kostet nicht eine Menge Zeit, sondern nur eine Menge Hirnschmalz, wie man die Anforderungen so löst, wie sie gestellt sind, dass ein User in nur einer Gruppe ist. Die Struktur zu entwerfen dauert zwei Tage, sie einzurichte nochmal zwei, die User auf die neuen Gruppen zu verteilen nochmal einen und das Löschen der alten Rechte macht man dann nach und nach.

Ich habe in der Vergangenheit mal einen 15 Jahre alten Fileserver auseinander gezogen, das Projekt ging über 6 Monate und hat ca 6 SEs gefressen, sodass es zu keinen Problemen kommen sollte --> es kam dennoch zu einigen Ausfällen und Problemen...

Wie bitte? Wofür hast Du so viel Zeit verschwendet? Ganz ehrlich. Ich habe das gerade hinter mir. Nicht ganz so groß, aber doch recht komplex. Das hat so lange gedauert, wie ich es eben beschrieben habe. Und das inkl. der kompletten Umstellung der Verzeichnisstruktur, weil die neue Leitung der Einrichtung deutlich abweichende Vorstellungen von den Zugriffen hatte als die alte. Wofür also 6 Monate?

So wie ich es nun vernehme, geht es so wohl direkt nicht...was eig schade ist...

So, wie Du das beschreibst, handelt es sich ja offenbar um eine größere Einheit mit mehreren hundert Usern. Wenn Du da nicht mit einer Gruppenstruktur arbeiten willst, dann wird Dir wohl nichts anderes übrig bleiben, als bei jedem einzelnen nachzugucken, auf welche Verzeichnisse er welche Rechte hat.

Liebe Grüße

Erik
emeriks
emeriks 24.01.2019 um 08:33:00 Uhr
Goto Top
Hi,
Zitat von @erikro:
Richtig gemacht, kommt man dann in der Regel mit einer Gruppe pro User aus und die Sache macht richtig Spaß.
Richtig gemacht? Dann machen wir alles falsch. Traum Ende.

E.
erikro
erikro 24.01.2019 um 08:46:36 Uhr
Goto Top
Zitat von @emeriks:
Zitat von @erikro:
Richtig gemacht, kommt man dann in der Regel mit einer Gruppe pro User aus und die Sache macht richtig Spaß.
Richtig gemacht? Dann machen wir alles falsch. Traum Ende.

Bestimmt nicht. face-wink Es gibt viele Wege nach Rom. Aber ich versuche das immer, dass es nur eine Gruppe pro User gibt (außer den vorgefertigten). Da hat man einfach den besten Überblick. My 2 cents.
Penny.Cilin
Penny.Cilin 24.01.2019 um 10:28:18 Uhr
Goto Top
Zitat von @erikro:

Moin,
Zitat von @Penny.Cilin:
Wenn man die Freigaben und Gruppen synchron hält, macht man nichts verkehrt.
Beispiel
Freigabe:
Personal
Gruppen:
Personal_R (Mitglieder haben Lesezugriff)
Personal_RW (Mitglieder dürfen ändern)
Personal_Full (Mitglieder haben Vollzugriff)

Besser mit Präfix. Das macht die Sache später beim Suchen im AD einfacher, wenn man die Rechte setzen möchte und nicht mehr genau weiß, ob die Gruppe Personalabteilung_RW oder Abteilung_Perso_RW hieß. Heißt sie l_rw_irgendwas, kann ich im AD einfach nach l_rw_ suchen und finde sie dann unter den 100 l_rw-Gruppen. ;) Und auf jeden Fall auf die Regel beachten: Globale Gruppen enthalten die Konten (User und/oder andere globale Gruppen), die lokalen Gruppen erhalten die Rechte und enthalten die globalen Gruppen, deren User die Rechte erhalten sollen. Richtig gemacht, kommt man dann in der Regel mit einer Gruppe pro User aus und die Sache macht richtig Spaß. Der Aufwand an Zeit und Hirnschmalz lohnt sich auf Dauer auf jeden Fall.
Das ist jetzt eine Glaubensfrage. Grundsätzlich sind wir einer Meinung, daß der Einsatz von Gruppen sinnvoll ist. Ich betreue nebenbei auch kleinere Umgebungen mit 3-5 Benutzer. Und auch da setze ich Gruppen ein.

Wobei was bedeutet bei Dir l_rw_? (RW ist mir klar), aber l (lokal??)

Liebe Grüße

Erik

Gruss Penny
colinardo
colinardo 24.01.2019 aktualisiert um 11:11:39 Uhr
Goto Top
erikro
erikro 24.01.2019 um 11:41:33 Uhr
Goto Top
Zitat von @Penny.Cilin:
Wobei was bedeutet bei Dir l_rw_? (RW ist mir klar), aber l (lokal??)

Genau. Und dann kommt die Ressource, auf die die Gruppe Rechte hat. Also lokale Gruppe für den Ordner Geschäftsleitung lesend und schreibend wäre dann l_rw_geschaeftsleitung bzw. nur lesenden l_ro_geschaeftsleitung. Die globale Gruppe wären dann z. B. g_geschäftsleitung und g_chefsekretariat. Das hat halt den Vorteil, dass ich dann beim Einrichten der Rechte nur l_rw tippen muss, um mir die Gruppen mit RW-Rechten auflisten zu lasten. Aber Du hast recht. Das ist Geschmackssache.
Penny.Cilin
Penny.Cilin 24.01.2019 um 11:46:23 Uhr
Goto Top
Zitat von @erikro:

Zitat von @Penny.Cilin:
Wobei was bedeutet bei Dir l_rw_? (RW ist mir klar), aber l (lokal??)

Genau. Und dann kommt die Ressource, auf die die Gruppe Rechte hat. Also lokale Gruppe für den Ordner Geschäftsleitung lesend und schreibend wäre dann l_rw_geschaeftsleitung bzw. nur lesenden l_ro_geschaeftsleitung. Die globale Gruppe wären dann z. B. g_geschäftsleitung und g_chefsekretariat. Das hat halt den Vorteil, dass ich dann beim Einrichten der Rechte nur l_rw tippen muss, um mir die Gruppen mit RW-Rechten auflisten zu lasten. Aber Du hast recht. Das ist Geschmackssache.
Danke, wobei bisher habe ich für lesenden Zugriff immer nur das Kürzel r verwendet.
Beispiele:
rw (Berechtigung Modify)
r (Berechtigun lesen)
Full (Vollzugriff)

Gruss Penny
erikro
erikro 24.01.2019 um 11:52:59 Uhr
Goto Top
Zitat von @Penny.Cilin:
Danke, wobei bisher habe ich für lesenden Zugriff immer nur das Kürzel r verwendet.
Beispiele:
rw (Berechtigung Modify)
r (Berechtigun lesen)
Full (Vollzugriff)

Wie gesagt, Geschmackssache. Ich habe auch schon andere Systeme gesehen. Hauptsache es hilft, die Gruppen mit den entsprechenden Rechten schnell zu finden.
colinardo
colinardo 24.01.2019 aktualisiert um 11:57:00 Uhr
Goto Top
@erikro und @Penny.Cilin

Könnt ihr das per PN regeln. Ist IMHO eigentlich nicht mehr Thema des Threads. Merci.