Il est déconseillé d'utiliser Sudo
avec une application graphique telle que gedit
, comme décrit sur ce lien . En conséquence, j'ai eu tendance à utiliser vim
avec Sudo
.
Récemment, j'ai remarqué que mon ~/.viminfo
appartenait à root sur une nouvelle installation de buntu 16.04 (Xenial Xerus). Je me suis donc demandé si même Vim était considéré comme étant graphique ou s'il y avait un autre problème avec invoquer Sudo vim
. Après avoir changé de propriétaire pour moi-même via:
Sudo find $HOME -not -user $USER -exec chown $USER:$(id -g) {} +
et ensuite, en exécutant Sudo vim
, je n'ai pas pu avoir ~/.viminfo
appartenant à root. Cependant, je suis certain qu’il appartenait récemment à root.
Est-il déconseillé d'appeler Sudo vim
?
Oui, c'est sécuritaire.
Le problème avec Sudo gedit
est dû au fait que les applications graphiques utilisent certains fichiers, tels que ~/.cache/dconf
, et après que gedit
soit élevé, ce fichier appartient à la racine. Eh bien, ce fichier contient des paramètres spécifiques à l'utilisateur pour les applications à interface graphique, y compris le bureau. Par conséquent, si le système ne peut pas lire ces paramètres, c'est mauvais. IIRC un utilisateur ne peut pas démarrer un bureau particulier. Les fichiers de données récents de l'utilisateur recently-used.xbel
sont également affectés.
D'autre part, Vim n'a pas ce problème. Il n'utilise aucune base de données liée à l'interface graphique et ne place rien dans recently-used.xbel
. Il a été créé uniquement pour la console, bien que gVim existe également. En fait, sur certains systèmes, Vim est votre seul choix d’éditeur. Donc, il est plus sûr que gedit en vertu de ne pas causer les mêmes problèmes. Vous êtes toujours en train d’éditer en tant que root dans les deux cas, vous risqueriez donc d’être gêné par une édition incorrecte.
Selon cet article de blog :
La première fois que vous utilisez vim, le fichier
~/.viminfo
est créé et si vous utilisezSudo vim
la première fois que vous utilisez vim après l'avoir installé sur un nouveau système, les autorisations sur~/.viminfo
auront le propriétaire défini sur root au lieu de l'utilisateur par défaut.
Bien que l'auteur souligne que cela peut entraîner des problèmes, il n'y a rien de complexe, mais chown
le fichier à vous-même.
Voir également:
Il est également possible d'utiliser sudoedit
pour y parvenir; il ouvre une copie temporaire du fichier dans votre éditeur, votre éditeur s’exécutant comme vous. De la page de manuel :
Des copies temporaires sont créées des fichiers à modifier avec le propriétaire défini sur l'utilisateur appelant.
L'éditeur spécifié par la stratégie est exécuté pour modifier les fichiers temporaires. La stratégie sudoers utilise les variables d'environnement
Sudo_EDITOR
,VISUAL
etEDITOR
(dans cet ordre). Si aucun desSudo_EDITOR
,VISUAL
ouEDITOR
n'est défini, le premier programme répertorié dans l'éditeursudoers(5)
est utilisé.S'ils ont été modifiés, les fichiers temporaires sont recopiés à leur emplacement d'origine et les versions temporaires sont supprimées.
Cela fonctionne bien avec vim (c'est ce que je fais généralement) et j'imagine que cela vous permettrait également d'utiliser gedit. Il y a certaines restrictions de sécurité .
Le lien est très ancien (2013). Il recommande d'utiliser gksudo
ou gksu
pour les applications graphiques, mais ces deux applications deviennent obsolètes. Plus tard, la réponse acceptée suggère également Sudo -H
cependant.
Le consensus général dans la communauté Ask Ubuntu récemment est d'utiliser:
Sudo -H gedit /path/to/filename
Le seul problème reste que Sudo
ne possède pas de profil pour les paramètres de tabulation, les extensions, le retour à la ligne Word, le nom de la police, la taille de la police, etc. Vous pouvez en hériter de votre profil utilisateur à l'aide d'un script d'encapsulation comme ceci: Comment synchroniser mon root gedit avec les préférences de mon utilisateur?
Oui, il est prudent d'utiliser Sudo vim
. Les problèmes que je rencontre sont
Devoir quitter le fichier et rouvrir avec Sudo vim
pour pouvoir le modifier.
Le nom racine vimrc
étant celui par défaut, et non mon contenu utile personnalisé.
Voici une fonction que vous pouvez mettre dans votre bashrc
pour permettre à vim de procéder automatiquement à Sudo si vous ne pouvez pas éditer le fichier normalement.
vim() {
#only good for auto-Sudo. delete if no Sudo privileges.
#If you're not just opening a single file, let's not use this.
if [[ "$#" -ne 1 ]]; then
command vim "$@"
#cases: if we can write to the file, or the file doesn't exist and we can make new files in that directory
Elif [[ -w "$1" || ( -w $(dirname "$1") && ! -f "$1" ) ]]; then
# \vim or 'vim' only escape aliases, not functions
command vim "$1"
else
Sudo env HOME="$HOME" vim -u $HOME/.vimrc "$1"
fi
}
C'est bien d'utiliser vi comme racine. Vous aurez parfois besoin d'éditer un fichier qui nécessite des privilèges Sudo ou root, comme changer votre fichier d'interface réseau ou peut-être éditer votre fichier de configuration sshd. L'utilisation de root pour les éléments graphiques est mauvaise car les utilisateurs se connecteraient à IRC ou navigueraient sur le Web en tant que root. S'ils attrapent un virus, ils auront un accès root complet.
Quelque chose qui n’a pas été mentionné dans les autres réponses est que l’exécution de vim avec root donnera des privilèges root à tous les plugins que vous avez installés. Ainsi, la question de savoir s’il est ou non sûr de s’exécuter en tant que root dépend de la question de savoir si vous faites confiance à ces développeurs de plug-in (ou contributeurs à leur projet) pour ne pas posséder votre système à sa base.
Vim est généralement approuvé par les responsables de paquet dans toutes les distributions Linux, il est donc facile de faire confiance. Cependant, les plugins vim sont généralement installés directement à partir du dépôt GitHub et ont généralement beaucoup moins d'audits d'utilisateurs (peut-être nuls). En d'autres termes, il n'y a pas de processus de validation avec eux.
Si vous ne chargez pas de plug-in alors que vous êtes à la racine, j’imagine que l’exécution en tant que root dépend du fait que vous accordiez ou non la confiance aux développeurs vim. Vous pouvez toutefois éviter de leur faire confiance en utilisant sudoedit, qui est créé par les mêmes développeurs de Sudo, des personnes à qui nous avons déjà confié un accès root. GKFX et NieDzejkob ont déjà expliqué pourquoi le sudoedit est idéal. Outre le fait que vous n'avez pas besoin de confier l'accès root à une autre personne, à l'exception des développeurs de Sudo, vous pouvez charger tous les plug-ins auxquels vous avez déjà fait confiance avec votre compte d'utilisateur normal.