Automator: Ejecutar TextEdit como Root

1

Específicamente, quiero simplificar la edición de hosts archivo, que requiere privilegios de root.

El siguiente comando funciona en el shell:

sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit /etc/hosts

De lo que soy capaz de aprender, lo siguiente debería funcionar usando 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 el equivalente de sudo y le pedirá una contraseña.

Sin embargo, cuando ejecuto el script, aparece el siguiente error:

The command terminated due to receipt of a signal.

y entonces

TextEdit quit unexpectedly.

... que se ve serio.

Si intento lo mismo con Átomo editor de texto, funciona según lo previsto.

Como lo consigo TextEdit para ejecutar como root?

Manngo
fuente

Respuestas:

2

En la versión actual de macOS (10.12.6 en el momento de escribir esto), esto tampoco funcionará desde el shell:

$ sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit 
Password:
Illegal instruction: 4

Y si revisa los registros de fallos, 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 sandbox. No creo que puedas encontrar la manera de ejecutarlo 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 maneras de inyectar subrepticiamente el código en una aplicación Cocoa, y si esa aplicación se ejecuta como root, puede abrir de esta manera algunas vulnerabilidades de seguridad bastante serias.

Para editar archivos como /etc/hosts, Recomiendo buscar otra manera:

  1. Utilice un editor de línea de comandos como emacs, picoo vi.

  2. 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)

  3. Simplemente copia el /etc/hosts archivo a otra ubicación, edítelo allí, y luego use sudo para copiar el archivo modificado de nuevo a /etc.

Charles Srstka
fuente
En realidad, tienes razón en que el comando tampoco funciona en el shell, solo para Atom. La razón por la que quería usar TextEdit es para que mis alumnos puedan acceder fácilmente. Gracias por la respuesta, sin embargo, al menos explica por qué.
Manngo
1

No es realmente una respuesta a lo que preguntaste, pero como alternativa, ¿lo has intentado? Máscara de gas - Freeware Hosts editor de archivos.
Puede editar, almacenar múltiples versiones, & amp; encienda la marcha.

enter image description here

Tetsujin
fuente
Buena atrapada. He estado buscando algo como esto, pero no pude encontrar nada, por eso me rendí y probé el enfoque de TextEdit.
Manngo