Je suis tombé sur cette question en cherchant quelque chose de totalement indépendant, mais j'ai pensé ajouter la distinction importante suivante, qui n'a pas du tout été mentionnée jusqu'à présent :sudoedit n'exécute pas votre éditeur en tant que root.
$ sudo vim /etc/farts.conf
Exécutera simplement vim en tant que root, lui permettant de lire le fichier. L'inconvénient est que l'éditeur s'exécute désormais également en tant que root et peut tout faire. Si vous vouliez juste autoriser un utilisateur à éditer un fichier de configuration et rien d'autre, tant pis, vous lui avez juste donné root sur l'ensemble du système. Rien ne m'empêche de générer un shell depuis vim avec :sh
ou :!command
, et puisqu'il s'agit de sous-processus, ils s'exécuteront également en tant que root.
D'autre part :
$ sudoedit /etc/farts.conf
fonctionnera en fait différemment. Il créera une copie avec un nom unique dans /tmp avec des autorisations verrouillées uniquement pour votre utilisateur, puis générera votre éditeur normalement, sans privilèges root, sur cette copie.
Une fois que vous quittez votre éditeur, il comparera le fichier temporaire et le fichier d'origine, et remplacera en toute sécurité l'original par votre modification si elle a changé.
Dans ce scénario, il devient possible d'autoriser un utilisateur à modifier un fichier système, mais pas de lui permettre d'exécuter des binaires aléatoires en tant que root ou de pousser n'importe où sur le système de fichiers.
C'est principalement la distinction réelle, le reste qui a été mentionné n'est que des effets secondaires intéressants.
Tout d'abord, sudo vim
mentionne déjà explicitement votre éditeur par défaut, ce qui n'est pas nécessaire si vous l'avez défini dans $EDITOR
. sudoedit
vous évite de définir l'éditeur chaque fois que vous souhaitez modifier quelque chose et, sur un système multi-utilisateurs, cela permet à chacun d'utiliser l'éditeur qu'il aime personnellement.
Comment? Considérez un système où les utilisateurs normaux n'obtiennent que sudo
privilèges pour modifier certains fichiers. Ils ne peuvent pas exécuter sudo
avec quoi que ce soit d'autre cependant. Vous devriez leur permettre de sudo vi
et sudo vim
et sudo nano
et sudo emacs
et sudo pico
(etc). Au lieu d'avoir à le faire, vous pouvez simplement leur permettre de sudoedit
le fichier, avec leur choix de réglage $EDITOR
à tout ce qu'ils aiment. (Imaginez que vous obligeriez un amateur d'Emacs à utiliser Vim...)
Un autre problème est que si votre $EDITOR
est défini sur vim
, et vous avez des paramètres de personnalisation pour celui-ci dans le .vimrc
de votre utilisateur , ces paramètres ne seront pas utilisés si vous utilisez sudo vim
ou sudo $EDITOR
. sudoedit
préserve cependant l'environnement de l'utilisateur appelant, et donc vos paramètres.
Voir aussi :Qu'y a-t-il de si génial avec sudoedit ?