Что именно делает "Запуск от имени администратора"? [закрытый]


в Windows 7 у меня есть программа командной строки, которая не работает из-за ошибок разрешения на запись файлов и появляется раздражает UAC диалоги каждый раз, когда я запускаю программы командной строки из "неизвестного издателя".

однако, если я запускаю консоль, щелкнув правой кнопкой мыши и выбрав "Запуск от имени администратора", то установка работает нормально, даже если диалоговые окна UAC все еще присутствуют.

мой пользователь уже является членом группы "администраторы", так что точно ли "запуск от имени администратора"делает это, что делает мою работу по установке?

мой конкретный вопрос точно: что делает "запуск от имени администратора"? Ни один из ответов до сих пор не касается этого. (например, запускает ли он новый процесс как пользователь "администратор"? Или он запускает процесс как текущий пользователь, но с повышенными привилегиями? Если да, то какие льготы? Как это отличается от привилегий, которые я получаю от моего пользователя, находящегося в "администраторах" группа?

(в частности, я использую "консоль" от SourceForge, не обычное окно CMD, но я не думаю, что это важно. Это все при установке пакета Python 'distribute', запустив 'python distribute_setup.py' на недавно установленном python3 MSI от python.org это 32-разрядный Python на 64-разрядной Windows. Смотрите установка Python и распространение на Windows 7 дает " ошибка записи ... в разрешении отказано")

8 57

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 требует, чтобы вы намеренно запрашивали определенные привилегии, чтобы вредоносная программа не могла делать с вами плохие вещи. Если бесплатный калькулятор, который вы скачали необходимо запустить как администратор, вы бы знали, что что-то происходит. Существуют команды ОС для повышения привилегий вашего приложения (которые будут запрашивать подтверждение от пользователя).

хорошее описание можно найти в:

http://msdn.microsoft.com/en-us/magazine/cc163486.aspx#S4

команда 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, который работает от имени пользователя?

или

что делает группа администраторов, что настроенная группа пользователей не может?

вы смешиваете яблоки и апельсины.