Que signifie exactement "Exécuter en tant qu'administrateur"? [fermé]
sur Windows 7, j'ai un programme en ligne de commande qui échoue en raison d'erreurs de permission d'écriture de fichier, et surgissant ennuyeux UAC dialogues chaque fois que j'exécute des programmes en ligne de commande qui sont 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 très bien, même si les boîtes de dialogue UAC sont toujours présentes.
mon utilisateur est déjà membre du des administrateurs du groupe, de sorte que signifie exactement "exécuter en tant qu'administrateur" qui fait mon installation?
ma question spécifique est précisément: que fait 'run as administrator'? Aucune des réponses jusqu'à présent aborder cette question. (par exemple, exécuter le nouveau processus comme "Administrateur" de l'utilisateur? Ou faut-il lancer le processus en tant qu'utilisateur actuel, mais avec des privilèges élevés? Si oui, quels privilèges? Comment qui diffèrent des privilèges que je reçois de mon utilisateur dans le Groupe "Administrateurs"?
(spécifiquement, j'utilise la" Console "de SourceForge , pas une fenêtre CMD régulière, mais je ne pense pas que ce soit important. Tout cela lors de l'installation du paquet python' distribute 'en exécutant' python distribute_setup.py " sur un Python3 MSI nouvellement installé de python.org. C'est un Python 32 bits sur des fenêtres 64 bits. Voir installer Python et distribuer sur Windows 7 donne " L'écriture a échoué ... Autorisation refusée" )
8 réponses
quand vous vous connectez à Windows crée un token d'accès. Ceci vous identifie, les groupes dont vous êtes membre et vos privilèges. Et notez que si un utilisateur est un administrateur ou non est déterminé par le fait que l'utilisateur est un membre du groupe Administrateurs.
sans UAC, quand vous exécutez un programme il obtient une copie du token d'accès, et ceci contrôle ce à quoi le programme peut accéder.
avec UAC, quand vous exécutez un programme il obtient une restriction jeton d'accès. C'est le token d'accès original avec "administrateurs" retiré de la liste des groupes (et quelques autres changements). Même si votre utilisateur est membre du groupe des administrateurs, le programme ne peut pas utiliser les privilèges D'administrateur.
Lorsque vous sélectionnez "Exécuter en tant qu'Administrateur" et votre utilisateur est un administrateur le programme est lancé avec l'original sans restriction jeton d'accès. Si votre utilisateur n'est pas administrateur, vous êtes invité pour un compte d'administrateur, et le programme est géré par ce compte.
So ... plus de creuser, avec le résultat. Il semble que même si j'ai exécuté un processus normal et un "en tant qu'administrateur", J'ai eu UAC off. Transformer UAC en médium 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, fonctionnent à bas niveau (1), tandis que les services (utilisateurs du système) fonctionnent au niveau du système (4). Tout est très bien expliqué dans Windows Conception du Mécanisme d'Intégrité . Lorsque L'UAC est activé, les processus sont créés avec un niveau moyen (SID S-1-16-8192 AKA 0x2000 est ajouté) tandis que lorsque "exécuter en tant Qu'administrateur", le processus est créé avec de haut niveau (SID S-1-16-12288 alias 0x3000).
donc L'ACCESS_TOKEN correct pour un utilisateur normal (Niveau D'intégrité moyen) 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 "comme administrateur", tandis que
S-1-5-32-544
Attributes - DenyOnly
pour les non-admin.
noter que S-1-5-32-544 est construit \ administrateurs. En outre, il y a moins de privilèges, et la chose la plus importante à noter:
admin:
S-1-16-12288
Attributes - GroupIntegrity GroupIntegrityEnabled
alors que pour les non-admin:
S-1-16-8192
Attributes - GroupIntegrity GroupIntegrityEnabled
j'espère que cela aidera.
autre lecture: http://www.blackfishsoftware.com/blog/don/creating_processes_sessions_integrity_levels
des Choses comme "élève les privilèges", "accès restreint jeton", "le privilège d'Administrateur" ... qu'est-ce que le privilège d'administrateur de toute façon? sont des non-sens.
voici un ACCESS_TOKEN pour un processus normalement exécuté par un utilisateur appartenant au groupe des 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 voyez, la seule différence est le token ID:
Token ID: d166b ParentToken ID: 0
Modified ID: (0, d052f)
vs
Token ID: ce282 ParentToken ID: 0
Modified ID: (0, cddbd)
Désolé, Je ne peux pas encore y ajouter beaucoup de lumière, mais je creuse encore.
mise à JOUR
"Run as Aministrator" est juste une commande, permettant au programme de continuer certaines opérations qui nécessitent les privilèges administrateur, sans afficher les alertes UAC.
même si votre utilisateur est membre du groupe des administrateurs, certaines applications comme la vôtre ont besoin des privilèges administrateur pour continuer à fonctionner, parce que l'application est considérée comme non sûre, si elle fait une opération spéciale, comme éditer un fichier système ou autre chose. C'est la raison pour laquelle Windows a besoin du privilège administrateur pour exécuter l'application et vous avertit avec une alerte UAC. Toutes les applications n'ont pas besoin d'un compte D'Amnistrateur pour fonctionner, et certaines applications, comme la 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 informez le système que votre application est sûre et vous faites quelque chose qui nécessite des privilèges d'administrateur, avec votre confirmation.
si vous voulez éviter cela, il suffit de désactiver L'UAC sur le Panneau de configuration.
si vous voulez aller plus loin, lisez la question différence entre" exécuter en tant qu'administrateur "et Windows 7 groupe D'administrateurs sur Microsoft forum ou cette question Super-Utilisateur.
Windows 7 exige que vous demandiez intentionnellement certains privilèges afin qu'un programme malveillant ne puisse pas vous faire de mauvaises choses. 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 ne va pas. Il y a des commandes OS pour élever le privilège de votre application (qui demandera la confirmation de l'utilisateur).
une bonne description peut être trouvée à:
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.
la raison pour laquelle les programmes demandent ce privilège élevé a commencé avec Black Comb et le dossier Panther. Il n'y a aucun accès au noyau dans windows à moins que ce ne soit par l'intermédiaire de L'invite D'administration Et alors il ne s'agit que d'une relation virtuelle avec le noyau O/s.
Hourra!
un peu plus clair... Un logiciel qui dispose d'un accès en mode noyau a un accès total à toutes les données de l'ordinateur et de son matériel.
depuis Windows Vista Microsoft a arrêté tout et tous les processus d'e / s d'accéder au noyau (anneau 0) directement à nouveau. Le dossier le plus proche que nous obtenons est un dossier créé comme une partition d'accès au noyau virtuel, mais techniquement pas d'accès au noyau lui-même; le noyau se rencontre à mi-chemin.
C'est parce que le logiciel lui-même dicte jeton à utiliser, donc si il demande un jeton d'accès administrateur, plutôt que d'autoriser les communications avec le noyau, comme sur Windows XP, vous êtes invité à autoriser l'accès au noyau, à chaque fois. Changer UAC pourrait 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 qu'il vous soit demandé d'élever les droits que vous avez. Je crois connecté car l'administrateur vous évite d'entrer les informations d'identification. Mais il écrit aussi à la structure du dossier administrateur users.
L'accès au noyau est similaire à l'accès root sous Linux. Lorsque vous augmentez vos permissions, vous vous isolez de la racine de C:\ et de toutes les variables d'environnement belles sont contenues dans.
si vous vous souvenez de BSODs, c'était L'OS qui s'arrêtait quand il croyait qu'une mauvaise entrée/sortie avait atteint le noyau.
OK, répétons...
, La question réelle (et excellente)
Qu'est-ce que "exécuter en tant qu'administrateur"? "
(Réponse)1. Il vous permet de faire appel aux droits de l'administrateur lors d'une session utilisateur.
Note: la question est mal posée; on est un commande et l'autre est un objet de groupe pour appliquer les politiques.
ouvrez une invite de commande et tapez runas /?
.
liste de tous les commutateurs que la ligne de commande runas
peut utiliser.
quant au groupe Administrateurs, il est basé sur GPEDIT ou SECPOL et que l'administrateur de domaine soit présent ou non ou qu'un réseau soit présent ou non.
habituellement, ces choses s'appliquent restrictions sur les ordinateurs que le groupe des administrateurs n'est pas affecté par.
la question devrait être
Qu'est-ce que runas admin fait qui s'exécute alors que user ne le fait pas?
ou
Qu'est-ce que le groupe administrateur fait qu'un groupe utilisateur personnalisé ne peut pas faire?
vous mélangez des pommes et des oranges.