Changer les files avec l'éditeur qui ont besoin des permissions sudo

Je veux changer les files avec KomodoEdit qui ont besoin des permissions sudo . Je ne peux pas démarrer KomodoEdit avec sudo , cependant (pour une raison quelconque). Puis-je, d'une manière ou d'une autre, autoriser Komodo à éditer ces files (en particulier, je parle des files apache2 et /etc/hosts )?

Utilisez sudoedit <file> . Il crée une copy locale du file, l'édite avec les droits d'user et le copy dans l'location d'origine. L'avantage est que l'éditeur fonctionne comme user régulier.

Pour spécifier un éditeur différent de celui par défaut, vous pouvez définir temporairement EDITOR :

 EDITOR=/usr/bin/someeditor sudoedit /etc/hosts 

Cela nécessite que le packageage sudo soit installé et que l'user soit ajouté au groupe sudo .

En théorie, vous pouvez le faire en définissant le bit suid sur komodoedit et en changeant le propriétaire en root.

 sudo chown root:root /path/to/komodoedit sudo chmod u+s /path/to/komodoedit 

Ce qu'il fait:

  1. chown définit le propriétaire à root
  2. chmod u+s donne à quiconque exécute le file les mêmes droits (pour l'exécution) que le propriétaire.

Depuis que nous avons défini le propriétaire sur root, le propriétaire d'exécution effectif devient root.

Ce n'est probablement pas la réponse que vous cherchez, car elle accordera à tous les users un éditeur racine efficace.

sudoedit, comme mentionné par marco, est probablement plus correct, la security sage.

Un moyen relativement propre consiste à donner à vos identifiants d'user les droits d' access à un file donné en utilisant des lists de contrôle d'access . Vous aurez probablement besoin d'installer le package acl pour avoir les commands getfacl et setfacl . Ensuite, pour un user "myname" et un file /etc/hosts vous pouvez donner la command:

 sudo setfacl -m 'u:myname:rw' /etc/hosts 

et vous serez alors en mesure de lire / écrire ce file. Quand vous avez ls -l sur le file, vous verrez un signe + pour montrer qu'il y a un acl pour le file:

 -rw-r--r--+ 1 root root 221 Nov 5 16:55 /etc/hosts 

et vous pouvez listr l'acl avec getfacl sur le file. Pour supprimer l'acl plus tard sur l'utilisation

 sudo setfacl -x 'u:myname' /etc/hosts 

ou setfacl -b pour supprimer tous les acls. (Votre système de files doit prendre en charge acls.)