
Одним з істотних поліпшень системи безпеки ОС сімейства Windows (починаючи з Vista) було впровадження функціоналу User Account Control (UAC). Служба захисту користувачів запитує підтвердження користувача кожного разу, коли запускається програма намагається внести зміни в параметри системи. Одним з побічних ефектів роботи UAC є неможливість доступу до підключеним (через net use) Мережевих дисків з додатків, запущених в привілейованому режимі (Run As Administrator). Це означає, що при запуску командного рядка або файлового менеджера (того ж, Total Commander) з підвищеними правами, в них будуть відсутні (не доступні) літери дисків змонтованих мережевих папок.
У цій замітці ми покажемо, як в Windows 10, Windows 8.1 і Windows 7 надати доступ до мережевих дисків з програм, які потребують привілейованому режимі (Запущених від імені адміністратора). Проблема проявляється як для мережевих папок, підключених через групові політики, так і для папок підключених користувачів самостійно.
важливо. Настійно не рекомендується зовсім відключати UAC, навіть для одного конкретного додатка.Дійсно, при включеному UAC з "привілейованого" додатка в Windows можна отримати доступ до підключеного в звичайному режимі мережного диска. Продемонструємо, як виглядає проблема. Наприклад, переконаємося, що в командному рядку, запущеної з правами звичайного користувача системи, є доступ до вмісту підключеного мережевого диска Z: \.
Якщо в контексті цього ж користувача відкрити вікно командного рядка з правами адміністратора, то при спробі отримати доступ до цього ж диску, з'явиться повідомлення, що зазначений шлях не знайдений:
The system can not find the path specified.Сістеме не вдається знайти вказаний шлях.Така поведінка системи може викликати ряд незручностей при частому запуску додатків в привілейованому режимі. Можна запускати додатки без прав Администартор, але це не завжди можна застосувати.
Чому це відбувається? Дана особливість пов'язана з механізмом роботи UAC для користувача з правами локального адміністратора. Справа в тому, що при вході такого користувача в систему створюються два маркера доступу: один маркер доступу з відключеними правами адміністратора (маркер фільтрованої доступу - з-під якого запускаються більшість програм) і маркер повноцінного адміністратора, який володіє повними правами в системі (в цьому контексті виконуються всі програми, які отримали підтвердження на підвищення прав в UAC).
Якщо за допомогою команди whoami / all
порівняти поточні привілеї одного і того ж користувача в двох сесіях cmd.exe (звичайної і привілейованої), можна побачити, що вони сильно відрізняються. У цій таблиці наведено відмінності в групах і поточних повноваження в кожної сесії.
Звичайна сесія користувача | Привілейованих сесіія користувача | |
Група доступу | Обов'язкова мітка \ Середній обов'язковий рівень (Medium Mandatory Level) Метка S-1-16-8192 | Обов'язкова мітка \ Високий обов'язковий рівень (High Mandatory Level) Метка S-1-16-12288 |
привелегии | 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 |
При включеному UAC додатки під одним і тим же користувачем можуть запускатися в двох контекстах (привілейованому і непривілейованому). При підключенні загальних мережевих папок, система створює символічні посилання (DosDevices), в які зберігається зіставлення букви диска і UNC шляху. Ці посилання асоціюються з поточним сеансом для поточного маркера доступу процесу і з-під іншого маркера недоступні.
Відповідно, може мати місце і зворотна проблема: якщо користувач володіє правами адміністратора на своєму комп'ютері, то при підключенні мережевих дисків через логон-скрипти групових політик, завдання планувальника або SCCM (які запускаються з підвищеними привілеями), ці диски не видно користувачеві в провіднику Windows (непривілейований процес).
Примітка. У Windows Server можна запустити Провідник Windows з підвищеними привілеями.Як обхідного рішення можна порекомендувати підключати (через net use
або rundll32 SHELL32.dll, SHHelpShortcuts_RunDLL Connect
) Мережеві диски в контексті командному рядку, запущеної з правами адміністратора. Але це рішення не завжди може бути застосовано, і не дуже зручно.
Є більш просте рішення, для його реалізації потрібно внести наступні зміни до реєстру:
- Відкрийте редактор реєстру (regedit.exe).
- Перейдіть в розділ реєстру HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System .
- Створіть новий параметр (типу DWORD) з ім'ям EnableLinkedConnections і значенням 1 .
Порада. Те ж саме можна зробити однією командою:reg add "HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System" / v "EnableLinkedConnections" / t REG_DWORD / d 0x00000001 / f
- Перезавантажте комп'ютер (або перезапустіть службу LanmanWorkstation).
Після перезавантаження переконайтеся, що користувач бачить мережеві дискам з програм, запущених з правами адміністратора. Вірно і зворотне твердження, всі мережеві диски, підключені в контексті привілейованої сесії, будуть доступні і в звичайній сесії.
Як це працює. Після включення параметра реєстру EnableLinkedConnections, служба LanmanWorkstation і LSA перевірятимуть наявність другого маркера доступу, пов'язаного з сесією поточного користувача. Якщо такий маркер доступу буде виявлений, список підключених мережевих дисків буде скопійований з одного маркера в інший. Таким чином мережеві диски, підключені в привілейованому режимі, буде видно в звичайному і навпаки.
Порада. Як альтернативне рішення можна запропонувати створити символічне посилання на цільовий мережевий каталог. Наприклад, такmklink / D c: \ docs \\ msk-fs1 \ docs
Доступ до даного каталогу буде можливий і в звичайному і в привілейованому режимі. З недоліків методу, відзначимо, що доступ на загальну папку виконується з повноваженнями поточного користувача. Не можна, як у випадку з net use, використовувати обліковий запис іншого користувача.