Come faccio ad aprire un file come root in TextEdit su Lion?


13

Come faccio ad aprire un file come root, in TextEdit? Ho provato questi comandi come root, ma TextEdit dice sempre che è bloccato:

open -e /etc/apache2/httpd.conf
open -e -F /etc/apache2/httpd.conf
open -e -F -W /etc/apache2/httpd.conf

E ovviamente sudo !!non fa differenza.

Risposte:


14

Puoi aprire un'istanza textedit come root inserendo il percorso completo dell'eseguibile effettivo:

sudo -b "/Applications/Textedit.app/Contents/MacOS/TextEdit"

Una volta aperta l'istanza di root, puoi cercare il file che ti serve o farlo dalla riga di comando:

sudo su - root -c "open -e /etc/apache2/httpd.conf"

Grazie, ha funzionato! sudo /Applications/Textedit.app/Contents/MacOS/TextEditquindi basta aprire il file da TextEdit
Znarkus il

Se non vuoi scriverlo ogni volta che puoi creare un alias andando nella tua home directory in Terminale, quindi pico .bash_profileaggiungi alias sudotext='sudo -b "/Applications/Textedit.app/Contents/MacOS/TextEdit"', salva il file, riavvia Terminale. Ora puoi semplicemente digitare sudotextper avviare TextEdit come root.
webbiedave

Come sottolineato da altre risposte, per farlo in 1 riga l'unica vera opzione è avere un editor di terze parti che lo supporti. Quindi digita open -t "/etc/hosts"ad esempio. Con TextWrangler puoi semplicemente digitare edit /etc/hosts.
Cregox,

2
Che esperienza utente orribile! Non c'è un modo più semplice?
Marc

2
Bene, sul mio Yosemite 10.10.2 non sudo -b "/Applications/Textedit.app/Contents/MacOS/TextEdit"funziona :(
Henrique de Sousa,

8

BBEdit è lo strumento gratuito per farlo nel 2019 e sostituisce tutte le funzionalità di TextErangler e puoi scaricarlo dall'App Store e dal sito web degli sviluppatori.


TextEdit non è davvero lo strumento giusto per la modifica dei file di configurazione: utilizzare invece TextWrangler . È gratuito, ha la funzionalità integrata per modificare i file con accesso root da un account amministratore, nonché cose come l'apertura di file e directory invisibili che modificano facilmente i file su SFTP, ecc.


emacsha anche una bella modalità conf con codice colore.
msanford,

Questo non sembra funzionare per me in Mountain Lion. Viene visualizzato un errore durante il tentativo di salvare i file di configurazione del sistema in TextWrangler. È cambiato?
Simon East,

@Simon: Sembra che tu abbia la versione di TextWrangler dall'App Store, piuttosto che il download diretto da barebones.com . In tal caso, sono state rimosse diverse funzionalità (inclusa questa) per conformarsi alle politiche di sicurezza dell'App Store; quindi scaricalo e ottieni invece la versione diretta!
Gordon Davisson,

E se sei su un Mac straniero senza internet? La soluzione accettata per le 2 linee terminali di hacking è ancora generalmente migliore. Ma per un uso quotidiano pratico, vado con terze parti fino in fondo! :-)
cregox,

6

Ecco un modo per evitare di eseguire TextEdit come root:

EDITOR='open -Wne' sudo -e /etc/apache2/httpd.conf

Dovrai chiudere la copia di TextEdit dopo aver modificato il file.

sudo -e, a volte noto come sudoeditma non su OS X, crea una copia temporanea del file con il permesso di scrittura per l'utente corrente, invoca un editor su di esso nel solito modo Unix e quindi lo copia di nuovo.

Le opzioni per open: -Wattendere la chiusura di TextEdit, quindi sudosa quando copiare nuovamente il file. -nassicura che sia in attesa su un'istanza separata di TextEdit, non su uno che hai già aperto e che potresti non voler chiudere. Puoi anche sostituire -tinvece che -ese hai un editor di testo preferito diverso da TextEdit.

Se hai già EDITORimpostato una variabile per utilizzare un editor grafico con il suo strumento da riga di comando in grado di attendere (come TextMate o BBEdit), non hai bisogno di nessuno di questi trucchi e puoi semplicemente utilizzarlo sudo -e <file>direttamente.


2

Poiché l'utente root è disabilitato, l'unico modo per forzare un'app OS X arbitraria ad avere i permessi di root è abilitare root e accedere come root.

Le app possono ovviamente usare l'API per richiedere l'autenticazione del sistema e aprire la finestra di dialogo che ti aspetti quando ti vengono richiesti un utente amministratore e una password. TextEdit non ha questa funzione, quindi è necessario aggirare le autorizzazioni dei file prima e dopo aver aperto e scritto i file desiderati.

Hai provato a utilizzare sudo open -a texteditper aprire l'app?


Hai suggerimenti su app che dispongono di tale funzionalità? Preferibilmente gratis :)
Znarkus il

3
Questo non è abbastanza preciso. In Terminal.app corro sudo su -per avviare una shell come root e quindi posso eseguire open "/Applications/Textedit.app/Contents/MacOS/TextEdit"correttamente. Non ho l'utente root abilitato né ho effettuato l'accesso come utente root.
EmmEff,

1
sudo chmod +w name_of_the_file
sudo open -a TextEdit name_of_the_file
sudo chmod -w name_of_the_file

Dovrebbe funzionare


Ok, quindi non è possibile avviare TextEdit come root? Vorrei davvero evitare la seccatura aggiuntiva di cambiare i permessi avanti e indietro.
Znarkus,

1
Le cose sono cambiate in Lion, immagino sia il sandboxing
Paul Eccles,

Il punto è che i file che stai tentando di aprire non sono scrivibili su root a causa della loro autorizzazione. Sarebbe lo stesso per uno dei file di vostro (in realtà è lo stesso, tranne per il fatto che TextEdit è "intelligente" per i file degli utenti, in modo che cambia il permesso di cui si chiede).
Gio

@Gio In effetti, è dovuto al sandboxing di Lion: /etc/apache2/httpd.confha autorizzazioni predefinite 0444. Ho provato tutta la mattina a modificare quel file (con emacsremoto) ma non ho mai pensato di controllare le autorizzazioni (nuovo Lion).
msanford,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.