Tags: PowerShell, Dateisystem, Rechteverwaltung
Das mit Windows 8 und Server 2012 eingeführte Modul SmbShare kann nicht nur Verzeichnisse freigeben oder deren Freigabe wieder beenden, sondern bietet auch mehrere Cmdlets für die Verwaltung 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).
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
Für das Rechte-Management von Freigaben stehen zwei weitere Cmdlets zur Verfügung, deren Aufgabe es ist, bestimmten Benutzern spezifische Rechte explizit vorzuenthalten. Öffnet man im Explorer die Berechtigungen 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.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
Weitere Links
1 Kommentar
Guten Tag und Danke für den Artikel.
Was ich nicht verstehe: Freigabe für einen Benutzer -Accountname SERVERNAME\Frank funktioniert - .\Frank funktioniert nicht.
Freigabe für eine Gruppe -AccountName SERVERNAME\Benutzer funktioniert nicht - .\Benutzer funktioniert
Beste Grüße,
Frank Hammerschmidt