Zugriffsrechte auf Freigaben anzeigen, ändern und entziehen mit PowerShell

    Zugriffsrechte für SharesDas mit Windows 8 und Server 2012 einge­führ­te Modul SmbShare kann nicht nur Verzeich­nisse freigeben oder deren Freigabe wieder beenden, sondern bietet auch mehrere Cmdlets für die Verwal­tung der Zugriffsrechte.

    Wenn ein Benutzer auf ein Verzeichnis über das Netz zugreift, dann hängen seine tatsächlichen Befugnisse bekanntlich nicht bloß von den Rechten ab, die ihm der Administrator für die Freigabe eingeräumt hat, sondern auch von jenen, die er im Dateisystem besitzt. In dieser Kombination aus NTFS- und Share-Berechtigungen setzt sich jene Ebene durch, restriktiver konfiguriert wurde. Erlaubt ihm etwa die Freigabe nur das Lesen, dann kann er ein vorhandenes Schreibrecht im Dateisystem nicht ausüben.

    Drei Rechte für Netzfreigaben

    Das unter Windows vorherrschende NTFS bietet ein wesentlich feiner abgestuftes Rechtesystem als Freigaben, die nur drei Berechtigung kennen:

    • Lesen: Umfasst das Anzeigen von Namen und Inhalten von Dateien sowie von Unterverzeichnissen, zusätzlich kann man mit diesem Recht Programme ausführen.
    • Ändern: Beinhaltet neben allen Berechtigungen, die das Leserecht bietet, das Anlegen von Dateien und Unterverzeichnissen, das Ändern von Dateien sowie das Löschen von Dateien und Unterverzeichnissen.
    • Vollzugriff: Er erlaubt zusätzlich zu den Ändern-Privilegien das Modifizieren der Zugriffsrechte.

    Rechte bei der Freigabe eines Ordners vergeben

    Legt man eine neue Freigabe mit Hilfe des Cmdlets New-SmbShare an, dann kann man bei dieser Gelegenheit mit den Parametern ReadAccess, ChangeAccess und FullAccess gleich die Zugriffsrechte vergeben (siehe dazu: Netzlaufwerke anzeigen, freigeben, verbinden und trennen mit PowerShell).

    Grant-SmbShareAccess und Revoke-SmbShareAccess vergeben und entziehen Berechtigungen für Freigaben.

    Will man die Berechtigungen für ein File-Share nachträglich anpassen, dann stehen dafür die Cmdlets Grant-SmbShareAccess und Revoke-SmbShareAccess zu Verfügung. In beiden Fällen benötigt man den Namen der Freigabe und der betroffenen Konten bzw. Gruppen:

    Grant-SmbShareAccess -Name Temp -AccountName contoso\IT,contoso\HR -AccessRight Full

    Mit dem Parameter Name spezifiziert man die Freigabe, mit AccountName die User oder Gruppen (durch Komma getrennt) und bei AccessRight hat man die Auswahl zwischen Read, Change und Full. Das Zugriffsrecht kann man aber nur angeben, wenn man es gewährt. Revoke-SmbShareAccess beseitigt nämlich pauschal alle Privilegien der betreffenden User oder Gruppen.

    Beide Cmdlets haben die Eigenart, den Vorgang durch Nachfragen bestätigen zu lassen. Dies kann man durch Angabe von -Force unterbinden. Wenn man die Rechte auf einer Freigabe eines anderen Rechners ändern möchte, dann benennt man diesen im Parameter CimSession.

    Zugriffsrechte für Share anzeigen

    Wenn man vor oder nach der Bearbeitung von Zugriffsrechten einen Überblick über die aktuelle Situation bekommen möchte, dann liefert Get-SmbShareAccess die benötigten Informationen. Es erwartet die Angabe des Share-Namens, optional kann man die Operation mit dem Parameter CimSession auf einem entfernten Rechner ausführen:

    Get-SmbShareAccess -Name Temp -CimSession MyFileServer

    Rechte für Freigaben verweigern

    Im Explorer kann man jede einzelne Berechtigung explizit verweigern.Für das Rechte-Management von Frei­gaben stehen zwei weitere Cmdlets zur Ver­fügung, deren Aufgabe es ist, bestimmten Benutzern spezi­fische Rechte explizit vorzu­ent­halten. Öffnet man im Explorer die Berech­tigungen einer Freigabe, dann führt man diese Aktion dort mit Hilfe der Checkboxen in der Spalte Verweigern aus.

    Ein typischer Anwendungsfall dafür liegt etwa vor, wenn Benutzer oder Gruppen durch ihre Mitgliedschaft in einer weiteren Gruppe bestimmte Rechte für die Freigabe erben, aber man ihnen diese nicht gewähren will. Ein Entziehen der betreffenden Berechtigungen wäre hier nicht möglich, weil sie ihnen persönlich nie explizit eingeräumt wurden.

    Diese Aufgabe lässt sich durch einen Aufruf nach dem Muster

    Block-SmbShareAccess -Name Temp -AccountName contos\IT

    lösen. Dieses Cmdlet schreibt aber immer nur einen Deny-Eintrag für den Vollzugriff und kann nicht jedes einzelne Recht verweigern, wie es auf der GUI möglich ist. Der Gegenspieler von Block-SmbShareAccess heißt Unblock-SmbShareAccess, der mit der gleichen Syntax aufgerufen wird.

    ACL von Shares nach NTFS kopieren

    Schließlich gibt es seit Windows Server 2012 R2 ein neues Cmdlet, dessen Zweck darin besteht, die ACL einer Freigabe auf das Verzeichnis zu kopieren, das sich hinter dem Share befindet. Es synchronisiert somit die Rechte der Freigabe mit jenen des NTFS- oder ReFS-Dateisystems:

    Set-SmbPathAcl <Freigabe>

    Diesen Befehl wird man in erster Linie bei neu angelegten Freigaben anwenden, wo die NTFS-Rechte noch nicht explizit konfiguriert wurden.

    Keine Kommentare