Prístup k sieťovým diskom z programov spustených so zvýšenými oprávneniami

Jedným z významných bezpečnostných vylepšení operačného systému Windows (počnúc systémom Vista) bolo zavedenie funkcie UAC (User Account Control). Kontrola používateľských účtov vyžaduje potvrdenie používateľa pri každom spustení programu, ktorý sa pokúša vykonať zmeny v systémových nastaveniach. Jedným z vedľajších účinkov UAC je neschopnosť prístupu pripojený (prostredníctvom netto použitie) sieťové jednotky od aplikácií bežiacich v privilegovanom režime (Spustiť ako správca). To znamená, že keď spustíte príkazový riadok alebo správcu súborov (toho istého Total Commander) so zvýšenými právami, nebudú obsahovať (neprístupné) písmená jednotiek pripojených sieťových priečinkov..

V tejto poznámke ukážeme, ako vo Windows 10, Windows 8.1 a Windows 7 udeliť prístup k sieťovým diskom z aplikácií spustených v privilegovanom režime (spustiť ako správca). Problém sa prejavuje tak pre sieťové priečinky pripojené prostredníctvom skupinových politík, ako aj pre priečinky pripojených používateľov nezávisle.

Je dôležité. Dôrazne sa odporúča úplne zakázať UAC, a to aj pre jednu konkrétnu aplikáciu.

Ak je UAC povolený v „privilegovanej“ aplikácii vo Windows, nemôžete získať prístup k sieťovej jednotke pripojenej v normálnom režime. Ukážme, ako problém vyzerá. Napríklad sa uistite, že na príkazovom riadku spustenom s právami bežného používateľa systému máte prístup k obsahu pripojenej sieťovej jednotky Z: \.

Ak v kontexte toho istého používateľa otvoríte okno príkazového riadka s právami správcu, potom pri pokuse o prístup k tej istej jednotke sa zobrazí správa, že zadaná cesta sa nenašla:

Systém nemôže nájsť zadanú cestu..

Toto správanie systému môže spôsobiť množstvo nepríjemností, keď sa aplikácie často spúšťajú v privilegovanom režime. Aplikácie môžete spúšťať bez oprávnení správcu, čo však nie vždy platí.

Prečo sa to deje? Táto funkcia je spojená s mechanizmom UAC pre používateľa s právami miestneho administrátora. Faktom je, že keď sa takýto užívateľ prihlási do systému, vytvoria sa dva prístupové tokeny: jeden prístupový token s vypnutými právami administrátora (filtrovaný prístupový token - z ktorého sa spúšťa väčšina programov) a plnohodnotný administrátorský token s plnými právami v systéme (v tomto kontexte vykonávajú sa všetky programy, ktoré dostali potvrdenie o zvýšení práv v UAC).

Ak používate príkaz whoami / všetky porovnajte súčasné privilégiá toho istého používateľa v dvoch reláciách cmd.exe (bežných a privilegovaných), môžete vidieť, že sa veľmi líšia. V nasledujúcej tabuľke sú uvedené rozdiely v skupinách a aktuálne poverenia v každej relácii..

Pravidelná relácia používateľaPrivilegovaná relácia používateľa
Prístupová skupinaPovinná etiketa \ Štítok so strednou povinnou úrovňou S-1-16-8192Povinná etiketa \ Štítok s vysokou povinnou úrovňou S-1-16-12288
oprávnenieSeLockMemoryPrivilege

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

Ak je povolený UAC, aplikácie pod tým istým používateľom sa môžu spúšťať v dvoch kontextoch (privilegované a neprivilegované). Pri pripájaní zdieľaných sieťových priečinkov systém vytvára symbolické odkazy (DosDevices), ktoré ukladajú mapovanie písmen jednotiek a ciest UNC. Tieto prepojenia sú spojené s aktuálnou reláciou pre aktuálny token prístupu k procesu a nie sú prístupné z iného tokenu.

Podobne sa môže vyskytnúť aj opačný problém: ak má užívateľ vo svojom počítači administrátorské práva, potom pri pripájaní sieťových jednotiek prostredníctvom prihlasovacích skriptov skupinových politík, plánovacích úloh alebo SCCM (ktoré sa spúšťajú so zvýšenými oprávneniami), tieto jednotky nie sú pre používateľa v Prieskumníkovi Windows viditeľné. (neprivilegovaný proces).

poznámka. Na systéme Windows Server môžete spustiť program Prieskumník systému Windows so zvýšenými oprávneniami.

Ako riešenie môžete odporučiť pripojenie (cez čisté použitie alebo rundll32 SHELL32.dll, SHHelpShortcuts_RunDLL Connect) sieťové jednotky v kontexte príkazového riadka, ktorý sa spúšťa s oprávneniami správcu. Toto riešenie však nie je vždy použiteľné a nie príliš pohodlné..

Existuje jednoduchšie riešenie, na jeho implementáciu je potrebné vykonať nasledujúce zmeny v registri:

  1. Otvorte Editor databázy Registry (regedit.exe).
  2. Prejdite na kľúč databázy Registry HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System .
  3. Vytvorte nový parameter (typu DWORD) s názvom EnableLinkedConnections a hodnota 1 .
    rada. To isté môžete urobiť jedným príkazom:
    reg add "HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System" / v "EnableLinkedConnections" / t REG_DWORD / d 0x00000001 / f
  4. Reštartujte počítač (alebo reštartujte službu LanmanWorkstation).

Po reštarte sa uistite, že používateľ vidí sieťové jednotky z programov spustených s právami správcu. Opačne platí, že všetky sieťové jednotky pripojené v rámci privilegovanej relácie budú dostupné v pravidelnej relácii.

rada. Bohužiaľ, v skupinových zásadách neexistuje spôsob, ako povoliť parameter EnableLinkedConnections, takže aby ste tieto nastavenia mohli distribuovať do doménových počítačov, budete musieť toto nastavenie registra distribuovať do počítačov používajúcich GPP..

Ako to funguje. Po povolení položky registra EnableLinkedConnections služby LanmanWorkstation a LSA skontrolujú, či je k aktuálnej užívateľskej relácii priradený druhý prístupový token. Ak sa nájde taký prístupový token, zoznam mapovaných sieťových jednotiek sa skopíruje z jedného tokenu na druhý. Sieťové jednotky pripojené v privilegovanom režime budú teda viditeľné v normálnom režime a naopak.
rada. Alternatívnym riešením je vytvorenie symbolického odkazu na cieľový sieťový adresár. Napríklad tak
mklink / D c: \ docs \\ msk-fs1 \ docs
Prístup k tomuto adresáru bude možný v normálnom aj privilegovanom režime. Medzi nevýhody tejto metódy patrí, že prístup do zdieľaného priečinka sa vykonáva s oprávneniami aktuálneho používateľa. Rovnako ako v prípade čistého použitia nemôžete použiť iný používateľský účet.