Ответы:
Вы можете открыть экземпляр textedit как root, введя полный путь к фактическому исполняемому файлу:
sudo -b "/Applications/Textedit.app/Contents/MacOS/TextEdit"
Когда ваш корневой экземпляр открыт, вы можете перейти к нужному файлу или сделать это из командной строки:
sudo su - root -c "open -e /etc/apache2/httpd.conf"
pico .bash_profileдобавьте alias sudotext='sudo -b "/Applications/Textedit.app/Contents/MacOS/TextEdit"', сохраните файл, перезапустите Терминал. Теперь вы можете просто ввести sudotextTextEdit от имени пользователя root.
open -t "/etc/hosts"например. С TextWrangler вы можете просто напечатать edit /etc/hosts.
sudo -b "/Applications/Textedit.app/Contents/MacOS/TextEdit"не работает :(
BBEdit - это бесплатный инструмент для этого в 2019 году, который заменяет все функции TextErangler, и вы можете загрузить его из App Store и с сайта разработчика.
TextEdit не совсем подходящий инструмент для редактирования конфигурационных файлов - используйте вместо него TextWrangler . Он бесплатный, имеет встроенную возможность редактирования файлов с правами root из учетной записи администратора, а также такие вещи, как открытие невидимых файлов и каталогов, простое редактирование файлов через SFTP и т. Д.
emacsтакже имеет приятный режим conf с цветовой кодировкой.
Вот способ избежать запуска 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>напрямую.
Поскольку пользователь root отключен, единственный способ заставить произвольное приложение OS X иметь права root - включить root и войти в систему как root.
Приложения, конечно, могут использовать API, чтобы запросить у системы аутентификацию и вызвать диалоговое окно, которое вы ожидаете при запросе имени пользователя и пароля администратора. TextEdit не имеет этой функции, поэтому вам нужно работать с правами доступа к файлам до и после открытия и записи нужных файлов.
Вы пытались использовать, sudo open -a texteditчтобы открыть приложение?
sudo su -чтобы запустить оболочку от имени пользователя root, и затем я могу open "/Applications/Textedit.app/Contents/MacOS/TextEdit"успешно работать . У меня не включен пользователь root, и я не вошел в систему как пользователь root.
sudo chmod +w name_of_the_file
sudo open -a TextEdit name_of_the_file
sudo chmod -w name_of_the_file
Должно сработать
/etc/apache2/httpd.confимеет разрешения по умолчанию 0444. Я пытался все утро редактировать этот файл ( emacsудаленно), но никогда не думал проверять (новый Lion) разрешения.
sudo /Applications/Textedit.app/Contents/MacOS/TextEditзатем просто откройте файл из TextEdit