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")
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.
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
[~ # ~] 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.
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.
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.
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!
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.
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 à: