I -Préambule
Sous un distribution GNU/Linux pour éditer les fichiers protégés du système, il est nécessaire de le faire en qualité de Super Utilisateur.
On appelle cela les privilèges d'administrateur, appelés également « ROOT » ou encore « Super Administrateur ».
Si vous testez des sites sur un serveur local Apache de développement par exemple, il vous faudra parfois effectuer certaines actions en qualité de Super Utilisateur.
Ce petit tutoriel vous donnera plusieurs pistes en fonctions de vos besoins, choisissez celle qui vous conviendra le mieux, ou utilisez les toutes, à vous de voir.
II - Avertissement
Les privilèges de Super-Administrateur doivent être utilisés à bon escient et avec prudence car vous pouvez modifier, ou supprimer des parties essentielles du système d'exploitation et le mettre en péril. En cas de doute, avant de lancer une commande ou d'éditer un fichier en ROOT, prenez le temps de vous documenter sur ladite commande et n'hésitez pas à faire des sauvegardes des fichiers auparavant, la bonne pratique est de les nommer avec leur même nom initial et le suffixe _back (pour back up).
Par exemple vous allez éditer le fichier "php.ini", faîtes-en d'abord une copie et renommez-la "php_back.ini".
gksudo (ou gksu)
Depuis Ubuntu 18.04 le paquet gksudo ne doit plus être utilisé, c'était bien pratique pour ouvrir en ROOT une application avec une interface graphique, mais de nombreux soucis ont rendu gksudo obsolète. Pour plus d'infos, voir les explications détaillées au bas de cette documentation.
Pour vous documenter sur une commande, le moyen le plus simple est de lancer dans un terminal, "man nom-de-la-commande".
Cela vous affichera le manuel de cette commande. Par exemple pour "sudo" :
man sudo
Pour en savoir plus sur le terminal et les commandes, reportez vous au tutoriel sur Bash.
III - Nautilus Admin
L'outil le plus simple
Ubuntu avec Gnome (ainsi que d'autres distribution GNU/Linux) comme vous le savez certainement, utilise Nautilus comme gestionnaire de fichiers.
Le paquet "nautilus-admin" peut donc y être installé et permet d'ajouter deux extensions à Nautilus.
Ainsi deux nouveaux menus apparaissent sur un clic droit :
- Ouvrir en tant qu'administrateur
- Éditer en tant qu'administrateur
- Ouvrir en tant qu'administrateur : ouvre un dossier dans une nouvelle fenêtre Nautilus avec des privilèges d'administrateur (ROOT).
- Éditer en tant qu'administrateur : ouvre un fichier dans une fenêtre Gedit s'exécutant avec les privilèges de l'administrateur (ROOT).
Pour installer ce paquet, lancez la commande :
sudo apt install nautilus-admin
Ainsi via un clic droit vous aurez deux nouveaux menus dans Nautilus :
ASTUCE : Pour éviter d'oublier que votre fenêtre Nautilus est en ROOT, agrandissez-la par exemple horizontalement et rétrécissez-là verticalement, de sorte qu'elle se démarque des autres fenêtres potentiellement ouvertes sur votre bureau. Croyez-moi sur parole, cela évite bien des maladresses parfois lourdes de conséquences.
IV- Nautilus Script — Ouvrir dans un terminal
Un complément bien pratique
Comme vous le voyez sur la capture ci-dessus, plus haut qu'« Ouvrir en tant qu'administrateur » se trouve un autre menu « Ouvrir dans un terminal ».
C'est grâce à un petit script pour Nautilus de Javier Donaire "Open Terminal Here" que vous pouvez télécharger sur Github.
Ici il n'est pas question de droits de Super Utilisateur, mais le fait de pouvoir ouvrir n'importe quel dossier dans un terminal par un clic droit fait souvent gagner beaucoup de temps.
Pour savoir où le placer et comment pouvoir en bénéficier, voir : les scripts pour Nautilus
VI- Éditeurs en ligne de commande
• Nano — Simple et déjà installé sur Ubuntu
Utilisez la ligne de commande reste toujours la meilleure méthode pour travailler en ROOT.
L'éditeur de texte Nano est assez facile à prendre en main, avec quelques paramétrages, il s'avère très utile.
Je vous en confie quelques un :
-
Ouvrir et pouvoir éditer un fichier en root :
sudo nano /chemin/vers/fichier
- Pour éditer un passage déplacez votre curseur à l'aide des flèches du clavier ;
- Sauvegarder vos modifications : Crtl+O → Le nom du fichier va être surligné par Nano → Confirmez par la touche Entrée ;
- Pour voir la position du curseur dans Nano (le numéro de la ligne où il se situe) : ALT + C ;
- Pour chercher une occurrence : Ctrl+W → Tapez ce que vous cherchez → Entrée ;
- Continuer la recherche : Alt+W → Entrée ;
- Quitter Nano : Ctrl+X ;
- Les autres raccourcis sont visibles depuis Nano, la flèche vers le haut signifie la touche "Ctrl".
Comment bénéficier du correcteur orthographique dans Nano ?
Ouvrez en ROOT le fichier /etc/nanorc avec la commande :
sudo nano /etc/nanorc
Recherchez la ligne : set speller "aspell -x -c" et décommettez-la (en enlevant le # au début de celle-ci), puis sauvegardez vos modifications.
Comment avoir la coloration syntaxique dans Nano ?
- Créez un fichier .nanorc dans votre Home (~). Et ajoutez la ligne suivante pour qu'elle soit prise en compte :
include "/usr/share/nano/nanorc.nanorc"
- Puis ajoutez la ligne avec le langage que voulez ainsi :include /usr/share/nano/<le language>.nanorc
Exemples : include "/usr/share/nano/php.nanorc"
Voici en exemple un fichier .nanorc que j'ai créé pour mon usage personnel dans mon Home (pour les fichiers .php, .html, .ini)
## Nanorc files include "/usr/share/nano/nanorc.nanorc" ## PHP include "/usr/share/nano/php.nanorc" ## HTML include "/usr/share/nano/html.nanorc" ## Config Files (.ini) include "/usr/share/nano/ini.nanorc"
Tous les fichiers de colorations disponibles se situent ici : /usr/share/nano
Mais il n'y a pas le INI, du coup nous devons le chercher dans les sources ici : https://github.com/serialhex/nano-highlight
Et plus précisément là : https://github.com/serialhex/nano-highlight/blob/master/ini.nanorc
Copiez-le ensuite dans le dossier /usr/share/nano/ (en étant root) et nommez-le : ini.nanorc
• Midnight Commander — Gestionnaire de fichiers quasi-graphique
Si vous le préférez vous pouvez installer Midnight Commander. L'interface présente deux panneaux qui affichent les fichiers selon leurs emplacements, on peut donc se déplacer dans l'arborescence des répertoires, visualiser les fichiers, les comparer, les copier ou les déplacer.
Midnight Commander propose aussi un éditeur de fichiers et permet de se connecter en FTP sur un serveur distant via SSH.
VII - Utiliser l'interface d'administration du système de fichiers virtuel GVFS et Polkit
admin:// dans Nautilus
Cette interface GVFS fonctionne en saisissant au début du chemin complet du répertoire à cibler admin:// puis le chemin d'accès du répertoire à cibler.
Par exemple, lancez Nautilus et appuyez sur Ctrl+L pour activer la barre d'adresse, puis saisissez :
- admin:/// pour ouvrir le répertoire racine /
- ou admin:///usr/ pour ouvrir le répertoire /usr/
Vous pouvez également le faire via le terminal. Par exemple pour ouvrir le répertoire /etc/apache2/ lancez :
nautilus admin:///etc/apache2/
Notez qu'il y a bien trois slash (/) après admin dans cette commande (les deux de admin:// puis le premier du chemin d'accès).
Un autre exemple, ici en ligne de commande pour modifier en ROOT le fichier php.ini du dossier /etc/php/8.1/apache2
gedit admin:///etc/php/8.1/apache2/php.ini
VIII - Utiliser la commande pkexec dans un terminal ouvert au sein d'un environnement graphique.
pkexec en ligne de commande
Ici aussi nous allons aussi utiliser PolKit (la bibliothèque permettant aux applications s'exécutant avec des droits restreints d'interagir avec des services privilégiés du système).
Mais pour que la commande pkexec fonctionne correctement avec un programme graphique, tel que gedit, il faut utiliser les variables d'environnement "$DISPLAY" et "$XAUTHORITY", sous la forme :
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY nom-du-programme chemim/vers/fichier
Ainsi par exemple pour éditer le fichier php.ini du dossier /etc/php/8.1/apache2, la commande sera :
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY gedit /etc/php/8.1/apache2/php.ini
IX - Pourquoi ne doit-on pas utiliser sudo avec une application graphique ?
Gare à sudo
Les applications graphiques stockent souvent des paramètres et d'autres données spécifiques à l'utilisateur dans des fichiers de configuration écrits dans le dossier d'accueil de l'utilisateur. Le principal mécanisme utilisé par les applications pour déterminer ce qu'elles doivent utiliser comme dossier d'origine de l'utilisateur est la variable d'environnement HOME.
Supposons que vous exécutez gedit (l'éditeur de texte graphique) en tant que ROOT. Si vous exécutez "sudo gedit", HOME continuera à pointer vers votre répertoire personnel, même si le programme est exécuté en tant que ROOT. Par conséquent, gedit écrira les fichiers de configuration en tant que ROOT dans votre répertoire personnel. Cela aura parfois pour conséquence que les fichiers de configuration appartiendront à ROOT et seront donc inaccessibles pour vous (si vous exécutez ensuite le programme en tant que vous-même et non en tant que ROOT). Cela se produit principalement lorsque l'application doit créer un nouveau fichier de configuration. Les fichiers nouvellement créés, par défaut, appartiennent à l'utilisateur qui les a créés (qui dans ce cas est ROOT, pas vous).
C'est la raison principale pour laquelle vous devez utiliser l'une des alternatives décrites ci-dessus pour exécuter les applications graphiques en tant que ROOT.
Si vous voulez absolument utiliser sudo directement pour exécuter une application graphique comme gedit, vous pouvez lançer la commande "sudo -H gedit".
L'option -H fait en sorte que sudo définisse HOME pour pointer sur le dossier personnel de ROOT (qui est /root).
Cela ne gère toujours pas automatiquement la propriété de .Xauthority en le copiant dans un dossier temporaire (c'est l'autre chose dont les interfaces graphiques de sudo s'occupent pour vous). Mais dans le cas peu fréquent où .Xauthority est inaccessible, vous obtiendrez une erreur le signalant, et vous pourrez alors résoudre le problème en le supprimant (sudo rm ~/.Xauthority), car il sera automatiquement régénéré.
Ainsi, la protection de la propriété et des permissions de .Xauthority est moins importante que la protection de la propriété et des permissions des fichiers de configuration.
Contrairement à un .Xauthority appartenant à l'utilisateur ROOT, lorsque les fichiers de configuration deviennent la propriété de l'utilisateur ROOT, le problème n'est pas toujours évident (car les programmes graphiques s'exécutent souvent, mais ne fonctionnent pas très bien, et affichent les erreurs utiles sur la console).
Et c'est parfois un plus gros problème à résoudre, surtout si vous êtes dans une situation où vous voulez qu'un ou plusieurs fichiers de votre répertoire personnel appartiennent à quelqu'un d'autre que vous, parce qu'alors vous ne pouvez pas le résoudre simplement en chownant récursivement tous vos fichiers vers vous-même (quand on a besoin qu'ils appartiennent à l'utilisateur "www-data" celui d'Apache par exemple, ça vous parle peut être ?).
Par conséquent, sudo (au moins sans -H) ne devrait pas être utilisé pour exécuter une application graphique à moins que vous ne soyez très familier avec le fonctionnement interne de l'application et que vous soyez certain qu'elle ne tente jamais d'écrire des fichiers de configuration.
Le souci avec la commande "sudo -H gedit" c'est que l'on peut aisément oublier l'option -h, et là tous les soucis que nous venons de voir dans ce chapitre sont bien réels, c'est pourquoi il est tout de même déconseillé de l'utiliser.
X - Autres ressources
- Remerciement à Eliah Kagan sur askubuntu.com pour ses explications ici librement traduites ;
- L'éditeur Nano ;
- Le gestionnaire de fichiers Midnight Commander ;
- Polkit — Gestion des droits des utilisateurs ;
- GVFS — Espace personnel de système de fichier virtuel ;
- Au besoin consultez la documentation des utilisateurs sur le site doc.ubuntu-fr.org ;
Vous avez aimé cet article, partagez-le !
Mon pied droit est jaloux de mon pied gauche. Quand l'un avance, l'autre veut le dépasser. Et moi, comme un imbécile, je marche !