Jak otworzyć plik jako root w TextEdit na Lionie?

13

Jak otworzyć plik jako root w TextEdit? Próbowałem tych poleceń jako root, ale TextEdit zawsze mówi, że jest zablokowany:

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

I oczywiście sudo !!nie ma znaczenia.

Znarkus
źródło

Odpowiedzi:

14

Możesz otworzyć instancję textedit jako root, wprowadzając pełną ścieżkę do rzeczywistego pliku wykonywalnego:

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

Po otwarciu instancji root możesz przejść do potrzebnego pliku lub zrobić to z wiersza poleceń:

sudo su - root -c "open -e /etc/apache2/httpd.conf"
Tyr
źródło
Dzięki, działało! sudo /Applications/Textedit.app/Contents/MacOS/TextEditpo prostu otwórz plik z TextEdit
Znarkus
Jeśli nie chcesz wpisywać tego przy każdym utworzeniu aliasu, przechodząc do katalogu domowego w terminalu pico .bash_profile, dodaj alias sudotext='sudo -b "/Applications/Textedit.app/Contents/MacOS/TextEdit"', zapisz plik i uruchom ponownie terminal. Teraz możesz po prostu wpisać, sudotextaby uruchomić TextEdit jako root.
webbiedave
Jak wskazały inne odpowiedzi, aby to zrobić w 1 linijce, jedyną realną opcją jest posiadanie zewnętrznego edytora, który ją obsługuje. Następnie wpisz open -t "/etc/hosts"na przykład. Z TextWrangler może po prostu wpisać edit /etc/hosts.
cregox
2
Co za okropne wrażenia użytkownika! Czy nie ma prostszego sposobu?
Marc
2
Cóż, na moim Yosemite 10.10.2 to sudo -b "/Applications/Textedit.app/Contents/MacOS/TextEdit"nie działa :(
Henrique de Sousa
8

BBEdit to bezpłatne narzędzie do robienia tego w 2019 roku, które zastępuje wszystkie funkcje TextErangler i można je pobrać ze sklepu App Store i strony internetowej programisty.


TextEdit nie jest tak naprawdę odpowiednim narzędziem do edycji plików konfiguracyjnych - zamiast tego użyj TextWrangler . Jest darmowy, ma wbudowaną możliwość edycji plików z dostępem roota z konta administratora, a także takie rzeczy, jak otwieranie niewidzialnych plików i katalogów, łatwe edytowanie plików przez SFTP itp.

Gordon Davisson
źródło
emacsma też ładny tryb conf z kolorami.
msanford
Wydaje się, że to nie działa w Mountain Lion. Występuje błąd podczas próby zapisania plików konfiguracji systemu w TextWrangler. Czy to się zmieniło?
Simon East
@ Simon: Wygląda na to, że masz wersję TextWrangler z App Store, a nie bezpośrednie pobieranie z barebones.com . Jeśli tak, usunięto kilka funkcji (w tym tę), aby zachować zgodność z zasadami bezpieczeństwa App Store; więc zrzuć go i zamiast tego pobierz wersję bezpośrednią!
Gordon Davisson,
Co jeśli jesteś na obcym komputerze Mac bez Internetu? Akceptowane rozwiązanie 2 linii hakerskich linii jest ogólnie lepsze. Ale dla praktycznego codziennego użytku, przez cały czas korzystam z usług stron trzecich! :-)
cregox
6

Oto sposób na uniknięcie uruchamiania TextEdit jako root:

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

Po edycji pliku konieczne będzie zamknięcie kopii TextEdit.

sudo -e, czasami znany jako sudoeditOS X, ale tworzy tymczasową kopię pliku z uprawnieniem do zapisu dla bieżącego użytkownika, wywołuje edytor w zwykły sposób uniksowy, a następnie kopiuje go z powrotem.

Opcje open: -Wczeka na zamknięcie TextEdit, więc sudowie, kiedy skopiować plik z powrotem. -nzapewnia, że ​​czeka on na osobnej instancji TextEdit, a nie takiej, którą już masz otwartą, której możesz nie chcieć zamknąć. Możesz również zastąpić -tzamiast -ejeśli masz ulubiony edytor tekstu inny niż TextEdit.

Jeśli masz już EDITORzmienną ustawioną do korzystania z edytora graficznego z własnym narzędziem wiersza poleceń (takim jak TextMate lub BBEdit), nie potrzebujesz żadnej z tych sztuczek i możesz po prostu użyć sudo -e <file>bezpośrednio.

Kevin Reid
źródło
2

Ponieważ użytkownik root jest wyłączony, jedynym sposobem na wymuszenie, aby dowolna aplikacja OS X miała uprawnienia roota, jest włączenie roota i zalogowanie się jako root.

Aplikacje mogą oczywiście używać interfejsu API, aby poprosić system o uwierzytelnienie i wyświetlić okno dialogowe, którego oczekujesz, gdy zostaniesz poproszony o administratora i hasło. TextEdit nie ma tej funkcji, więc musisz obejść uprawnienia do plików przed i po otwarciu i zapisaniu pożądanych plików.

Czy próbowałeś sudo open -a texteditotworzyć aplikację?

bmike
źródło
Czy masz sugestie dotyczące aplikacji, które mają tę funkcjonalność? Najlepiej za darmo :)
Znarkus
3
To nie jest całkiem dokładne. W Terminal.app uruchamiam się, sudo su -aby uruchomić powłokę jako root, a następnie mogę open "/Applications/Textedit.app/Contents/MacOS/TextEdit"pomyślnie uruchomić . Nie mam włączonego użytkownika root ani nie zalogowałem się jako użytkownik 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

Powinno działać

Gio
źródło
OK, więc nie można uruchomić TextEdit jako root? Naprawdę chciałbym uniknąć dodatkowego kłopotu ze zmienianiem uprawnień tam iz powrotem.
Znarkus,
1
W Lwie wszystko się zmieniło, myślę, że to piaskownica
Paul Eccles
Chodzi o to, że pliku, który próbujesz otworzyć, nie można zapisać do rootowania z powodu ich zgody. Byłoby to samo dla jednego z plików ofertowe (w rzeczywistości jest to samo, z wyjątkiem faktu, że TextEdit jest „inteligentny” na pliki użytkowników, więc to zmienia pozwolenie prosząc Cię).
Gio
@Gio Rzeczywiście, jest to spowodowane piaskownicą Lion: /etc/apache2/httpd.confma domyślne uprawnienia 0444. Przez cały ranek próbowałem edytować ten plik ( emacszdalnie), ale nigdy nie myślałem o sprawdzeniu uprawnień (nowego Lwa).
msanford
-5
sudo nano /etc/hosts 

pracuje dla Lion

Bektur
źródło
2
Pytanie dotyczy TextEdit, a nie nano.
gosmond