web-dev-qa-db-fra.com

Que fait exactement "Exécuter en tant qu'administrateur"?

Sur Windows 7, un programme en ligne de commande qui échoue à cause d'erreurs d'autorisation d'écriture sur les fichiers est ennuyeux. UAC dialogues à chaque fois que j'exécute en ligne de commande les programmes qui proviennent d'un 'éditeur inconnu'.

Cependant, si je démarre ma console en cliquant avec le bouton droit de la souris et en choisissant "Exécuter en tant qu'administrateur", l'installation fonctionne correctement, même si les boîtes de dialogue UAC sont toujours présentes.

Mon utilisateur est déjà membre du groupe 'administrateurs', alors qu'est-ce que 'exécuter en tant qu'administrateur' fait que mon installation fonctionne?

Ma question spécifique est précisément: que fait "exécuter en tant qu'administrateur"? Aucune des réponses à ce jour ne répond à cela. (par exemple, exécute-t-il le nouveau processus en tant qu'utilisateur 'Administrateur'? ou exécute-t-il le processus en tant qu'utilisateur actuel, mais avec des privilèges élevés? Si tel est le cas, quels privilèges? En quoi cela diffère-t-il des privilèges que je reçois de l'utilisateur étant dans le groupe 'Administrateurs'?

(Plus précisément, j'utilise la 'Console' de SourceForge , pas une fenêtre CMD classique, mais je ne pense pas que ce soit important. C'est tout lors de l'installation de la Python ' distribuez 'le package en exécutant' python distributions_setup.py 'sur un MSI Python3 nouvellement installé à partir de python.org. Il s'agit d'un Python 32 bits sous Windows 64 bits. Voir L'installation de Python et de la distribution sous Windows 7 donne le message "Impossible d'écrire ... autorisation refusée")

60
Jonathan Hartley

Lorsque vous vous connectez à Windows, vous créez un jeton d'accès. Cela vous identifie, les groupes dont vous êtes membre et vos privilèges. Et notez que le fait qu'un utilisateur soit un administrateur ou non est déterminé par son appartenance au groupe Administrateurs.

Sans le contrôle de compte d'utilisateur, lorsque vous exécutez un programme, il reçoit une copie du jeton d'accès, qui contrôle l'accès auquel le programme peut accéder.

Avec le contrôle de compte d'utilisateur, lorsque vous exécutez un programme, il reçoit un jeton d'accès restreint. Il s'agit du jeton d'accès d'origine avec "Administrateurs" supprimé de la liste des groupes (et de quelques autres modifications). Même si votre utilisateur est membre du groupe Administrateurs, le programme ne peut pas utiliser les privilèges d'administrateur.

Lorsque vous sélectionnez "Exécuter en tant qu'administrateur" et que votre utilisateur est un administrateur, le programme est lancé avec le jeton d'accès sans restriction d'origine. Si votre utilisateur n'est pas un administrateur, vous êtes invité à créer un compte administrateur et le programme est exécuté sous ce compte.

100
arx

Donc ... plus de creuser, avec le résultat. Il semble que bien que j’ai exécuté un processus normal et un processus "en tant qu’administrateur", j’avais désactivé le contrôle de compte utilisateur. En tournant UAC à moyen, cela m'a permis de voir des résultats différents. Fondamentalement, tout se résume à des niveaux d'intégrité, qui sont 5.

Les navigateurs, par exemple, s'exécutent au niveau bas (1), tandis que les services (utilisateur système) s'exécutent au niveau système (4). Tout est très bien expliqué dans Conception du mécanisme d'intégrité Windows. Lorsque le contrôle de compte d'utilisateur est activé, les processus sont créés avec le niveau moyen (le SID S-1-16-8192 ainsi que le code AKA 0x2000 sont ajoutés), tandis que lorsque "Exécuter en tant qu'administrateur", le processus est créé avec le niveau élevé (SID S-1-16-12288 0x3000).

Ainsi, ACCESS_TOKEN correct pour un utilisateur normal (niveau d'intégrité moyenne) est:

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.

Maintenant, les différences sont les suivantes:

S-1-5-32-544
Attributes - Mandatory Default Enabled Owner

pour "en tant qu'administrateur", tandis que

S-1-5-32-544
Attributes - DenyOnly

pour non-admin.

Notez que S-1-5-32-544 est BUILTIN\Administrators. En outre, il y a moins de privilèges et la chose la plus importante à noter:

admin:

S-1-16-12288
Attributes - GroupIntegrity GroupIntegrityEnabled

tandis que pour non-admin:

S-1-16-8192
Attributes - GroupIntegrity GroupIntegrityEnabled

J'espère que ça aide.

Lectures supplémentaires: http://www.blackfishsoftware.com/blog/don/creating_processes_sessions_integrity_levels

10
Andrei

[~ # ~] met à jour [~ # ~]

"Exécuter en tant qu'Aministrator" n'est qu'une commande permettant au programme de poursuivre certaines opérations nécessitant les privilèges d'administrateur, sans afficher les alertes UAC.

Même si votre utilisateur est membre du groupe d'administrateurs, certaines applications comme la vôtre ont besoin des privilèges Administrateur pour continuer à s'exécuter, car l'application est considérée comme non sécurisée si elle effectue une opération spéciale, telle que la modification d'un fichier système ou autre. C’est la raison pour laquelle Windows a besoin du privilège d’administrateur pour exécuter l’application et vous avertit par une alerte UAC. Toutes les applications n'ont pas besoin d'un compte Amnistrator pour s'exécuter et certaines applications, comme le vôtre, ont besoin des privilèges d'administrateur.

Si vous exécutez l'application avec la commande 'Exécuter en tant qu'administrateur', vous notifiez au système que votre application est sécurisée et effectuez une opération nécessitant les privilèges d'administrateur, avec votre confirmation.

Si vous souhaitez éviter cela, désactivez simplement le contrôle de compte d'utilisateur sur le Panneau de configuration.

Si vous voulez aller plus loin, lisez la question Différence entre "Exécuter en tant qu’administrateur" et le groupe des administrateurs Windows 7 ) == sur le forum Microsoft ou ceci SuperUser question.

1
Alberto Solano

Des choses comme "élève les privilèges", "jeton d'accès restreint", "privilège d'administrateur" ... qu'est-ce que le diable est le privilège d'administrateur de toute façon? sont des bêtises.

Voici un ACCESS_TOKEN pour un processus normalement exécuté par un utilisateur appartenant au groupe Administrateurs.

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

... et voici un ACCESS_TOKEN pour un processus normalement exécuté par le même utilisateur avec "Exécuter en tant qu'administrateur".

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

Comme vous le voyez, la seule différence est l’ID de jeton:

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

contre

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

Désolé, je ne peux pas encore ajouter beaucoup de lumière, mais je continue à creuser.

1
Andrei

Un peu plus clair ... Un logiciel ayant un accès en mode noya a un accès total à toutes les données de l'ordinateur et à son matériel.

Depuis Windows Vista, Microsoft a empêché tous les processus d’entrée/sortie d’accéder directement au noyau (anneau 0). Le plus proche que nous obtenons est un dossier créé en tant que partition d'accès virtuelle au noyau, mais techniquement, aucun accès au noyau lui-même; le noyau se réunit à mi-chemin.

Cela est dû au fait que le logiciel lui-même détermine le jeton à utiliser. Par conséquent, s'il demande un jeton d'accès administrateur, au lieu de simplement autoriser les communications avec le noyau, comme sous Windows XP, vous êtes invité à autoriser l'accès au noyau, à chaque fois. La modification du contrôle de compte d'utilisateur peut réduire les invites, mais jamais les invites du noyau.

Même lorsque vous vous connectez en tant qu'administrateur, vous exécutez des processus en tant qu'utilisateur standard jusqu'à ce que vous soyez invité à augmenter vos droits. Je crois connecté en tant que l'administrateur vous évite d'entrer les informations d'identification. Mais il écrit également dans la structure de dossiers des utilisateurs administrateurs.

L'accès au noyau est similaire à l'accès root sous Linux. Lorsque vous élevez vos autorisations, vous vous isolez de la racine de C:\et de toutes les variables d’environnement contenues.

Si vous vous souvenez des BSOD, c’est le système d’exploitation qui s’est arrêté, car il pensait qu’une mauvaise E/S avait atteint le noyau.

0
user5244305

La commande Run as * Anything vous évite de vous déconnecter et de vous connecter en tant qu'utilisateur pour lequel vous utilisez la commande runas.

Les programmes raison demandent ce privilège élevé avec Black Comb et le dossier Panther. Il n'y a aucun accès au noyau dans Windows sans passer par l'invite de l'administrateur. Il ne s'agit alors que d'une relation virtuelle avec le noyau O/S.

Hourra!

0
user5244305

Ok, réitérons ...

La vraie question (et une excellente à cela)

" Qu'est-ce que 'exécuter en tant qu'administrateur' n'affecte pas le fait d'être membre du groupe des administrateurs? "

(Réponse 1. Il vous permet de faire appel aux droits d’administrateur lorsque vous êtes sous une session utilisateur.

Remarque: la question est mal posée. l'un est une commande et l'autre est un objet groupe pour appliquer des stratégies.

Ouvrez une invite de commande et tapez runas /?.

Ceci listera tous les commutateurs que la ligne de commande runas peut utiliser.

En ce qui concerne le groupe d’administrateurs, il s’appuie sur GPEDIT ou SECPOL, qu’un administrateur de domaine soit présent ou non, ou qu’un réseau soit présent ou non.

Habituellement, ces éléments appliqueront des restrictions sur les ordinateurs pour lesquels le groupe d'administrateurs n'est pas affecté.

La question devrait être

Qu'est-ce que l'administrateur runas ne lance pas en tant qu'utilisateur?

OR

Que fait le groupe d'administrateurs qu'un groupe d'utilisateurs personnalisé ne peut pas?

Vous mélangez des pommes et des oranges.

0
user5244305

Windows 7 exige que vous demandiez intentionnellement certains privilèges afin qu'un programme malveillant ne puisse vous faire du mal. Si la calculatrice gratuite que vous avez téléchargée devait être exécutée en tant qu'administrateur, vous sauriez que quelque chose se passe. Il existe des commandes de système d'exploitation pour élever le privilège de votre application (qui demandera une confirmation de l'utilisateur).

Une bonne description peut être trouvée à:

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

0
vextorspace