Как открыть файл с правами root в TextEdit на Lion?

13

Как открыть файл с правами root в TextEdit? Я пробовал эти команды как root, но TextEdit всегда говорит, что он заблокирован:

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

И, конечно, sudo !!не имеет значения.

Znarkus
источник

Ответы:

14

Вы можете открыть экземпляр textedit как root, введя полный путь к фактическому исполняемому файлу:

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

Когда ваш корневой экземпляр открыт, вы можете перейти к нужному файлу или сделать это из командной строки:

sudo su - root -c "open -e /etc/apache2/httpd.conf"
Tyr
источник
Спасибо, это сработало! sudo /Applications/Textedit.app/Contents/MacOS/TextEditзатем просто откройте файл из TextEdit
Znarkus
Если вы не хотите вводить это каждый раз, когда вы можете создать псевдоним, перейдя в свой домашний каталог в Терминале, затем pico .bash_profileдобавьте alias sudotext='sudo -b "/Applications/Textedit.app/Contents/MacOS/TextEdit"', сохраните файл, перезапустите Терминал. Теперь вы можете просто ввести sudotextTextEdit от имени пользователя root.
webbiedave
Как указывалось в других ответах, чтобы сделать это в 1 строке, единственным реальным вариантом является наличие стороннего редактора, который его поддерживает. Тогда просто введите, open -t "/etc/hosts"например. С TextWrangler вы можете просто напечатать edit /etc/hosts.
cregox
2
Какой ужасный пользовательский опыт! Есть ли более простой способ?
Марк
2
Ну, на моем Yosemite 10.10.2 sudo -b "/Applications/Textedit.app/Contents/MacOS/TextEdit"не работает :(
Энрике де Соуза
8

BBEdit - это бесплатный инструмент для этого в 2019 году, который заменяет все функции TextErangler, и вы можете загрузить его из App Store и с сайта разработчика.


TextEdit не совсем подходящий инструмент для редактирования конфигурационных файлов - используйте вместо него TextWrangler . Он бесплатный, имеет встроенную возможность редактирования файлов с правами root из учетной записи администратора, а также такие вещи, как открытие невидимых файлов и каталогов, простое редактирование файлов через SFTP и т. Д.

Гордон Дэвиссон
источник
emacsтакже имеет приятный режим conf с цветовой кодировкой.
msanford
Кажется, это не работает для меня в Mountain Lion. Я получаю сообщение об ошибке при попытке сохранить файлы конфигурации системы в TextWrangler. Это изменилось?
Саймон Ист
@Simon: Похоже, у вас есть версия TextWrangler из App Store, а не прямая загрузка с barebones.com . Если так, у него было удалено несколько функций (включая эту), чтобы соответствовать политикам безопасности App Store; так что бросьте его и получите прямую версию!
Гордон Дэвиссон
Что делать, если вы находитесь на иностранном Mac без интернета? Принятое решение для 2-х линий терминалов по-прежнему в целом лучше. Но для практического повседневного использования, я иду с третьими лицами всю дорогу! :-)
cregox
6

Вот способ избежать запуска TextEdit от имени пользователя root:

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

Вам нужно будет закрыть копию TextEdit после редактирования файла.

sudo -eиногда известный как sudoeditOS X, но делает временную копию файла с разрешением на запись для текущего пользователя, вызывает редактор обычным способом Unix и затем копирует его обратно.

Параметр to open: -Wожидает выхода TextEdit, поэтому sudoзнает, когда скопировать файл обратно. -nгарантирует, что он ожидает отдельный экземпляр TextEdit, а не тот, который у вас уже открыт, из которого вы, возможно, не захотите выходить. Вы также можете заменить -tвместо, -eесли у вас есть любимый текстовый редактор, кроме TextEdit.

Если у вас уже есть EDITORпеременная, настроенная на использование графического редактора с собственным инструментом командной строки с поддержкой ожидания (например, TextMate или BBEdit), то вам не нужны эти приемы, и вы можете просто использовать их sudo -e <file>напрямую.

Кевин Рид
источник
2

Поскольку пользователь root отключен, единственный способ заставить произвольное приложение OS X иметь права root - включить root и войти в систему как root.

Приложения, конечно, могут использовать API, чтобы запросить у системы аутентификацию и вызвать диалоговое окно, которое вы ожидаете при запросе имени пользователя и пароля администратора. TextEdit не имеет этой функции, поэтому вам нужно работать с правами доступа к файлам до и после открытия и записи нужных файлов.

Вы пытались использовать, sudo open -a texteditчтобы открыть приложение?

bmike
источник
У вас есть предложения по приложениям, которые имеют такую ​​функциональность? Желательно бесплатно :)
Знакурс
3
Это не совсем точно. В Terminal.app я запускаю, sudo su -чтобы запустить оболочку от имени пользователя root, и затем я могу open "/Applications/Textedit.app/Contents/MacOS/TextEdit"успешно работать . У меня не включен пользователь root, и я не вошел в систему как пользователь 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

Должно сработать

Gio
источник
Хорошо, поэтому невозможно запустить TextEdit от имени пользователя root? Я бы очень хотел избежать лишних хлопот, связанных с изменением прав доступа.
Знаркус
1
Ситуация изменилась во Льве, я думаю, что это песочница
Пол Эклс
Дело в том, что файл, который вы пытаетесь открыть, недоступен для записи в root из-за их разрешения. Это будет то же самое для одного из ваших файлов (на самом деле это то же самое, за исключением того факта, что TextEdit является «интеллектуальным» для файлов пользователей, поэтому он изменяет разрешение, спрашивая вас).
Gio
@Gio Действительно, это из-за песочницы Льва: /etc/apache2/httpd.confимеет разрешения по умолчанию 0444. Я пытался все утро редактировать этот файл ( emacsудаленно), но никогда не думал проверять (новый Lion) разрешения.
msanford
-5
sudo nano /etc/hosts 

работает для льва

Бектур
источник
2
Вопрос о TextEdit, а не о нано.
Госмонд