2 votes

Comment éditer des fichiers dans les éditeurs de texte GUI en tant que root ?

Une fois de plus, j'ai besoin d'éditer des fichiers qui sont censés être édités uniquement par l'administrateur.

Je préfère de loin le faire dans un éditeur de texte graphique plutôt que d'utiliser des outils en ligne de commande comme nano ou vi. Oui, il est parfaitement possible de faire de l'édition en utilisant l'un d'entre eux ou d'autres outils similaires, je suis simplement insatisfait de cette option, parce qu'elle est peu pratique par rapport au travail avec kate ou gedit (opinion personnelle ; vous pouvez tout à fait avoir l'inverse, mais je m'en tiens à la mienne).

Ceci étant dit, je ne voudrais pas compromettre complètement la sécurité avec une option nucléaire. xhost si:localuser:root . Existe-t-il une solution intermédiaire (comme sudo qui, malheureusement, a été intentionnellement paralysé lorsqu'il s'agit d'exécuter des éléments d'interface graphique) ?

5voto

vanadium Points 56513

1. L'URI admin://

Dans Ubuntu, la manière officielle de modifier les fichiers système en tant que root avec un éditeur graphique est d'utiliser la commande admin:// URI. Par exemple, pour modifier /etc/fstab Dans la boîte de dialogue d'exécution que vous obtenez après avoir appuyé sur la touche Alt + F2 ou sur le terminal :

gedit admin:///etc/fstab

Dans les anciennes versions d'Ubuntu (antérieures à 20.10), la toute première fois que vous faites cela, vous devez fournir votre mot de passe utilisateur deux fois de suite. Ce problème a été corrigé dans la version 20.10.

Bien entendu, votre utilisateur doit appartenir au groupe root pour pouvoir modifier les fichiers système.

2. Utilisation de sudoedit

Une approche valable pour tout environnement de bureau avec tout éditeur serait d'utiliser sudoedit . Configurez la variable d'environnement SUDO_EDITOR pour qu'elle pointe vers le binaire de votre éditeur graphique, par exemple : export SUDO_EDITOR="/usr/bin/gedit" . Ensuite, vous pouvez utiliser la commande sudoedit <file> o sudo -e <file> pour ouvrir un fichier système dans votre éditeur graphique. De la même manière que l'URI admin://, cela créera une copie temporaire, que vous pourrez modifier comme un utilisateur normal. Une fois l'éditeur fermé, la copie temporaire modifiée est recopiée sur le fichier système.

On peut en fait les combiner en une seule commande :

env SUDO_EDITOR="/usr/bin/gedit" sudoedit <file>

Ainsi, l'environnement n'est modifié que lorsque vous souhaitez explicitement utiliser l'éditeur graphique. Vous créez un alias ou un petit script pour éditer les fichiers texte du système dans un éditeur graphique avec une seule commande.

3. Découragé : utilisation pkexec

Ces deux options ne permettent à aucun moment d'exécuter votre éditeur graphique en tant que root, ce qui est préférable. Néanmoins, il est possible d'exécuter un éditeur graphique en tant que root en utilisant pkexec . Vous pouvez installer un fichier PolicyKit mais vous pouvez aussi l'exécuter avec quelques variables d'environnement . Pour nautilus les utilisateurs, le paquet nautilus-admin installe un fichier PolicyKit pour gedit et fournit une option de menu par clic droit dans nautilus pour lancer un fichier texte dans gedit avec les droits de root. Cependant, ces options, où une application graphique est exécutée en tant que root sont, selon man pkexec découragé :

Par conséquent, pkexec ne vous permettra pas d'exécuter des applications X11 applications X11 en tant qu'autre utilisateur puisque les variables d'environnement $DISPLAY et ne sont pas définies. Ces deux variables seront conservées si l'option l'annotation org.freedesktop.policykit.exec.allow_gui sur une action est définie à une valeur non vide ; ceci est déconseillé, cependant, et ne devrait être pour les anciens programmes.

0voto

raj Points 6225

La commande suivante fonctionne, il n'est pas nécessaire d'installer quoi que ce soit :

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY gedit <filename>

Pour simplifier les choses, vous pouvez créer un alias en mettant ce qui suit dans votre fichier ~/.bash_aliases fichier :

alias editroot='pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY gedit'

Ensuite (dans un nouveau terminal, afin de relire ~/.bashrc ) vous pouvez utiliser la commande suivante :

editroot <filename>

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X