Ubuntu est une distribution du système GNU / Linux Operationg qui à son tour appartient à la famille de systèmes Unix - une architecture commune à plusieurs systèmes d’exploitation modernes.
Traditionnellement, Unix fonctionnait sur des ordinateurs centraux. Des installations informatiques centrales qui desservent des dizaines ou des centaines d'utilisateurs via des terminaux distants. Tous les utilisateurs étant tributaires de la disponibilité de l’ordinateur central, aucun utilisateur n’était autorisé à émettre une commande d’arrêt. Une idée fondamentale pour l’architecture Unix: le noyau du système n’initialisera jamais un arrêt à moins que la fonction correspondante ne soit appelée par un processus de super-utilisateur.
Dans les systèmes de bureau contemporains, les développeurs ont pris certaines précautions pour rendre l’arrêt accessible à un simple utilisateur de bureau. Une technique courante consiste à laisser le gestionnaire de connexion, qui s'exécute généralement dans le contexte de sécurité de l'utilisateur root, gérer l'arrêt et le redémarrage. Dans ce cas, le shell graphique envoie une requête au gestionnaire de connexion pour arrêter l'ordinateur. Cela implique l'utilisation de la communication inter-processus (IPC), généralement via le service dbus.
Le kit de règles mentionné ci-dessus étend ce processus en fournissant un cadre standardisé grâce auquel le gestionnaire de connexion (ou tout autre programme fournissant le service d’arrêt) peut vérifier quels utilisateurs sont autorisés à provoquer un arrêt et par lequel un administrateur peut configurer ces autorisations. .
Certains environnements de bureau n’utilisent pas les services IPC, mais plutôt un ensemble de programmes d’aide pour fournir les mêmes fonctions ou des fonctions similaires. Ces programmes d'assistance seraient appelés par des mécanismes, permettant de changer dans le contexte du superutilisateur, comme sudo, suid ou un mécanisme de kit de règles similaire à sudo.
Dans tous les cas, le programme d’arrêt traditionnel muet sur le shell ne fonctionne pas de cette façon, il vous oblige à voir qu’il est exécuté dans un contexte de superutilisateur.