Tant que vous l'exécutez correctement, c'est une question de préférence.
Mis à part les différences de fonctionnalités , quel éditeur de texte que vous utilisez est en fait à peu près votre préférence. Cela est vrai même lorsque votre éditeur de texte est un programme graphique comme Gedit . Cela ne veut pas dire qu'il n'y a pas de bonne raison nano
et vim
sont souvent recommandés. Les éditeurs de texte basés sur les terminaux aiment vim
(ou au moins une vi
commande) et nano
sont disponibles même lorsqu'il n'y a pas d'interface graphique et même sur la plupart des systèmes très minimes et cassés ; ils ont une tradition derrière eux (si vous êtes partisan de ce genre de chose); ils peuvent être exécutés dans le même terminal dans lequel d'autres tâches sont effectuées; ils s'intègrent automatiquement dans les workflows des utilisateurs du multiplexeur terminal ; et ils sont plus susceptibles d'être disponibles que toutéditeur de texte graphique particulier , même Gedit, même sur Ubuntu (qui a plusieurs saveurs ).
Ce n'est pas tout. Si vous souhaitez modifier des fichiers système, une approche consiste à exécuter votre éditeur en tant que root. Ce n'est pas la seule approche, et il y a quelques arguments contre (voir ci-dessous), mais c'est une approche courante. Si vous adoptez cette approche et utilisez un programme graphique comme éditeur, vous devez prendre soin de l' exécuter de manière à ce que ce $HOME
soit le répertoire personnel de root plutôt que le vôtre , ce qui ajoute une nouvelle couche de tracas et de complexité. Mais vous le faites déjà; vous courez sudo -H gedit
, ce qui est l' un des moyens raisonnables . Pourtant, cette complexité est une autre raison pour laquelle les gens ont tendance à suggérer des éditeurs non graphiques.
Les programmes graphiques sont souvent plus compliqués que les programmes non graphiques. Avoir plus de choses exécutées en tant que root est généralement mauvais, car il y a plus de façons dont les choses pourraient mal tourner, y compris en raison de bogues possibles, y compris par accident. (Les éditeurs de texte non graphiques tels que vim
sont également assez sophistiqués et sont souvent configurés pour exécuter de nombreux programmes externes pour effectuer diverses tâches.)
Outre l'exécution de l'éditeur en tant que root, une autre approche générale consiste à modifier un fichier que l'éditeur est capable de modifier même lorsqu'il s'exécute en tant qu'utilisateur (non root), de sorte que les modifications apportées au fichier soient propagées vers le fichier appartenant à la racine que vous souhaitez changer. Cela semble abstrait, car les détails varient considérablement. Deux grandes approches concrètes suivent.
sudoedit
Une façon assez ancienne de le faire est sudoedit
(documentée dans la même page de manuel quesudo
). Par défaut, sudoedit
utilise l'éditeur de texte par défaut , qui n'est généralement pas - et ne devrait pas être - un programme graphique. Mais vous pouvez lui dire d'utiliser un éditeur à travers les SUDO_EDITOR
, VISUAL
ou les EDITOR
variables d'environnement , qu'il consulte dans cet ordre. Ainsi, vous pouvez exécuter:
VISUAL=gedit sudoedit filename
Remplacez filename
par un chemin relatif ou absolu vers votre fichier.
Cela crée une copie temporaire du fichier que vous souhaitez modifier. La copie vous appartient, pas à root (ou à qui que ce soit le propriétaire d'origine). Il ouvre l'éditeur de texte et vous pouvez modifier la copie temporaire. Lorsque vous fermez l'éditeur de texte, sudoedit
vérifie si vous avez réellement apporté des modifications. Si vous l'avez fait, il copie modifié copie temporaire de retour à l'original.
Bien qu'il sudoedit
fonctionne avec des éditeurs graphiques, il est également utile pour les éditeurs basés sur des terminaux. Dans les deux cas, les pistes de l' éditeur de texte que vous, il a donc votre configuration, et d' autres actions que vous effectuez dans ce autre que les modifications apportées à ce fichier sont effectuées par vous, qui offre un peu de protection contre certains types d'erreurs.
Vous pouvez définir l'une de ces variables d'environnement de manière persistante si vous le souhaitez. SUDO_EDITOR
est peut-être le meilleur car il est utilisé pour moins d'autres choses. Cependant, si vous le définissez sur gedit
, gardez à l'esprit que des commandes comme ne fonctionneront pas lorsqu'aucune interface graphique n'est disponible, comme c'est souvent (mais pas toujours ) le cas dans une console virtuelle ou via SSH .sudoedit filename
Le backend d'administration GVFS
Une autre façon plus récente de procéder consiste à ouvrir le fichier via son admin://
chemin GVFS plutôt que son chemin traditionnel de style Unix. Merci à pomsky de m'avoir appris cela. Tout comme il existe des chemins GVFS pour éditer des fichiers qui, à d'autres égards, ne sont pas dans un endroit pratique pour être édités - par exemple parce qu'ils se trouvent sur une machine distante à laquelle vous êtes connecté via SSH - GVFS prend en charge les admin://
chemins pour éditer des fichiers vous ne possédez pas.
Ceci est conceptuellement similaire au fait sudoedit
que vous exécutez votre éditeur en tant que vous-même et que le fichier que l'éditeur voit est quelque chose qu'il est autorisé à modifier. Si vous tentez d'ouvrir le fichier, vous devez vous authentifier; ce n'est pas un moyen magique de contourner les restrictions de sécurité habituelles.
gedit admin:///path/to/filename
Il /path/to/filename
doit y avoir un chemin absolu vers le fichier, en commençant par /
. Il y a donc trois /
caractères après admin:
.
Encodages et autres éléments théoriquement affectés par la configuration de l'éditeur
L'encodage d'un fichier n'est pas vraiment affecté par le fait que l'éditeur que vous utilisez soit graphique ou non. Certains éditeurs, comme vim
, peuvent même fonctionner graphiquement (la gvim
commande) ou non graphiquement (la vim
commande). La réponse simple à votre question sur les encodages est que vous n'avez pas à vous en préoccuper. C'est assez proche de la vérité que vous n'avez vraiment pas besoin de lire le reste de cette réponse.
Dans les versions actuelles (et passées) d'Ubuntu, les commandes aiment sudo nano
et sudo vim
exécutent ces éditeurs en tant que root mais sont $HOME
toujours définies dans votre répertoire personnel. Cela signifie que les éditeurs utiliseront par défaut votre configuration plutôt que la configuration de root. S'il y a quelque chose dans votre configuration de ces éditeurs (ou dans un programme qu'ils exécutent pour faire une partie de leur travail, comme git
) concernant les encodages ou les fins de ligne , il sera suivi. Avec , cela n'arrivera pas.sudo -H editor
Certaines personnes utilisent nu sudo
(c'est-à-dire sans -i
ou -H
) aux éditeurs parce qu'elles le veulent. Mais vraiment, vous devriez y réfléchir à deux fois. Non seulement vous pouvez atteindre cet objectif plus proprement avec une méthode comme sudoedit
, il y a d'autres inconvénients des commandes comme sudo nano
et sudo vim
:
Si la configuration de votre éditeur entraîne l'exécution de quelque chose, celui-ci est exécuté en tant que root. Pour les éditeurs sophistiqués comme celui-ci vim
, cela peut entraîner l'exécution d'un certain nombre de codes non triviaux en tant que root. Comme mentionné ci-dessus, avoir moins de code exécuté en tant que root est généralement bon et c'est l'un des arguments contre l'exécution d'éditeurs graphiques en tant que root.
Si votre vim
configuration a de nombreux plugins - par exemple, pour effectuer une analyse statique du code source que vous tapez - et n'a pas, moins exécute trucs de racine en tant que root avec que . (Encore moins s'exécute en tant que root avec , mais vos plugins fonctionnent toujours!) Ceci est distinct du fait que votre éditeur soit graphique ou non.sudo -H vim filename
sudo vim filename
VISUAL=vim sudoedit filename
Si la configuration de votre éditeur est cassée et vous empêche de modifier facilement les fichiers, la correction peut être encore plus compliquée, car elle s'applique également à root. Ce n'est qu'un problème, pas un problème difficile à résoudre.
Les commandes comme sudo vim
ont un peu le même problème que la commande (mal avisée!) sudo gedit
. Si vous exécutez un éditeur comme vim
root mais sans réinitialiser $HOME
(comme sudo -H
et le sudo -i
ferait), et qu'il crée des fichiers de configuration pour lui - même , ces fichiers de configuration résideront dans votre répertoire personnel mais ils appartiendront à root, et votre configuration peut être quelque peu cassée lorsque vous exécutez l'éditeur plus tard en tant que vous-même.
Eh bien, cela ressemble beaucoup à ce problème! La raison pour laquelle c'est moins important qu'avec les applications graphiques est que l'éditeur démarre généralement toujours, les messages d'erreur sont généralement plus faciles à comprendre, vous pouvez généralement comprendre quels fichiers spécifiques sont affectés beaucoup plus facilement et la rupture est généralement limitée à ce seul programme. (Les programmes graphiques utilisent des fichiers de configuration à plusieurs endroits.) De plus, contrairement aux éditeurs graphiques, les utilisateurs qui n'utilisent que par hasard un éditeur de texte et ne modifient pas délibérément sa configuration sont peu susceptibles de rencontrer ce problème.
Encore une fois, vous pouvez utiliser la configuration de l'éditeur de votre propre compte d'utilisateur tout en évitant les problèmes d'autorisations en utilisant sudoedit
ou, à partir du bureau, en démarrant l'éditeur normalement mais en accédant au fichier via un admin://
chemin.
Enfin, notez que le comportement mentionné ci-dessus de sudo
quand -H
ou -i
est passé est en fait prévu de changer dans une future version d'Ubuntu (comme il l'a déjà fait, il y a des années, dans la plupart des systèmes d'exploitation de type Unix qui utilisent sudo
). Le comportement a déjà changé dans Ubuntu 19.10 , qui est la version de développement à ce jour.
-H
partie est importante , ne l'utilisez passudo
pour lancer des applications GUI sans elle.