Quiero cambiar archivos con KomodoEdit que necesitan sudo
permisos. Sin embargo , no puedo iniciar KomodoEdit con sudo
(por el motivo que sea). ¿Puedo de alguna manera otorgar permiso a Komodo para editar esos archivos (en particular, estoy hablando de archivos apache2 y /etc/hosts
)?
Respuesta1
Usar sudoedit <file>
. Crea una copia local del archivo, la edita con derechos de usuario y la copia nuevamente a la ubicación original. La ventaja es que el editor se ejecuta como usuario normal.
Para especificar un editor diferente al predeterminado, puede configurarlo EDITOR
temporalmente:
EDITOR=/usr/bin/someeditor sudoedit /etc/hosts
Esto requiere sudo
que se instale el paquete y que se agregue el usuario al sudo
grupo.
Respuesta2
En teoría, podrías hacerlo configurando el bit suid en komodoedit y cambiando su propietario a root.
sudo chown root:root /path/to/komodoedit
sudo chmod u+s /path/to/komodoedit
Que hace:
chown
establece al propietario como rootchmod u+s
otorga a cualquiera que ejecute el archivo los mismos derechos (para la ejecución) que el propietario.
Dado que hemos configurado el propietario como root, el propietario de ejecución efectivo se convierte en root.
Probablemente esta NO sea la respuesta que busca, ya que otorgará a todos los usuarios un editor raíz efectivo.
Sudoedit, como lo menciona marco, es probablemente más correcto en términos de seguridad.
Respuesta3
Una forma relativamente limpia es otorgar permisos de identificación de usuario a un archivo determinado usandolistas de control de acceso. Probablemente necesitarás instalar el acl
paquete para tener los comandos getfacl
y setfacl
. Luego, para un usuario "minombre" y un archivo, /etc/hosts
puede dar el comando:
sudo setfacl -m 'u:myname:rw' /etc/hosts
y luego podrá leer/escribir este archivo. Cuando esté ls -l
en el archivo, verá un +
letrero que muestra que hay una ACL para el archivo:
-rw-r--r--+ 1 root root 221 Nov 5 16:55 /etc/hosts
y puede enumerar la acl getfacl
en el archivo. Para eliminar la acl más adelante en su uso
sudo setfacl -x 'u:myname' /etc/hosts
o setfacl -b
para eliminar todas las ACL. (Su sistema de archivos debe admitir acls).