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ć, sudotext
aby 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.
emacs
ma 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 sudoedit
OS 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
: -W
czeka na zamknięcie TextEdit, więc sudo
wie, kiedy skopiować plik z powrotem. -n
zapewnia, ż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ć -t
zamiast -e
jeśli masz ulubiony edytor tekstu inny niż TextEdit.
Jeśli masz już EDITOR
zmienną 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 textedit
otworzyć 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.conf
ma domyślne uprawnienia 0444
. Przez cały ranek próbowałem edytować ten plik ( emacs
zdalnie), ale nigdy nie myślałem o sprawdzeniu uprawnień (nowego Lwa).
sudo /Applications/Textedit.app/Contents/MacOS/TextEdit
po prostu otwórz plik z TextEdit