Odpowiedzi:
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"
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.
open -t "/etc/hosts"na przykład. Z TextWrangler może po prostu wpisać edit /etc/hosts.
sudo -b "/Applications/Textedit.app/Contents/MacOS/TextEdit"nie działa :(
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.
emacsma też ładny tryb conf z kolorami.
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.
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ę?
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.
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ć
/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).
sudo /Applications/Textedit.app/Contents/MacOS/TextEditpo prostu otwórz plik z TextEdit