Compte LocalSystem
Le compte LocalSystem est un compte local prédéfini utilisé par le gestionnaire de contrôle de service. Ce compte n’est pas reconnu par le sous-système de sécurité. Vous ne pouvez donc pas spécifier son nom dans un appel à la fonction LookupAccountName. Il dispose de privilèges étendus sur l’ordinateur local et agit comme ordinateur sur le réseau. Son jeton inclut les SID NT AUTHORITY\SYSTEM et BUILTIN\Administrators ; ces comptes ont accès à la plupart des objets système. Le nom du compte dans tous les paramètres régionaux est .\LocalSystem. Le nom, LocalSystem ou ComputerName\LocalSystem peut également être utilisé. Ce compte n’a pas de mot de passe. Si vous spécifiez le compte LocalSystem dans un appel à l'CreateService ou fonction ChangeServiceConfig, toutes les informations de mot de passe que vous fournissez sont ignorées.
Un service qui s’exécute dans le contexte du compte LocalSystem hérite du contexte de sécurité du SCM. Le SID utilisateur est créé à partir de la valeur SECURITY_LOCAL_SYSTEM_RID. Le compte n’est associé à aucun compte d’utilisateur connecté. Cela a plusieurs implications :
- La clé de Registre HKEY_CURRENT_USER est associée à l’utilisateur par défaut, et non à l’utilisateur actuel. Pour accéder au profil d’un autre utilisateur, empruntez l’identité de l’utilisateur, puis accédez à HKEY_CURRENT_USER.
- Le service peut ouvrir la clé de Registre HKEY_LOCAL_MACHINE\SECURITY.
- Le service présente les informations d’identification de l’ordinateur aux serveurs distants.
- Si le service ouvre une fenêtre de commande et exécute un fichier de commandes, l’utilisateur peut appuyer sur Ctrl+C pour arrêter le fichier de commandes et accéder à une fenêtre de commande avec des autorisations LocalSystem.
Le compte LocalSystem dispose des privilèges suivants :
- SE_ASSIGNPRIMARYTOKEN_NAME (désactivé)
- SE_AUDIT_NAME (activé)
- SE_BACKUP_NAME (désactivé)
- SE_CHANGE_NOTIFY_NAME (activé)
- SE_CREATE_GLOBAL_NAME (activé)
- SE_CREATE_PAGEFILE_NAME (activé)
- SE_CREATE_PERMANENT_NAME (activé)
- SE_CREATE_TOKEN_NAME (désactivé)
- SE_DEBUG_NAME (activé)
- SE_IMPERSONATE_NAME (activé)
- SE_INC_BASE_PRIORITY_NAME (activé)
- SE_INCREASE_QUOTA_NAME (désactivé)
- SE_LOAD_DRIVER_NAME (désactivé)
- SE_LOCK_MEMORY_NAME (activé)
- SE_MANAGE_VOLUME_NAME (désactivé)
- SE_PROF_SINGLE_PROCESS_NAME (activé)
- SE_RESTORE_NAME (désactivé)
- SE_SECURITY_NAME (désactivé)
- SE_SHUTDOWN_NAME (désactivé)
- SE_SYSTEM_ENVIRONMENT_NAME (désactivé)
- SE_SYSTEMTIME_NAME (désactivé)
- SE_TAKE_OWNERSHIP_NAME (désactivé)
- SE_TCB_NAME (activé)
- SE_UNDOCK_NAME (désactivé)
La plupart des services n’ont pas besoin d’un niveau de privilège aussi élevé. Si votre service n’a pas besoin de ces privilèges et qu’il n’est pas un service interactif, envisagez d’utiliser le compte LocalService ou le compte NetworkService . Pour plus d’informations, consultez Sécurité des services et droits d’accès.