Dostęp do dysków sieciowych z programów działających z podwyższonymi uprawnieniami

Jednym z istotnych ulepszeń bezpieczeństwa systemu operacyjnego Windows (od wersji Vista) było wprowadzenie funkcji Kontrola konta użytkownika (UAC). Kontrola konta użytkownika prosi o potwierdzenie użytkownika przy każdym uruchomieniu programu, który próbuje wprowadzić zmiany w ustawieniach systemu. Jednym z efektów ubocznych UAC jest brak dostępu do podłączonego (przez netto użyć) dyski sieciowe z aplikacji działających w trybie uprzywilejowanym (Uruchom jako administrator). Oznacza to, że po uruchomieniu wiersza polecenia lub menedżera plików (to samo, Total Commander) z podwyższonymi uprawnieniami nie będą one zawierać (niedostępnych) liter dysków zamontowanych folderów sieciowych.

W tej notatce pokażemy, jak w Windows 10, Windows 8.1 i Windows 7 przyznać dostęp do dysków sieciowych z aplikacji działających w trybie uprzywilejowanym (uruchom jako administrator). Problem występuje zarówno w przypadku folderów sieciowych połączonych za pomocą zasad grupy, jak i folderów połączonych użytkowników niezależnie.

Jest ważne. Zdecydowanie odradza się całkowite wyłączenie UAC, nawet w przypadku jednej określonej aplikacji.

Rzeczywiście, gdy UAC jest włączony z „uprzywilejowanej” aplikacji w systemie Windows, nie można uzyskać dostępu do dysku sieciowego podłączonego w trybie normalnym. Pokażmy, jak wygląda problem. Na przykład upewnij się, że w wierszu polecenia uruchomionym z uprawnieniami zwykłego użytkownika systemu masz dostęp do zawartości podłączonego dysku sieciowego Z: \.

Jeśli w kontekście tego samego użytkownika, aby otworzyć okno wiersza polecenia z uprawnieniami administratora, wtedy przy próbie uzyskania dostępu do tego samego dysku pojawi się komunikat, że nie znaleziono określonej ścieżki:

System nie może znaleźć określonej ścieżki..

Takie zachowanie systemu może powodować szereg niedogodności, gdy aplikacje są często uruchamiane w trybie uprzywilejowanym. Możesz uruchamiać aplikacje bez uprawnień administratora, ale nie zawsze ma to zastosowanie.

Dlaczego tak się dzieje?? Ta funkcja jest powiązana z mechanizmem UAC dla użytkownika z uprawnieniami lokalnego administratora. Faktem jest, że gdy taki użytkownik loguje się do systemu, tworzone są dwa tokeny dostępu: jeden token dostępu z wyłączonymi uprawnieniami administratora (token dostępu z filtrem - z którego uruchamia się większość programów) i pełnoprawny token administratora z pełnymi prawami w systemie (w tym kontekście wszystkie programy, które otrzymały potwierdzenie podniesienia uprawnień w UAC są wykonywane).

Jeśli używasz polecenia whoami / all porównaj obecne uprawnienia tego samego użytkownika w dwóch sesjach cmd.exe (zwykłej i uprzywilejowanej), możesz zobaczyć, że są one bardzo różne. W poniższej tabeli wymieniono różnice w grupach i bieżące dane uwierzytelniające w każdej sesji..

Regularna sesja użytkownikaSesja użytkownika uprzywilejowanego
Grupa dostępuEtykieta obowiązkowa \ Średnia etykieta poziomu obowiązkowego S-1-16-8192Etykieta obowiązkowa \ Etykieta wysokiego poziomu obowiązkowego S-1-16-12288
UprawnieniaSeLockMemoryPrivilege

SeMachineAccountPrivilege

SeShutdownPrivilege

SeChangeNotifyPrivilege

SeUndockPrivilege

SeIncreaseWorkingSetPrivilege

SeTimeZonePrivilege

SeLockMemoryPrivilege

SeIncreaseQuotaPrivilege

SeMachineAccountPrivilege

SeSecurityPrivilege

SeTakeOwnershipPrivilege

SeLoadDriverPrivilege

SeSystemProfilePrivilege

SeSystemtimePrivilege

SeProfileSingleProcessPrivilege

SeIncreaseBasePriorityPrivilege

SeCreatePagefilePrivilege

SeBackupPrivilege

SeRestorePrivilege

SeShutdownPrivilege

SeSystemEnvironmentPrivilege

SeChangeNotifyPrivilege

SeRemoteShutdownPrivilege

SeUndockPrivilege

SeManageVolumePrivilege

SeImpersonatePrivilege

SeCreateGlobalPrivilege

SeIncreaseWorkingSetPrivilege

SeTimeZonePrivilege

SeCreateSymbolicLinkPrivilege

SeDelegateSessionUserImpersonatePrivilege

Gdy UAC jest włączony, aplikacje tego samego użytkownika można uruchamiać w dwóch kontekstach (uprzywilejowanym i nieuprzywilejowanym). Podczas podłączania współdzielonych folderów sieciowych system tworzy dowiązania symboliczne (DosDevices), które przechowują mapowanie liter dysków i ścieżek UNC. Łącza te są powiązane z bieżącą sesją dla bieżącego tokenu dostępu do procesu i nie są dostępne z poziomu innego tokenu.

W związku z tym może również wystąpić odwrotny problem: jeśli użytkownik ma uprawnienia administratora na swoim komputerze, to podczas podłączania dysków sieciowych za pomocą skryptów logowania zasad grupy, zadań harmonogramu lub SCCM (które działają z podwyższonymi uprawnieniami), dyski te nie są widoczne dla użytkownika w Eksploratorze Windows (proces nieuprzywilejowany).

Uwaga. W systemie Windows Server można uruchomić Eksploratora Windows z podwyższonymi uprawnieniami.

Aby obejść ten problem, możesz zalecić połączenie (przez wykorzystanie netto lub rundll32 SHELL32.dll, SHHelpShortcuts_RunDLL Connect) dyski sieciowe w kontekście wiersza polecenia uruchamianego z uprawnieniami administratora. Ale to rozwiązanie nie zawsze ma zastosowanie i nie jest zbyt wygodne..

Istnieje prostsze rozwiązanie, do jego wdrożenia należy wprowadzić następujące zmiany w rejestrze:

  1. Otwórz Edytor rejestru (regedit.exe).
  2. Przejdź do klucza rejestru HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System .
  3. Utwórz nowy parametr (typu DWORD) o nazwie EnableLinkedConnections i wartość 1 .
    Wskazówka. Możesz zrobić to samo za pomocą jednego polecenia:
    reg dodaj „HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System” / v „EnableLinkedConnections” / t REG_DWORD / d 0x00000001 / f
  4. Uruchom ponownie komputer (lub ponownie uruchom usługę LanmanWorkstation).

Po ponownym uruchomieniu upewnij się, że użytkownik widzi dyski sieciowe z programów uruchomionych z uprawnieniami administratora. Odwrotnie jest również prawda, wszystkie dyski sieciowe podłączone w kontekście sesji uprzywilejowanej będą dostępne w zwykłej sesji.

Wskazówka. Niestety w zasadach grupy nie ma możliwości włączenia parametru EnableLinkedConnections, więc aby rozpowszechnić te ustawienia na komputerach w domenie, konieczne będzie rozpowszechnienie tego ustawienia rejestru na komputerach korzystających z GPP.

Jak to działa. Po włączeniu wpisu rejestru EnableLinkedConnections usługa LanmanWorkstation i LSA sprawdzą, czy jest drugi token dostępu powiązany z bieżącą sesją użytkownika. Jeśli taki token dostępu zostanie znaleziony, lista zmapowanych dysków sieciowych zostanie skopiowana z jednego tokena na drugi. W ten sposób dyski sieciowe podłączone w trybie uprzywilejowanym będą widoczne w trybie normalnym i odwrotnie.
Wskazówka. Alternatywnym rozwiązaniem jest utworzenie dowiązania symbolicznego do docelowego katalogu sieciowego. Na przykład tak
mklink / D c: \ docs \\ msk-fs1 \ docs
Dostęp do tego katalogu będzie możliwy zarówno w trybie normalnym, jak i uprzywilejowanym. Wśród wad tej metody zauważamy, że dostęp do folderu współdzielonego odbywa się z uprawnieniami bieżącego użytkownika. Nie można, tak jak w przypadku korzystania z sieci, używać innego konta użytkownika.