Что именно делает "Запуск от имени администратора"? [закрытый]
в Windows 7 у меня есть программа командной строки, которая не работает из-за ошибок разрешения на запись файлов и появляется раздражает UAC диалоги каждый раз, когда я запускаю программы командной строки из "неизвестного издателя".
однако, если я запускаю консоль, щелкнув правой кнопкой мыши и выбрав "Запуск от имени администратора", то установка работает нормально, даже если диалоговые окна UAC все еще присутствуют.
мой пользователь уже является членом группы "администраторы", так что точно ли "запуск от имени администратора"делает это, что делает мою работу по установке?
мой конкретный вопрос точно: что делает "запуск от имени администратора"? Ни один из ответов до сих пор не касается этого. (например, запускает ли он новый процесс как пользователь "администратор"? Или он запускает процесс как текущий пользователь, но с повышенными привилегиями? Если да, то какие льготы? Как это отличается от привилегий, которые я получаю от моего пользователя, находящегося в "администраторах" группа?
(в частности, я использую "консоль" от SourceForge, не обычное окно CMD, но я не думаю, что это важно. Это все при установке пакета Python 'distribute', запустив 'python distribute_setup.py' на недавно установленном python3 MSI от python.org это 32-разрядный Python на 64-разрядной Windows. Смотрите установка Python и распространение на Windows 7 дает " ошибка записи ... в разрешении отказано")
8 ответов:
при входе в систему Windows создает маркер доступа. Это идентифицирует вас, группы, в которых вы являетесь членом, и ваши привилегии. И обратите внимание, что, является ли пользователь администратором или нет определяется, является ли пользователь членом группы "администраторы".
без UAC, при запуске программы он получает копию маркера доступа, и это управляет тем, что программа может получить доступ.
с UAC, когда вы запускаете программу, она получает маркер ограниченного доступа. Это оригинальный токен доступа с "администраторами" удален из списка групп (и некоторые другие изменения). Несмотря на то, что пользователь является членом группы администраторов, программа не может использовать права администратора.
когда вы выбираете "Запуск от имени администратора" и ваш пользователь является администратором, программа запускается с оригинальным маркером неограниченного доступа. Если пользователь не является администратором вам будет предложено ввести учетную запись администратора, и программа под это счет.
так ... больше копать, с результатом. Похоже, что хотя я запустил один процесс нормально и один "как администратор", у меня был отключен UAC. Превращение ОАК в medium позволило мне увидеть разные результаты. В принципе, все это сводится к уровням целостности, которые равны 5.
браузеры, например, работают на низком уровне (1), в то время как службы (системный пользователь) работают на системном уровне (4). Все очень хорошо объясняется в Дизайн Механизма Целостности Windows . Когда контроль учетных записей включено, процессы создаются со средним уровнем (SID S-1-16-8192 AKA 0x2000 добавляется) в то время как при "запуске от имени администратора" процесс создается с высоким уровнем (SID S-1-16-12288 он же 0x3000).
таким образом, правильный ACCESS_TOKEN для обычного пользователя (средний уровень целостности) является:
0:000:x86> !token Thread is not impersonating. Using process token... TS Session ID: 0x1 User: S-1-5-21-1542574918-171588570-488469355-1000 Groups: 00 S-1-5-21-1542574918-171588570-488469355-513 Attributes - Mandatory Default Enabled 01 S-1-1-0 Attributes - Mandatory Default Enabled 02 S-1-5-32-544 Attributes - DenyOnly 03 S-1-5-32-545 Attributes - Mandatory Default Enabled 04 S-1-5-4 Attributes - Mandatory Default Enabled 05 S-1-2-1 Attributes - Mandatory Default Enabled 06 S-1-5-11 Attributes - Mandatory Default Enabled 07 S-1-5-15 Attributes - Mandatory Default Enabled 08 S-1-5-5-0-1908477 Attributes - Mandatory Default Enabled LogonId 09 S-1-2-0 Attributes - Mandatory Default Enabled 10 S-1-5-64-10 Attributes - Mandatory Default Enabled 11 S-1-16-8192 Attributes - GroupIntegrity GroupIntegrityEnabled Primary Group: LocadDumpSid failed to dump Sid at addr 000000000266b458, 0xC0000078; try own SID dump. s-1-0x515000000 Privs: 00 0x000000013 SeShutdownPrivilege Attributes - 01 0x000000017 SeChangeNotifyPrivilege Attributes - Enabled Default 02 0x000000019 SeUndockPrivilege Attributes - 03 0x000000021 SeIncreaseWorkingSetPrivilege Attributes - 04 0x000000022 SeTimeZonePrivilege Attributes - Auth ID: 0:1d1f65 Impersonation Level: Anonymous TokenType: Primary Is restricted token: no.
теперь различия заключаются в следующем:
S-1-5-32-544 Attributes - Mandatory Default Enabled Owner
для "как администратор", в то время как
S-1-5-32-544 Attributes - DenyOnly
для не-администратора.
обратите внимание, что S-1-5-32-544 есть Builtin\администраторы. Кроме того, есть меньше привилегий, и самое главное внимание:
admin:
S-1-16-12288 Attributes - GroupIntegrity GroupIntegrityEnabled
в то время как для не-администратора:
S-1-16-8192 Attributes - GroupIntegrity GroupIntegrityEnabled
Я надеюсь, что это помогает.
дальнейшее чтение: http://www.blackfishsoftware.com/blog/don/creating_processes_sessions_integrity_levels
такие вещи, как" повышает привилегии"," маркер ограниченного доступа"," привилегия администратора"... что, черт возьми, такое привилегия администратора? нонсенс.
вот ACCESS_TOKEN для процесса, обычно выполняемого от пользователя, принадлежащего к группе администраторов.
0: kd> !process 0 1 test.exe PROCESS 87065030 SessionId: 1 Cid: 0d60 Peb: 7ffdf000 ParentCid: 0618 DirBase: 2f22e1e0 ObjectTable: a0c8a088 HandleCount: 6. Image: test.exe VadRoot 8720ef50 Vads 18 Clone 0 Private 83. Modified 0. Locked 0. DeviceMap 8936e560 Token 935c98e0 0: kd> !token -n 935c98e0 _TOKEN 935c98e0 TS Session ID: 0x1 User: S-1-5-21-2452432034-249115698-1235866470-1000 (no name mapped) User Groups: 00 S-1-5-21-2452432034-249115698-1235866470-513 (no name mapped) Attributes - Mandatory Default Enabled 01 S-1-1-0 (Well Known Group: localhost\Everyone) Attributes - Mandatory Default Enabled 02 S-1-5-32-544 (Alias: BUILTIN\Administrators) Attributes - Mandatory Default Enabled Owner 03 S-1-5-32-545 (Alias: BUILTIN\Users) Attributes - Mandatory Default Enabled 04 S-1-5-4 (Well Known Group: NT AUTHORITY\INTERACTIVE) Attributes - Mandatory Default Enabled 05 S-1-2-1 (Well Known Group: localhost\CONSOLE LOGON) Attributes - Mandatory Default Enabled 06 S-1-5-11 (Well Known Group: NT AUTHORITY\Authenticated Users) Attributes - Mandatory Default Enabled 07 S-1-5-15 (Well Known Group: NT AUTHORITY\This Organization) Attributes - Mandatory Default Enabled 08 S-1-5-5-0-85516 (no name mapped) Attributes - Mandatory Default Enabled LogonId 09 S-1-2-0 (Well Known Group: localhost\LOCAL) Attributes - Mandatory Default Enabled 10 S-1-5-64-10 (Well Known Group: NT AUTHORITY\NTLM Authentication) Attributes - Mandatory Default Enabled 11 S-1-16-12288 (Label: Mandatory Label\High Mandatory Level) Attributes - GroupIntegrity GroupIntegrityEnabled Primary Group: S-1-5-21-2452432034-249115698-1235866470-513 (no name mapped) Privs: 05 0x000000005 SeIncreaseQuotaPrivilege Attributes - 08 0x000000008 SeSecurityPrivilege Attributes - 09 0x000000009 SeTakeOwnershipPrivilege Attributes - 10 0x00000000a SeLoadDriverPrivilege Attributes - 11 0x00000000b SeSystemProfilePrivilege Attributes - 12 0x00000000c SeSystemtimePrivilege Attributes - 13 0x00000000d SeProfileSingleProcessPrivilege Attributes - 14 0x00000000e SeIncreaseBasePriorityPrivilege Attributes - 15 0x00000000f SeCreatePagefilePrivilege Attributes - 17 0x000000011 SeBackupPrivilege Attributes - 18 0x000000012 SeRestorePrivilege Attributes - 19 0x000000013 SeShutdownPrivilege Attributes - 20 0x000000014 SeDebugPrivilege Attributes - 22 0x000000016 SeSystemEnvironmentPrivilege Attributes - 23 0x000000017 SeChangeNotifyPrivilege Attributes - Enabled Default 24 0x000000018 SeRemoteShutdownPrivilege Attributes - 25 0x000000019 SeUndockPrivilege Attributes - 28 0x00000001c SeManageVolumePrivilege Attributes - 29 0x00000001d SeImpersonatePrivilege Attributes - Enabled Default 30 0x00000001e SeCreateGlobalPrivilege Attributes - Enabled Default 33 0x000000021 SeIncreaseWorkingSetPrivilege Attributes - 34 0x000000022 SeTimeZonePrivilege Attributes - 35 0x000000023 SeCreateSymbolicLinkPrivilege Attributes - Authentication ID: (0,14e4c) Impersonation Level: Anonymous TokenType: Primary Source: User32 TokenFlags: 0x2000 ( Token in use ) Token ID: d166b ParentToken ID: 0 Modified ID: (0, d052f) RestrictedSidCount: 0 RestrictedSids: 00000000 OriginatingLogonSession: 3e7
... и вот ACCESS_TOKEN для процесса, обычно выполняемого одним и тем же пользователем с "Запуск от имени администратора".
TS Session ID: 0x1 User: S-1-5-21-2452432034-249115698-1235866470-1000 (no name mapped) User Groups: 00 S-1-5-21-2452432034-249115698-1235866470-513 (no name mapped) Attributes - Mandatory Default Enabled 01 S-1-1-0 (Well Known Group: localhost\Everyone) Attributes - Mandatory Default Enabled 02 S-1-5-32-544 (Alias: BUILTIN\Administrators) Attributes - Mandatory Default Enabled Owner 03 S-1-5-32-545 (Alias: BUILTIN\Users) Attributes - Mandatory Default Enabled 04 S-1-5-4 (Well Known Group: NT AUTHORITY\INTERACTIVE) Attributes - Mandatory Default Enabled 05 S-1-2-1 (Well Known Group: localhost\CONSOLE LOGON) Attributes - Mandatory Default Enabled 06 S-1-5-11 (Well Known Group: NT AUTHORITY\Authenticated Users) Attributes - Mandatory Default Enabled 07 S-1-5-15 (Well Known Group: NT AUTHORITY\This Organization) Attributes - Mandatory Default Enabled 08 S-1-5-5-0-85516 (no name mapped) Attributes - Mandatory Default Enabled LogonId 09 S-1-2-0 (Well Known Group: localhost\LOCAL) Attributes - Mandatory Default Enabled 10 S-1-5-64-10 (Well Known Group: NT AUTHORITY\NTLM Authentication) Attributes - Mandatory Default Enabled 11 S-1-16-12288 (Label: Mandatory Label\High Mandatory Level) Attributes - GroupIntegrity GroupIntegrityEnabled Primary Group: S-1-5-21-2452432034-249115698-1235866470-513 (no name mapped) Privs: 05 0x000000005 SeIncreaseQuotaPrivilege Attributes - 08 0x000000008 SeSecurityPrivilege Attributes - 09 0x000000009 SeTakeOwnershipPrivilege Attributes - 10 0x00000000a SeLoadDriverPrivilege Attributes - 11 0x00000000b SeSystemProfilePrivilege Attributes - 12 0x00000000c SeSystemtimePrivilege Attributes - 13 0x00000000d SeProfileSingleProcessPrivilege Attributes - 14 0x00000000e SeIncreaseBasePriorityPrivilege Attributes - 15 0x00000000f SeCreatePagefilePrivilege Attributes - 17 0x000000011 SeBackupPrivilege Attributes - 18 0x000000012 SeRestorePrivilege Attributes - 19 0x000000013 SeShutdownPrivilege Attributes - 20 0x000000014 SeDebugPrivilege Attributes - 22 0x000000016 SeSystemEnvironmentPrivilege Attributes - 23 0x000000017 SeChangeNotifyPrivilege Attributes - Enabled Default 24 0x000000018 SeRemoteShutdownPrivilege Attributes - 25 0x000000019 SeUndockPrivilege Attributes - 28 0x00000001c SeManageVolumePrivilege Attributes - 29 0x00000001d SeImpersonatePrivilege Attributes - Enabled Default 30 0x00000001e SeCreateGlobalPrivilege Attributes - Enabled Default 33 0x000000021 SeIncreaseWorkingSetPrivilege Attributes - 34 0x000000022 SeTimeZonePrivilege Attributes - 35 0x000000023 SeCreateSymbolicLinkPrivilege Attributes - Authentication ID: (0,14e4c) Impersonation Level: Anonymous TokenType: Primary Source: User32 TokenFlags: 0x2000 ( Token in use ) Token ID: ce282 ParentToken ID: 0 Modified ID: (0, cddbd) RestrictedSidCount: 0 RestrictedSids: 00000000 OriginatingLogonSession: 3e7
как вы видите, единственное различие-это знак Код:
Token ID: d166b ParentToken ID: 0 Modified ID: (0, d052f)
vs
Token ID: ce282 ParentToken ID: 0 Modified ID: (0, cddbd)
Извините, я пока не могу добавить много света в это, но я все еще копаю.
обновление
"Run as Aministrator" - это просто команда, позволяющая программе продолжать некоторые операции, требующие прав администратора, без отображения предупреждений UAC.
даже если ваш пользователь является членом группы администраторов, некоторые приложения, такие как ваш, нуждаются в привилегиях администратора для продолжения работы, потому что приложение считается небезопасным, если оно выполняет какую-то специальную операцию, например редактирование системного файла или что-то еще. Именно по этой причине Windows нуждается в привилегии администратора для выполнения приложения, и он уведомляет вас с предупреждением UAC. Не все приложения нуждаются в учетной записи Amnistrator для запуска, а некоторые приложения, такие как ваш, нуждаются в привилегиях администратора.
Если вы выполняете приложение с помощью команды "запуск от имени администратора", вы уведомляете систему о том, что ваше приложение безопасно и делает что-то, что требует прав администратора, с помощью вашего утвердить.
Если вы хотите избежать этого, просто отключите UAC на панели управления.
Если вы хотите пойти дальше, прочитайте вопрос разница между "Запуск от имени администратора" и группой администраторов Windows 7 на форуме Microsoft или этой вопрос суперпользователя.
Windows 7 требует, чтобы вы намеренно запрашивали определенные привилегии, чтобы вредоносная программа не могла делать с вами плохие вещи. Если бесплатный калькулятор, который вы скачали необходимо запустить как администратор, вы бы знали, что что-то происходит. Существуют команды ОС для повышения привилегий вашего приложения (которые будут запрашивать подтверждение от пользователя).
хорошее описание можно найти в:
команда Run as * Anything избавляет вас от выхода из системы и входа в систему в качестве пользователя, для которого вы используете команду runas.
причина, по которой программы запрашивают эту повышенную привилегию, началась с Черного гребня и папки Panther. Существует 0 доступ к ядру в windows, если только через приглашение администратора, а затем это только виртуальное отношение с ядром O/S.
Ура!
немного яснее... Программное обеспечение, которое имеет ядро режим доступа имеет полный доступ ко всем данным компьютера и его аппаратных средств.
поскольку Windows Vista Microsoft остановила все процессы ввода-вывода от прямого доступа к ядру (кольцо 0) когда-либо снова. Самое близкое, что мы получаем, - это папка, созданная как виртуальный раздел доступа к ядру, но технически нет доступа к самому ядру; ядро встречается на полпути.
Это потому, что само программное обеспечение диктует, какой маркер использовать, поэтому, если он запрашивает маркер доступа администратора, вместо того, чтобы просто разрешать связь с ядром, как в Windows XP, вам будет предложено разрешить доступ к ядру каждый раз. Изменение UAC может уменьшить запросы, но никогда не запросы ядра.
даже когда вы входите в систему как администратор, вы запускаете процессы как обычный пользователь, пока не будет предложено повысить права, которые у вас есть. Я считаю, что вход в систему как администратор спасает вас от ввод учетных данных. Но он также записывает в структуру папок пользователей администратора.
доступ к ядру аналогичен корневому доступу в Linux. Когда вы повышаете свои разрешения, вы изолируете себя от корня C:\ и любых прекрасных переменных среды, содержащихся внутри.
Если вы помните BSODs, это было выключение ОС, когда он считал, что плохой ввод-вывод достиг ядра.
Хорошо, давайте повторим...
вопрос (и блестящий)
"что делает "запуск от имени администратора", что не является членом группы администраторов?"
(ответ)1. Он позволяет вызывать права администратора во время сеанса пользователя.
Примечание: вопрос неправильно поставлен; один-это команда, а другой-объект группы для применения политика.
Откройте командную строку и введите
runas /?
.это будет список всех переключателей
runas
можно использовать командную строку.Что касается группы администраторов, она основана на GPEDIT или SECPOL и независимо от того, присутствует ли администратор домена или нет, или сеть присутствует или нет.
обычно эти вещи будут применять ограничения на компьютерах, которые не затрагивают группу администраторов.
вопрос должен будь
что делает администратор runas, который работает от имени пользователя?
или
что делает группа администраторов, что настроенная группа пользователей не может?
вы смешиваете яблоки и апельсины.