Específicamente, quiero simplificar la edición del hosts
archivo, que requiere privilegios de root.
El siguiente comando funciona en el shell:
sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts
Por lo que puedo aprender, lo siguiente debería funcionar con Automator:
-- Run AppleScript
on run {input, parameters}
do shell script ¬
"/Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts" with administrator privileges
end run
… la clave es que with administrator privileges
es equivalente a sudo
y le pedirá una contraseña.
Sin embargo, cuando ejecuto el script, aparece el siguiente error:
El comando terminó debido a la recepción de una señal.
y luego
TextEdit se cierra inesperadamente.
… que parece serio.
Si intento lo mismo con el editor de texto Atom , funciona según lo previsto.
¿ Cómo hago para que TextEdit se ejecute como root?
En la versión actual de macOS (10.12.6 en el momento de escribir este artículo), esto tampoco funcionará desde el shell:
$ sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit
Password:
Illegal instruction: 4
Y si revisa los registros de fallas, encontrará lo siguiente:
Sandbox registration internal error: Incoming message euid:0 does not match secinitd uid:501.
Esto es por diseño; TextEdit es una aplicación de espacio aislado, y ejecutarla como root anularía gran parte del propósito del espacio aislado. No creo que puedas encontrar una manera de hacer que se ejecute como root. Sin embargo, esto no es algo malo, ya que ejecutar una aplicación GUI como root es generalmente una idea terrible para la seguridad, ya que hay muchas formas de inyectar código de forma subrepticia en una aplicación Cocoa, y si esa aplicación se ejecuta como root, puede abrir algunas vulnerabilidades de seguridad bastante serias de esta manera.
Para editar archivos como /etc/hosts
, recomiendo encontrar otra forma:
Utilice un editor de línea de comandos como emacs
, pico
o vi
.
Use un editor de texto basado en GUI que tenga la función de solicitar su contraseña de administrador cuando sea necesario (creo que BBEdit puede hacer esto, por ejemplo)
Simplemente copie el /etc/hosts
archivo a otra ubicación, edítelo allí y luego utilícelo sudo
para copiar el archivo modificado nuevamente a /etc
.
No es realmente una respuesta a lo que preguntó, pero como alternativa, ¿ha probado Gas Mask - editor de archivos Hosts gratuito?
Puede editar, almacenar múltiples versiones y cambiar sobre la marcha.
Solo para cerrar el círculo sobre esto (porque fue uno de los principales éxitos en Google).
Aquí se explica cómo abrir cualquier archivo.
terminal (bash/zsh):
sudo open /Applications/Developers\ Tools/Sublime\ Text.app /etc/hosts
sudo open "/Applications/Developers Tools/Sublime Text.app" /etc/hosts
alias - entrada:
alias edit="sudo open /Applications/Developers\ Tools/Sublime\ Text.app"
alias - uso:
edit /etc/hosts
Automator - Acción rápida (para usar en Finder):
Nuevo > Acción rápida
Agregue la acción 'Ejecutar script de Shell' al flujo de trabajo
Configure las opciones de flujo de trabajo para que sean: el flujo de trabajo recibe archivos o carpetas actuales en Finder.app (las palabras en negrita son opciones para seleccionar)
Pegue el fragmento a continuación en el cuadro de acción Shell Script
abrir -a /Aplicaciones/Desarrolladores\ Herramientas/Sublime\ Text.app "$@"
Guardar flujo de trabajo - nombre sugerido "Abrir en Sublime Text (como root)
Abra Preferencias del sistema > Teclado > Servicios y verifique que el script aparezca y esté marcado.
Vaya a Finder y haga clic derecho y encontrará la opción en el menú contextual para iniciar la entrada (el archivo seleccionado) como root / superusuario
Espero que esto ayude a cualquier otra persona que se encuentre con esto.
sudo open
no ejecuta la aplicación como root.
Manngó