Přístup k síťovým jednotkám z programů spuštěných se zvýšenými oprávněními

Jedním z významných bezpečnostních vylepšení operačního systému Windows (počínaje systémem Vista) bylo zavedení funkce Řízení uživatelských účtů (UAC). Řízení uživatelských účtů vyžaduje potvrzení uživatele při každém spuštění programu, který se pokouší provést změny nastavení systému. Jedním z vedlejších účinků UAC je neschopnost přístupu připojen (prostřednictvím net použití) síťové jednotky z aplikací běžících v privilegovaném režimu (Spustit jako správce). To znamená, že při spuštění příkazového řádku nebo správce souborů (stejného Total Commander) se zvýšenými právy nebudou obsahovat (nepřístupná) písmena jednotek připojených síťových složek.

V této poznámce ukážeme, jak ve Windows 10, Windows 8.1 a Windows 7 udělit přístup k síťovým jednotkám z aplikací spuštěných v privilegovaném režimu (spustit jako správce). Problém se projevuje jak pro síťové složky připojené prostřednictvím skupinových zásad, tak pro složky připojených uživatelů nezávisle.

Je důležité. Důrazně se nedoporučuje úplně deaktivovat UAC, a to i pro jednu konkrétní aplikaci.

Pokud je UAC povolen z „privilegované“ aplikace ve Windows, nemůžete získat přístup k síťové jednotce připojené v normálním režimu. Ukážeme, jak problém vypadá. Například se ujistěte, že na příkazovém řádku spuštěném s právy běžného uživatele systému máte přístup k obsahu připojené síťové jednotky Z: \.

Pokud v kontextu stejného uživatele otevřete okno příkazového řádku s právy správce, pak se při pokusu o přístup ke stejné jednotce zobrazí zpráva, že zadaná cesta nebyla nalezena:

Systém nemůže najít zadanou cestu..

Toto chování systému může způsobit řadu nepříjemností, když jsou aplikace často spouštěny v privilegovaném režimu. Můžete spouštět aplikace bez oprávnění správce, ale to není vždy použitelné.

Proč se to děje? Tato funkce je spojena s mechanismem UAC pro uživatele s právy místního správce. Faktem je, že když se takový uživatel přihlásí do systému, vytvoří se dva přístupové tokeny: jeden přístupový token s zakázanými administrátorskými právy (filtrovaný přístupový token - od kterého se spouští většina programů) a plnohodnotný administrátorský token s plnými právy v systému (v této souvislosti) všechny programy, které obdržely potvrzení o zvýšení práv v UAC, jsou spuštěny).

Pokud používáte příkaz whoami / všechny porovnat současná oprávnění stejného uživatele ve dvou relacích cmd.exe (běžných a privilegovaných), můžete vidět, že se velmi liší. V následující tabulce jsou uvedeny rozdíly ve skupinách a aktuální pověření v každé relaci..

Pravidelná relace uživatelePrivilegovaná uživatelská relace
Přístupová skupinaPovinné označení \ Střední povinné označení úrovně S-1-16-8192Povinný štítek \ Štítek s vysokou povinnou úrovní S-1-16-12288
OprávněníSeLockMemoryPrivilege

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

Pokud je povoleno UAC, lze aplikace pod stejným uživatelem spouštět ve dvou kontextech (privilegované a neprivilegované). Při připojování sdílených síťových složek vytvoří systém symbolické odkazy (DosDevices), které ukládají mapování písmen jednotek a cest UNC. Tato propojení jsou spojena s aktuální relací pro aktuální token přístupu k procesu a nejsou přístupná z jiného tokenu.

V důsledku toho může nastat i opačný problém: pokud má uživatel ve svém počítači administrátorská práva, pak při připojování síťových jednotek prostřednictvím přihlašovacích skriptů skupinových zásad, plánovacích úkolů nebo SCCM (které se spouštějí se zvýšenými oprávněními), tyto jednotky nejsou uživateli v Průzkumníkovi Windows viditelné. (neprivilegovaný proces).

Poznámka:. Na Windows Server můžete spustit Průzkumník Windows se zvýšenými oprávněními.

Jako řešení můžete doporučit připojení (přes čisté použití nebo rundll32 SHELL32.dll, SHHelpShortcuts_RunDLL Connect) síťové jednotky v kontextu příkazového řádku spuštěného s oprávněními správce. Toto řešení však není vždy použitelné a není příliš pohodlné..

Existuje jednodušší řešení, pro jeho implementaci musíte provést následující změny v registru:

  1. Otevřete Editor registru (regedit.exe).
  2. Přejděte do klíče registru HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System .
  3. Vytvořte nový parametr (typu DWORD) s názvem EnableLinkedConnections a hodnotu 1 .
    Tip. To samé můžete udělat jedním příkazem:
    reg add "HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System" / v "EnableLinkedConnections" / t REG_DWORD / d 0x00000001 / f
  4. Restartujte počítač (nebo restartujte službu LanmanWorkstation).

Po restartu se ujistěte, že uživatel vidí síťové jednotky z programů spuštěných s právy správce. Obrátit se také platí, všechny síťové jednotky připojené v rámci privilegované relace budou k dispozici v běžné relaci.

Tip. Bohužel ve skupinových zásadách neexistuje způsob, jak povolit parametr EnableLinkedConnections, takže k distribuci těchto nastavení do doménových počítačů budete muset toto nastavení registru distribuovat do počítačů využívajících GPP.

Jak to funguje. Po povolení položky registru EnableLinkedConnections budou služby LanmanWorkstation a LSA zkontrolovat druhý přístupový token spojený s aktuální relací uživatele. Pokud je takový token přístupu nalezen, bude seznam mapovaných síťových jednotek zkopírován z jednoho tokenu na druhý. Síťové jednotky připojené v privilegovaném režimu budou tedy viditelné v normálním režimu a naopak.
Tip. Alternativním řešením je vytvoření symbolického odkazu na cílový síťový adresář. Například ano
mklink / D c: \ docs \\ msk-fs1 \ docs
Přístup k tomuto adresáři bude možný v normálním i privilegovaném režimu. Mezi nevýhody této metody patří, že přístup ke sdílené složce je prováděn s oprávněními aktuálního uživatele. Stejně jako v případě čistého použití nemůžete použít jiný uživatelský účet.