Comment utiliser Run0 sous Linux

Comment utiliser Run0 sous Linux
Une photographie montrant un gros plan de l'écran d'un ordinateur portable.

Run0 est un programme d’escalade de privilèges nouveau et innovant pour les distributions Linux basées sur Systemd. Il fournit une alternative légère et « sans configuration » aux applications d’escalade traditionnelles telles que sudo et doas. Ici, nous vous montrons les bases de l’utilisation de Run0 pour escalader les commandes de votre système Linux.

Avant cela, vous souhaiterez peut-être découvrir ce qu’est Run0 et en quoi il est différent de sudo.

Comment exécuter des programmes sous un autre nom d’utilisateur

L’une des utilisations les plus courantes des applications d’escalade de privilèges consiste à exécuter des commandes en tant qu’utilisateur root. À cet égard, pour accéder à l’utilisateur root dans Run0, il faut ajouter run0 devant la commande que vous souhaitez exécuter. Par exemple, ce qui suit crée un nouveau dossier dans un répertoire accessible uniquement par root :

Cela fera apparaître soit une invite de mot de passe CLI, soit une petite fenêtre GUI demandant le mot de passe de votre utilisateur actuel.

Une capture d'écran montrant l'invite de mot de passe pour Run0.

Similairement à sudo et doas, Run0 peut également basculer vers un utilisateur non root lors de l’exécution de commandes. Pour ce faire, ajoutez l’ --userindicateur suivi du nom de l’utilisateur sous lequel vous souhaitez exécuter la commande :

Fournissez le mot de passe de l’utilisateur vers lequel vous basculez, puis appuyez sur Enter.

Comment passer au shell d’un autre utilisateur

Un autre élément clé d’une application d’escalade de privilèges est sa capacité à placer l’utilisateur dans un shell root. Cela vous donne la possibilité d’interagir avec votre système en tant qu’utilisateur root et d’exécuter des commandes plus complexes à partir de la CLI.

Dans Run0, vous pouvez le faire en exécutant le programme sans aucun argument supplémentaire.

Un terminal affichant le shell racine à partir d'une invite Run0.

Tout comme pour l’exécution de programmes en tant que root, il est également possible d’utiliser Run0 avec l’ --userindicateur pour démarrer une session shell en tant qu’utilisateur spécifique :

Un terminal affichant l'invite Run0 pour un utilisateur non root.

De plus, run0 vous permet de créer des sessions shell avec des autorisations de groupe temporaires pour les utilisateurs non root. Ceci est utile si vous souhaitez accéder à des dossiers verrouillés derrière un certain utilisateur et groupe sans passer à la racine.

Par exemple, la commande suivante accorde à l’utilisateur « alice » un accès temporaire au groupe « www-data » :

Vous pouvez également utiliser l’ --chdirindicateur pour forcer un changement de répertoire lors du passage à une nouvelle session shell :

Un terminal montrant le changement automatique de répertoire lors du passage au shell d'un autre utilisateur.

Comment personnaliser la session Run0 actuelle

Le principal argument de vente de Run0 est qu’il n’utilise pas setuid (SUID) pour gérer les actions des super-utilisateurs. Au lieu de cela, il s’appuie sur systemd-run qui crée des pseudo-TTY isolés pour exécuter des commandes en tant que root.

L’une des conséquences de cette approche est que Systemd traite chaque shell Run0 comme une unité distincte exécutée sous le gestionnaire de services. Cela vous permet de personnaliser votre processus de shell root, contrairement aux applications d’escalade de privilèges traditionnelles.

Pour ajouter une étiquette à votre shell racine, utilisez l’ --unitindicateur suivi du nom que vous souhaitez utiliser :

Vous pouvez également ajouter une description personnalisée à votre shell racine en ajoutant l’ --descriptionindicateur :

Vérifiez que vous avez correctement appliqué vos informations en répertoriant le nom personnalisé de votre shell root à l’aide desystemctl :

Un terminal affichant les détails de l'unité Systemd personnalisée.

Par défaut, Run0 change la couleur de l’arrière-plan de votre shell root en rouge. Bien qu’il s’agisse d’un indicateur visuel utile, cela peut être gênant si vous utilisez un thème clair sur votre système.

Pour changer cela, utilisez l’ --backgroundindicateur suivi d’une valeur comprise entre 40 et 49 :

Un terminal montrant la couleur d'arrière-plan différente dans Run0.

Enfin, vous pouvez également ajuster le « niveau de gentillesse » de votre shell root. Il s’agit d’une valeur comprise entre -20 et 19 qui détermine si votre noyau donnera la priorité à votre processus par rapport aux autres.

Pour donner à votre shell root la priorité la plus élevée, utilisez l’ --niceindicateur avec la valeur « -20 » :

Un terminal mettant en valeur le shell racine avec un niveau agréable modifié.

Comment regrouper les sessions Run0

En plus de pouvoir personnaliser chaque shell racine Linux, vous pouvez également utiliser Run0 pour les regrouper dans une tranche Systemd. Il s’agit d’une construction spéciale qui permet à votre machine d’ajuster la demande de ressources pour les processus sans affecter le reste de votre système.

Pour créer un shell racine sur une tranche différente, exécutez l’ --sliceindicateur suivi du nom de la tranche vers laquelle vous souhaitez vous déplacer :

Confirmez que votre nouvelle session s’exécute sous votre nouvelle tranche en répertoriant les processus qu’elle contient :

Un terminal affichant les détails de la tranche Systemd personnalisée.

Vous pouvez également utiliser l’ --slice-inheritindicateur pour regrouper votre nouvelle tranche avec la tranche d’où provient Run0. Ceci est utile si vous avez déjà regroupé vos shells dans leurs tranches respectives et que vous souhaitez simplement ajouter un nouveau shell :

Comment exécuter des commandes sur des conteneurs Systemd à l’aide de Run0

Systemd-nspawn est un programme spécial qui permet de créer et de gérer des conteneurs Linux légers similaires à Docker. Faisant partie de la suite Systemd, vous pouvez également utiliser Run0 pour exécuter des commandes dans vos conteneurs nspawn à partir de votre machine hôte.

Commencez par lister les conteneurs Systemd-nspawn disponibles sur votre système :

Un terminal affichant une liste des conteneurs Systemd-nspawn disponibles.

Exécutez la commande suivante pour créer un dossier dans le répertoire racine de votre conteneur :

Il est également possible de passer au shell racine de votre conteneur en utilisant Run0 :

Un terminal affichant la commande permettant de changer l'invite du shell du conteneur.

Confirmez que vous exécutez maintenant dans votre conteneur en imprimant le nom d’hôte de votre session de terminal :

Un terminal montrant le processus de basculement du système local vers le conteneur Systemd-nspawn.

Apprendre à utiliser Run0 pour exécuter et gérer les commandes root sous Linux n’est que la pointe de l’iceberg en matière d’applications d’escalade de privilèges. Plongez dans ce monde complexe en examinant les différences entre su, sudo et sudo -s.

Crédit image : Xavier Cee via Unsplash . Toutes les modifications et captures d’écran par Ramces Red.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *