# Privilège (informatique)

En informatique, le privilège est défini comme la délégation d'autorité sur un système informatique. Un privilège permet à un utilisateur d'effectuer une action. Parmi les différents privilèges, citons la possibilité de créer un fichier dans un dossier, de lire ou de supprimer un fichier, d’accéder à un périphérique ou d’obtenir des autorisations de lecture ou d’écriture sur un socket pour la communication par Internet.
Les utilisateurs auxquels des privilèges supplémentaires ont été délégués sont appelés privilégiés. Les utilisateurs qui ne possèdent pas de privilèges sont définis comme des utilisateurs non privilégiés, réguliers ou normaux.

## Fonctionnement

Les privilèges peuvent être automatiques, accordés ou demandés.
Un privilège automatique existe lorsqu'il n'est pas nécessaire d'avoir l'autorisation d'exécuter une action. Par exemple, sur les systèmes où les utilisateurs doivent se connecter au système pour l'utiliser, la déconnexion ne nécessite pas de privilège. Les systèmes qui n'implémentent pas la protection de fichiers - tels que MS-DOS - accordent essentiellement des privilèges illimités pour effectuer toute action sur un fichier.
Un privilège accordé résulte de la présentation de certaines informations d'identification à l'autorité qui accorde les privilèges. Pour ce faire, vous devez généralement vous connecter à un système avec un identifiant et un mot de passe. Si l'identifiant et le mot de passe fournis sont corrects, des privilèges sont accordés à l'utilisateur.
Un privilège est demandé soit par un programme émettant une demande de privilège élevé, soit en exécutant un programme pour demander des privilèges supplémentaires. Un exemple d'utilisateur qui demande des privilèges supplémentaires est fourni par la commande sudo pour exécuter une commande en tant qu'utilisateur root ou par le système d'authentification Un privilège est appliqué soit par un programme exécuté émettant une demande de privilège avancé, soit en exécutant un programme pour appliquer les privilèges supplémentaires. Un exemple d'utilisateur qui demande des privilèges supplémentaires est fourni par la commande sudo pour exécuter une commande en tant qu'utilisateur root, su pour passer en utilisateur root ou par le système d'authentification Kerberos.
Les architectures de processeurs modernes disposent de plusieurs modes permettant au système d'exploitation de s'exécuter à différents niveaux de privilège. Certains processeurs ont deux niveaux (tels que le niveau utilisateur et le niveau superviseur). Les processeurs i386 ont quatre niveaux (#0 avec le niveau de privilège le plus élevé, #3 avec le niveau le moins élevé). Les tâches possède un niveau de privilège. Les ressources (segments, pages, ports, etc.) et les instructions privilégiées sont associés à un niveau de privilège demandé. Lorsqu'une tâche tente d'utiliser une ressource ou d'exécuter une instruction privilégiée, le processeur détermine si elle dispose du niveau de privilège permettant de le faire (sinon, une interruption de type défaut de protection est générée). Cela évite qu'une tâche d'utilisateur endommage le système d'exploitation ou une autre tâche.
En programmation informatique, des interruptions liées aux violations de privilégiées peuvent être générées lorsqu'un tableau a été accédé hors limites ou qu'un pointeur invalide a été déréférencé alors que l'emplacement mémoire invalide référencé est un emplacement privilégié, tel un emplacement contrôlant un équipement d'entrée-sortie. Cela est particulièrement susceptible de se produire dans des langages de programmation tels que C, qui utilisent l'arithmétique de pointeur ou ne vérifient pas automatiquement les limites d'un tableau.

## Unix

Les systèmes UNIX ont implanté diverses fonctions de sécurité basées sur des niveaux de privilèges.
Le superutilisateur (aussi appelé utilisateur root ou super utilisateur) est un utilisateur qui peut tout faire sur le système. Ce haut degré de puissance est nécessaire pour administrer le système UNIX. Par contre, il permet également permettre à son utilisateur de commettre des graves erreurs et de causer des problèmes systèmes importants.
Les utilisateurs ordinaires ne disposent que d’autorisations suffisantes pour accomplir leurs tâches habituelles. Par exemple, les utilisateurs ordinaires ne peuvent pas configurer un nouveau compte d'utilisateur ni exécuter des procédures administratives visant la gestion du système.
Voici quelques fonctions que ne sont pas disponibles aux utilisateurs ordinaires :
* Ajuster les options du noyau de système d'exploitation ;
* Modifier les fichiers système ou les fichiers d'autres utilisateurs sur lesquels il n'aurait aucun droit, et plus généralement y accéder ;
* Accéder en lecture ou en écriture à certains périphériques, leurs accès étant gérés par le système de fichier ;
* Modifier le propriétaire d'un fichier ;
* Modifier le niveau d'exécution (en anglais : run level) ;
* Modifier l'allocation d'espace disque ;
* Démarrer ou arrêter certains daemons qui nécessitent un privilège plus élevés ou exécutés par d'autres utilisateurs du système.

## Windows NT

Sur les systèmes Windows NT, les privilèges sont délégués à des degrés divers. Ces délégations peuvent être définies à l'aide du gestionnaire de stratégie de sécurité locale (en anglais Local Security Policy Manager ou SECPOL.MSC). Voici une liste abrégée des assignations par défaut :
* Le NT AUTHORITY\System est l'équivalent le plus proche du superutilisateur sur les systèmes de type Unix. Il possède de nombreux privilèges d’un superutilisateur Unix classique, comme avoir accès à tous les fichiers.
* L'Administrateur est aussi assez proche du superutilisateur sur les systèmes de type Unix. Cependant, cet utilisateur ne peut pas transgresser autant de protections du système d'exploitation que le NT AUTHORITY\System.
* Les membres du groupe des administrateurs ont des privilèges presque égaux à l'Administrateur.
* Les Utilisateurs avec pouvoir (en anglais, power users) ont la possibilité d'installer des programmes et de sauvegarder le système.
* Les Utilisateurs sont l'équivalent des utilisateurs sans privilèges sur des systèmes de type Unix.