Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa

Darmowa diagnoza laptopa

Dojazd do klienta bezpłatnie

Dojazd do klienta bezpłatnie

Laptopy zastępcze bezpłatnie

Laptopy zastępcze bezpłatnie

Odbiór i zwrot sprzętu bezpłatnie

Odbiór i zwrot sprzętu bezpłatnie

Get-Acl – uprawnienia NTFS

Termin Definicja
Get-Acl – uprawnienia NTFS

Get-Acl to polecenie PowerShell odczytujące listę kontroli dostępu (ACL) uprawnień NTFS dla pliku lub folderu.

Get-Acl jako odczyt listy kontroli dostępu NTFS

Get-Acl jest poleceniem PowerShell należącym do modułu Microsoft.PowerShell.Security. Służy do odczytywania deskryptora zabezpieczeń obiektu wskazanego ścieżką, najczęściej pliku albo folderu. W przypadku woluminu NTFS najważniejszą częścią wyniku jest lista kontroli dostępu, czyli ACL (Access Control List), zawierająca reguły określające, jakie operacje mogą wykonywać wskazane konta użytkowników i grup. Polecenie samo odczytuje ustawienia; nie zmienia uprawnień.

Najprostsze użycie ma postać Get-Acl -Path "C:\Dane\raport.txt". Dla folderu można zastosować na przykład Get-Acl -Path "C:\Dane". Wynik obejmuje między innymi właściwości Path, Owner, Group, Access oraz Sddl. Właściwość Access zawiera reguły dostępu, natomiast Sddl przedstawia deskryptor zabezpieczeń w postaci tekstowej zgodnej z językiem SDDL (Security Descriptor Definition Language). Taki zapis jest przydatny przy porównywaniu konfiguracji, ale wymaga znajomości skrótów używanych przez system Windows.

Odczytywanie reguł Access w praktyce

Właściwość Access można rozwinąć, aby zobaczyć poszczególne reguły. Przykładowe polecenie Get-Acl -Path "C:\Dane" | Select-Object -ExpandProperty Access zwraca wpisy zawierające między innymi IdentityReference, FileSystemRights, AccessControlType, IsInherited oraz InheritanceFlags. IdentityReference wskazuje konto lub grupę, której dotyczy reguła. FileSystemRights opisuje zakres praw, taki jak odczyt, zapis, wykonanie, usuwanie albo pełna kontrola. AccessControlType przyjmuje wartość Allow albo Deny. IsInherited informuje, czy wpis został odziedziczony z folderu nadrzędnego.

Do szybkiego uporządkowania wyniku można użyć polecenia (Get-Acl -Path "C:\Dane").Access | Format-Table IdentityReference, FileSystemRights, AccessControlType, IsInherited. Do dalszego przetwarzania lepiej pozostawić obiekty PowerShell bez formatowania, ponieważ polecenia Format-Table i Format-List są przeznaczone przede wszystkim do prezentacji. Przy ścieżkach zawierających znaki specjalne albo nawiasy można wykorzystać -LiteralPath, na przykład Get-Acl -LiteralPath "C:\Dane[archiwum]\plik.txt". Ten parametr traktuje przekazany tekst jako dosłowną ścieżkę i nie interpretuje go jako wzorca.

Dziedziczenie, odmowy i rzeczywisty dostęp do pliku

Analiza wyniku Get-Acl wymaga rozróżnienia uprawnienia przypisanego bezpośrednio od uprawnienia odziedziczonego. Folder może przekazywać reguły do podfolderów i plików za pomocą mechanizmu dziedziczenia. Informacje o tym mechanizmie są widoczne w polach InheritanceFlags i PropagationFlags, a wpis odziedziczony ma IsInherited ustawione na True. Zmiana ACL folderu nadrzędnego może więc wpływać na wiele obiektów niższego poziomu. Z kolei wyłączenie dziedziczenia na konkretnym obiekcie powoduje, że jego lista może różnić się od konfiguracji folderu nadrzędnego.

Lista zwrócona przez Get-Acl nie jest prostym komunikatem „użytkownik ma dostęp” albo „użytkownik nie ma dostępu”. Rzeczywiste uprawnienia wynikają z członkostwa konta w grupach, wszystkich pasujących reguł Allow i Deny, dziedziczenia oraz sposobu otwarcia zasobu. Przy dostępie do folderu udostępnionego przez sieć obowiązują jednocześnie uprawnienia udziału sieciowego i uprawnienia NTFS, a skuteczny zakres jest ograniczany przez bardziej restrykcyjny z tych dwóch poziomów. Dlatego sam odczyt ACL ścieżki lokalnej nie zawsze wyjaśnia problem z dostępem przez ścieżkę UNC, taką jak \\komputer\udzial.

W diagnostyce warto porównać ACL pliku z ACL jego folderu nadrzędnego oraz sprawdzić właściciela i reguły odziedziczone. Polecenie Get-Acl -Path "C:\Dane\raport.txt" | Format-List * pokazuje pełny obiekt zabezpieczeń. Parametr -Audit służy do odczytu reguł audytu, czyli ustawień kontroli zdarzeń dostępu w części SACL; ich dostępność może zależeć od uprawnień procesu i włączonych zasad audytu systemu Windows. Nie należy utożsamiać SACL z DACL: DACL określa dopuszczanie lub odmawianie dostępu, natomiast SACL opisuje zdarzenia, które system może rejestrować.

Get-Acl w diagnozie problemów z dostępem na komputerze

Nieprawidłowe uprawnienia NTFS mogą powodować komunikaty o odmowie dostępu, brak możliwości zapisu pliku, problemy z uruchomieniem programu z określonego katalogu albo niespodziewane różnice między kontami użytkowników. Get-Acl pozwala wtedy zebrać stan konfiguracji bez ręcznego otwierania wielu okien właściwości. Przydatne jest zapisanie wyniku do pliku, na przykład Get-Acl -Path "C:\Dane" | Format-List * | Out-File "C:\Temp\acl.txt", albo wyeksportowanie wybranych reguł do tabeli CSV: (Get-Acl -Path "C:\Dane").Access | Select-Object IdentityReference, FileSystemRights, AccessControlType, IsInherited | Export-Csv "C:\Temp\acl.csv" -NoTypeInformation.

Odczyt ACL powinien być wykonany dla dokładnego obiektu, którego dotyczy problem, ponieważ uprawnienia pliku mogą różnić się od uprawnień folderu. Należy również sprawdzić, czy polecenie zostało uruchomione w odpowiednim kontekście użytkownika oraz czy badana ścieżka wskazuje właściwy wolumin. Samo polecenie Get-Acl nie naprawia konfiguracji. Do modyfikacji deskryptora służy między innymi Set-Acl, ale zmiana reguł bez zrozumienia dziedziczenia i członkostwa w grupach może nadać zbyt szeroki dostęp albo usunąć wymagane wpisy. Warszawskie Pogotowie Komputerowe wykonuje profesjonalną naprawę laptopów i komputerów PC, w tym diagnostykę problemów z systemem Windows, konfiguracją kont oraz uprawnieniami do plików i folderów.