Ответы:
Вы можете открыть экземпляр 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"'
, сохраните файл, перезапустите Терминал. Теперь вы можете просто ввести sudotext
TextEdit от имени пользователя 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
иногда известный как sudoedit
OS 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