Kurzívu Get-Acl v modulu Zabezpečení prostředí PowerShell (Microsoft.PowerShell.Security) lze skvěle použít k získání oprávnění k souborům nebo složkám (neboli seznamu řízení přístupu neboli ACL). Na získání užitečných informací z výchozího výstupu je však třeba si zvyknout.
Bylo by skvělé mít možnost jednoduše zjistit, co zobrazuje karta Zabezpečení souboru, složky nebo jiného prostředku, ale bez nutnosti procházet uživatelským rozhraním Průzkumníka souborů a několikanásobného klikání.
Obrázek 1: Karta Zabezpečení složky v Průzkumníku Windows
Jednoduché: Získat oprávnění k souboru nebo složce
Přesně k tomu slouží tento jednořádkový příkaz:
(get-acl <název složky>).access | ft IdentityReference,FileSystemRights,AccessControlType,IsInherited,InheritanceFlags -auto
Výstup:
Funkce Get-Permissions
Chcete, aby byl výstup čitelnější? Zde je funkce PowerShell, která používá vlastní popisky (nadpisy v jednotlivých sloupcích tabulky).
Můžete ji uložit jako skript prostředí PowerShell nebo ji přidat do svého profilu prostředí PowerShell, aby byla vždy k dispozici.
123456789 |
funkce Get-Permissions ($folder) { (get-acl $folder).access | select `@{Label="Identita";Expression={$_.IdentityReference}}, `@{Label="Right";Expression={$_.FileSystemRights}}, `@{Label="Access";Expression={$_.AccessControlType}}, `@{Label="Inherited";Expression={$_.IsInherited}}, `@{Label="Inheritance Flags";Expression={$_.InheritanceFlags}}, `@{Label="Propagation Flags";Expression={$_.PropagationFlags}} | ft -auto} |
Dvě vlastnosti související s dědičností můžete vynechat, pokud tyto informace nepotřebujete.
Nyní můžete použít příkaz Get-Permissions s názvem složky:
Get-Permissions c:\myfolder
Výstup:
Můžete také propojit výstup z příkazů dir, ls nebo gci, což jsou aliasy prostředí PowerShell pro rutinu Get-ChildItem.
dir <cesta> | % {Get-Permissions -path $_.fullname}
Funkce pro otevření souboru nebo složky Vlastnosti v Průzkumníku
Pokud opravdu rádi vidíte oprávnění v grafickém rozhraní Průzkumníka souborů, můžete pomocí této funkce otevřít stránku Vlastnosti > Obecné souboru nebo složky. (Nenašel jsem způsob, jak přímo otevřít kartu Zabezpečení. Pokud víte, jak to udělat, podělte se o to v komentářích k příspěvku).
12345678910111213141516171819202122 |
funkce Get-Properties ($path) {#exit if path not foundif (-not ($path | Test-Path)) { Write-Host "$path not found. Zadejte prosím platnou cestu k souboru nebo složce." -foregroundcolor red return } $o = new-object -com Shell.Application$item = get-item $path if ($item.gettype() -eq ) {write-host "Found folder $path.... Získání vlastností"$fso = $o.Namespace("$path")$fso.self.InvokeVerb("properties") } if ($item.gettype() -eq ){write-host "Nalezen soubor $path.... Získání vlastností"$fso = $o.Namespace($item.directoryname)$file = $fso.parsename($item.pschildname)$file.InvokeVerb("properties")}} |
Nyní stačí použít Get-Properties <Složka názvu souboru> pro rychlé otevření stránky vlastností souboru nebo složky z prostředí shellu.
Obrázek 2: Použití funkce Get-Properties k rychlému otevření stránky vlastností souboru nebo složky z prostředí PowerShell
Modul PowerShell pro zabezpečení souborového systému
Microsoft PFE Raimund Andrée před časem zveřejnil modul PowerShell pro zabezpečení souborového systému. Přidává několik užitečných rutin pro správu oprávnění souborového systému pomocí prostředí PowerShell. Podívejte se také na jeho odpovídající příspěvky na blogu Weekend Scripter: Pomocí prostředí PowerShell získáte, přidáte a odeberete oprávnění systému NTFS a NTFSSecurity Tutorial 2 – Správa dědičnosti systému NTFS a používání oprávnění.
Tags
Skripty prostředí PowerShell Zabezpečení Windows