Automator: lancia TextEdit come root

1

In particolare, voglio semplificare la modifica del file hosts , che richiede i privilegi di root.

Il seguente comando funziona nella shell:

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

Da quanto sono in grado di imparare, il seguente dovrebbe funzionare 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 chiave è che with administrator privileges è l'equivalente di sudo e chiederà una password.

Tuttavia, quando eseguo lo script, ottengo il seguente errore:

The command terminated due to receipt of a signal.

e poi

TextEdit quit unexpectedly.

... che sembra serio.

Se provo la stessa cosa con l'editor di testo Atom , funziona come previsto.

Come faccio a ottenere TextEdit per l'esecuzione come root?

    
posta Manngo 12.09.2017 - 01:54
fonte

2 risposte

2

Sulla versione attuale di macOS (10.12.6 al momento della stesura di questo documento), questo non funzionerà neanche dalla shell:

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

E se controlli i registri degli arresti anomali, troverai quanto segue:

Sandbox registration internal error: Incoming message euid:0 does not match secinitd uid:501.

Questo è di design; TextEdit è un'app sandboxed e l'esecuzione come root eliminerebbe gran parte dello scopo del sandboxing. Non penso che sarai in grado di trovare un modo per farlo funzionare come root. Questa non è una cosa negativa, tuttavia, poiché eseguire un'app GUI come root è in genere una pessima idea per la sicurezza, poiché ci sono molti modi per iniettare codice in modo surrettizio in un'app Cocoa e, se l'app viene eseguita come root, è possibile aprire in questo modo alcune vulnerabilità di sicurezza piuttosto serie.

Per modificare file come /etc/hosts , ti consiglio di trovare un altro modo:

  1. Utilizza un editor della riga di comando come emacs , pico o vi .

  2. Utilizza un editor di testo basato sulla GUI che ha la funzione di richiedere la password di amministratore quando necessario (credo che BBEdit possa farlo, ad esempio)

  3. Copia semplicemente il file /etc/hosts in un'altra posizione, modificalo lì, quindi usa sudo per copiare nuovamente il file modificato in /etc .

risposta data 12.09.2017 - 04:35
fonte
1

Non è davvero una risposta a quello che hai chiesto, ma in alternativa, hai provato Maschera antigas - editor di file Hosts gratuito.
Può modificare, memorizzare più versioni, & passare al volo.

    
risposta data 12.09.2017 - 08:33
fonte

Leggi altre domande sui tag