В Windows 7 у меня есть программа командной строки, которая не работает из-за ошибок разрешения записи файла, и появляется неприятный диалог
Что именно делает "Запуск от имени администратора"?
Ответ 1
При входе в Windows создается токен доступа. Это идентифицирует вас, группы, в которых вы участвуете, и ваши привилегии. Обратите внимание, что независимо от того, является ли пользователь администратором или нет, определяется, является ли пользователь членом группы "Администраторы".
Без UAC при запуске программы он получает копию токена доступа, и это контролирует доступ к программе.
В UAC при запуске программы он получает токен ограниченного доступа. Это оригинальный токен доступа с "Администраторами", удаленный из списка групп (и некоторые другие изменения). Даже если ваш пользователь входит в группу "Администраторы", программа не может использовать привилегии администратора.
Когда вы выбираете "Запуск от имени администратора", а ваш пользователь является администратором, программа запускается с оригинальным неограниченным токеном доступа. Если ваш пользователь не является администратором, вам предлагается ввести учетную запись администратора, а программа запускается под этой учетной записью.
Ответ 2
Итак... больше копать, с результатом. Кажется, что, хотя я запускал обычный процесс и один "как администратор", у меня был UAC. Превращение UAC в среду позволило мне увидеть разные результаты. В принципе, все это сводится к уровням целостности, которые составляют 5.
Браузеры, например, работают на низком уровне (1), а службы (пользователь системы) работают на уровне системы (4). Все хорошо объяснено в Конструкция механизма целостности Windows. Когда UAC включен, процессы создаются со средним уровнем (добавляется SID S-1-16-8192 AKA 0x2000), а когда "Запуск от имени администратора", процесс создается с помощью High Level (SID S-1-16-12288 aka 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
для не-admin.
Обратите внимание, что S-1-5-32-544 является BUILTIN\Administrators. Кроме того, есть меньше привилегий, и самое главное заметить:
админ:
S-1-16-12288
Attributes - GroupIntegrity GroupIntegrityEnabled
while для non-admin:
S-1-16-8192
Attributes - GroupIntegrity GroupIntegrityEnabled
Надеюсь, это поможет.
Дополнительная литература: http://www.blackfishsoftware.com/blog/don/creating_processes_sessions_integrity_levels
Ответ 3
UPDATE
"Запустить как Aministrator" - это просто команда, позволяющая программе продолжить выполнение некоторых операций, требующих привилегий администратора, без отображения предупреждений UAC.
Даже если ваш пользователь является членом группы администраторов, некоторым приложениям, таким как ваш, необходимы права администратора для продолжения работы, поскольку приложение считается небезопасным, если оно выполняет какую-либо специальную операцию, например, редактирование системного файла или что-то еще, Именно по этой причине Windows нуждается в привилегии администратора для выполнения приложения и уведомляет вас о предупреждении UAC. Не всем приложениям требуется учетная запись Amnistrator для запуска, а некоторым приложениям, таким как ваша, нужны привилегии администратора.
Если вы выполняете приложение с командой "запускать как администратор", вы уведомляете систему о том, что ваше приложение безопасно, и выполняйте что-то, что требует прав администратора, с подтверждением.
Если вы хотите этого избежать, просто отключите UAC на панели управления.
Если вы хотите пойти дальше, прочитайте вопрос Разница между "Запуск от имени администратора" и группой администраторов Windows 7 на форуме Microsoft или this Вопрос SuperUser.
Ответ 4
Такие вещи, как "возвышает привилегии", "токен ограниченного доступа", "привилегия администратора"... в любом случае, что такое привилегия администратора? нонсенс.
Вот 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)
Извините, я пока не могу добавить много света, но я все еще копаю.
Ответ 5
Windows 7 требует, чтобы вы намеренно запрашивали определенные привилегии, чтобы вредоносная программа не могла причинить вам вреда. Если бесплатный калькулятор, который вы загрузили, должен быть запущен как администратор, вы бы знали, что что-то не так. Есть команды OS, чтобы повысить привилегию вашего приложения (которое запросит подтверждение от пользователя).
Хорошее описание можно найти по адресу:
Ответ 6
Команда "Запуск от * Anything" позволяет вам выйти из системы и войти в систему как пользователь, для которого вы используете команду runas.
Причины попросят эту повышенную привилегию, начатую с Black Comb и Panther. Существует 0 доступ к ядру в окнах, если только через подсказку администратора, а затем это только виртуальное отношение к ядру O/S.
Hoorah!
Ответ 7
Немного яснее... Программная программа, имеющая доступ к режиму режима ядра, имеет полный доступ ко всем компьютерным данным и их аппаратным средствам.
Так как Windows Vista Microsoft прекратила все процессы ввода-вывода от обращения к ядру (ring 0) напрямую снова. Самое близкое, что мы получаем, это папка, созданная как раздел доступа к виртуальному ядру, но технически не доступ к самому ядру; ядро встречается на полпути.
Это связано с тем, что само программное обеспечение определяет, какой токен использовать, поэтому, если он запрашивает токен доступа администратора, вместо того, чтобы просто общаться с ядром, как на Windows XP, вам предлагается разрешить доступ к ядру, каждый и каждый раз. Изменение UAC может уменьшить количество запросов, но никогда не запрашивает ядро.
Даже когда вы входите в систему как администратор, вы запускаете процессы как стандартный пользователь, пока не появится запрос на повышение прав, которые у вас есть. Я верю, что вошел в систему, так как администратор избавил вас от ввода учетных данных. Но он также записывает структуру папок пользователей администратора.
Доступ к ядру аналогичен доступу root в Linux. Когда вы повышаете свои разрешения, вы изолируете себя от корня C:\и любых прекрасных переменных окружения содержатся внутри.
Если вы помните BSOD, это была остановка ОС, когда она полагала, что ядро достигло плохого ввода-вывода.
Ответ 8
Хорошо, повторите повтор...
Фактический вопрос (и отличный в этом)
"Что делает" run as admin ", что это не член группы администраторов?"
(ответ) 1. Он позволяет вам вызывать права администратора во время сеанса пользователя.
Примечание: вопрос неправильно поставлен; один - это команда, а другой - групповой объект для применения политик.
Откройте командную строку и введите runas /?
.
В этом списке перечислены все ключи, которые может использовать командная строка runas
.
Что касается группы администраторов, это основано на GPEDIT или SECPOL и присутствует или нет администратор домена или нет или сеть присутствует или нет.
Обычно эти вещи будут применять ограничения на компьютеры, на которые не влияет группа администраторов.
Вопрос должен быть
Что делает администратор runas, который запускается, поскольку пользователь этого не делает?
ИЛИ
Что делает группа "Администратор" в том, что настраиваемая группа пользователей не может?
Вы смешиваете яблоки и апельсины.