programing tip

'관리자 권한으로 실행'은 정확히 무엇을합니까?

itbloger 2020. 12. 1. 07:45
반응형

'관리자 권한으로 실행'은 정확히 무엇을합니까?


Windows 7에는 파일 쓰기 권한 오류로 인해 실패 하는 명령 줄 프로그램이 있으며 '알 수없는 게시자'의 명령 줄 프로그램을 실행할 때마다 성가신 UAC 대화 상자가 표시됩니다.

그러나 마우스 오른쪽 버튼을 클릭하고 '관리자 권한으로 실행'을 선택하여 콘솔을 시작하면 UAC 대화 상자가 여전히 존재하더라도 설치가 정상적으로 작동합니다.

내 사용자는 이미 '관리자'그룹의 구성원입니다. 그렇다면 '관리자 권한으로 실행'이 정확히 어떤 작업을 수행하여 설치가 작동합니까?

내 구체적인 질문은 정확히 : '관리자 권한으로 실행'은 무엇을합니까? 지금까지의 답변 중 어느 것도 이것을 다루지 않습니다. (예를 들어 새 프로세스를 '관리자'사용자로 실행합니까? 아니면 현재 사용자로 프로세스를 실행하지만 상승 된 권한으로 실행합니까? 그렇다면 어떤 권한이 있습니까? 내 권한에서 얻는 권한과 어떻게 다릅니 까? 사용자가 '관리자'그룹에 있습니까?

(특히, 일반 CMD 창이 아닌 SourceForge 의 'Console'을 사용하고 있지만 그게 중요하지 않다고 생각합니다. 이것은 모두 'python distribution_setup.py'를 실행하여 Python 'distribute'패키지를 설치하는 동안입니다. python.org에서 새로 설치된 Python3 MSI. 64 비트 Windows에서 32 비트 Python입니다. Python 설치 및 Windows 7에 배포를 참조 하면 "쓰기 실패 ... 권한이 거부되었습니다."가 표시 됩니다.


Windows에 로그온하면 액세스 토큰이 생성됩니다. 이것은 귀하, 귀하가 회원 인 그룹 및 귀하의 권한을 식별합니다. 사용자가 관리자인지 여부는 사용자가 Administrators 그룹의 구성원인지 여부에 따라 결정됩니다.

UAC가 없으면 프로그램을 실행할 때 액세스 토큰의 복사본을 가져 와서 프로그램이 액세스 할 수있는 항목을 제어합니다.

UAC를 사용하면 프로그램을 실행할 때 제한된 액세스 토큰을 얻습니다. 그룹 목록에서 "관리자"가 제거 된 원래 액세스 토큰입니다 (및 기타 변경 사항). 사용자가 관리자 그룹의 구성원이더라도 프로그램은 관리자 권한을 사용할 수 없습니다.

"관리자 권한으로 실행"을 선택하고 사용자가 관리자이면 프로그램은 원래의 무제한 액세스 토큰으로 시작됩니다. 사용자가 관리자가 아닌 경우 관리자 계정을 입력하라는 메시지가 표시되고 해당 계정으로 프로그램이 실행됩니다.


그래서 ... 더 많은 파기, 그 결과. 하나의 프로세스를 정상적으로 실행하고 하나는 "관리자 권한"으로 실행했지만 UAC를 해제 한 것 같습니다. UAC를 중간으로 전환하면 다른 결과를 볼 수있었습니다. 기본적으로 모든 것은 무결성 수준 인 5로 요약됩니다.

예를 들어 브라우저는 하위 수준 (1)에서 실행되고 서비스 (시스템 사용자)는 시스템 수준 (4)에서 실행됩니다. Windows Integrity Mechanism Design 에 모든 것이 잘 설명되어 있습니다. UAC가 활성화되면 프로세스가 중간 수준 (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 \ Administrators입니다. 또한 더 적은 권한이 있으며 가장 중요한 사항은 다음과 같습니다.

관리자:

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


"권한 상승", "제한된 액세스 토큰", "관리자 권한"과 같은 것 ... 도대체 관리자 권한이란 무엇입니까? 말도 안돼.

다음은 Administrators 그룹에 속한 사용자가 일반적으로 실행하는 프로세스에 대한 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

보시다시피 유일한 차이점은 토큰 ID입니다.

Token ID: d166b            ParentToken ID: 0
Modified ID:               (0, d052f)

vs

Token ID: ce282            ParentToken ID: 0
Modified ID:               (0, cddbd)

죄송합니다. 아직 빛을 많이 넣을 수는 없지만 여전히 파고 있습니다.


최신 정보

"Run as Aministrator" is just a command, enabling the program to continue some operations that require the Administrator privileges, without displaying the UAC alerts.

Even if your user is a member of administrators group, some applications like yours need the Administrator privileges to continue running, because the application is considered not safe, if it is doing some special operation, like editing a system file or something else. This is the reason why Windows needs the Administrator privilege to execute the application and it notifies you with a UAC alert. Not all applications need an Amnistrator account to run, and some applications, like yours, need the Administrator privileges.

If you execute the application with 'run as administrator' command, you are notifying the system that your application is safe and doing something that requires the administrator privileges, with your confirm.

If you want to avoid this, just disable the UAC on Control Panel.

If you want to go further, read the question Difference between "Run as Administrator" and Windows 7 Administrators Group on Microsoft forum or this SuperUser question.


Windows 7 requires that you intentionally ask for certain privileges so that a malicious program can't do bad things to you. If the free calculator you downloaded needed to be run as an administrator, you would know something is up. There are OS commands to elevate the privilege of your application (which will request confirmation from the user).

A good description can be found at:

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


The Run as *Anything command saves you from logging out and logging in as the user for which you use the runas command for.

The reason programs ask for this elevated privilege started with Black Comb and the Panther folder. There is 0 access to the Kernel in windows unless through the Admin prompt and then it is only a virtual relation with the O/S kernel.

Hoorah!


A little clearer... A software program that has kernel mode access has total access to all of the computer's data and its hardware.

Since Windows Vista Microsoft has stopped any and all I/O processes from accessing the kernel (ring 0) directly ever again. The closest we get is a folder created as a virtual kernel access partition, but technically no access to kernel itself; the kernel meets halfway.

This is because the software itself dictates which token to use, so if it asks for an administrator access token, instead of just allowing communications with the kernel like on Windows XP you are prompted to allow access to the kernel, each and every time. Changing UAC could reduce prompts, but never the kernel prompts.

Even when you login as an Administrator, you are running processes as a standard user until prompted to elevate the rights you have. I believe logged in as the administrator saves you from entering the credentials. But it also writes to the administrator users folder structure.

Kernel access is similar to root access in Linux. When you elevate your permissions you are isolating yourself from the root of C:\ and whatever lovely environment variables are contained within.

If you remember BSODs this was the OS shutting down when it believed a bad I/O reached the kernel.


Okay, let's re-iterate...

The actual question (and an excellent one at that)

"What does 'run as admin' do that being a member of the administrators group does not?"

(Answer)1. It allows you to call on administrator rights while under a user session.

Note: The question is wrongly put; one is a command and the other is a group object to apply policies.

Open a command prompt and type runas /?.

This will list all the switches the runas command line can use.

As for the Administrators Group this is based on GPEDIT or SECPOL and whether or not a Domain administrator is present or not or a network is present or not.

Usually these things will apply restrictions on computers that the administrators group is not affected by.

The question should be

What does runas admin do that run as user does not?

OR

What does the Administrator group do that a customized user group can't?

You are mixing apples and oranges.

참고URL : https://stackoverflow.com/questions/8986971/what-precisely-does-run-as-administrator-do

반응형