почему я не могу редактировать файл hosts?

Я пытаюсь отредактировать файл hosts, потому что это ssh <some host in hosts>не удается преобразовать в ip.

согласно пользовательскому интерфейсу Finder, он находится в:

введите описание изображения здесьоднако при попытке запустить cat hostsиз терминала я получаю сообщение об ошибке:

➜  /etc  cat hosts
cat: hosts: No such file or directory

Я попытался создать новый файл hosts, но затем вижу, что рядом с первым создается еще один.

введите описание изображения здесь

но когда я пытаюсь отредактировать второй, hostsмне нужно дублировать его в другое место назначения. Копирую в /etcи снова возникает первая проблема.

Я попытался изменить разрешения, чтобы все могли читать и писать. Но все же это не помогло.

Ответы (5)

В папке /etc не должно быть двух файлов с одинаковыми именами. Можете ли вы получить информацию об оригинале и проверить имя и расширение (и что расширение не скрыто, и что в конце имени нет пробелов)?

один былhosts.txt
Это может произойти, если вы создаете файл с нуля в TextEdit (или аналогичном приложении) и просто сохраняете его в папке /etc/ и не очень внимательно относитесь к расширению, а также к опции «скрыть расширение».

Обычно только привилегированный пользователь может изменять файл hosts.

Чтобы сделать это и исправить файл hosts или папку /etc (в зависимости от того, где вы применили права на чтение/запись), выполните следующие действия:

  1. Выбросьте только что созданный hostsфайл (но не старый!)
  2. Восстановите свои разрешения с помощью Disk Utility.введите описание изображения здесь
  3. Откройте терминал, введите sudo nano /etc/hostsи нажмите
  4. Введите свой пароль (он не будет показан!) и нажмите
    Стандартный файл hosts в Yosemite выглядит так:нано
  5. Отредактируйте hostsфайл.
    Формат каждой строки: IP-адрес, затем табуляция или один пробел и имя(я) хоста. Завершите файл пустой завершающей строкой.
  6. записать изменения на диск с ctrlOпомощью и выйти из nano с помощьюctrlx
  7. Введите exit, нажмите и выйдитеTerminal.app

В качестве альтернативы шагам 3-7 вы можете скачать и установить hosts.prefpane и указать там свои дополнительные хосты.

Просто измените то, что вы хотите изменить в дубликате, а затем замените старый hostsфайл.

Лучший способ изменить настройки хостов, который я нашел, это:

1) Сделать дубликат (который вы уже сделали)

2) Переместите дубликат в новое место, например на рабочий стол.

3) Сделайте еще один дубликат на рабочем столе и переименуйте его в «hosts ORIGINAL», чтобы вы знали, что это исходный файл hosts, на случай, если вам понадобится вернуться обратно.

4) Внесите изменения в «hosts» на рабочем столе и сохраните их.

5) Удалите или переименуйте файл hosts в /etc в hosts OLD.

6) Перетащите «hosts» с рабочего стола в /etc. (вас могут попросить ввести учетные данные администратора)

Я столкнулся с этой проблемой в Yosemite 10.10.3. Я не мог найти решение, пока не начал мыслить нестандартно.

Большинство людей не знают об этом, но по умолчанию права доступа к папке «/private/etc» и файлу «/private/etc/hosts» установлены на «только для чтения». Поэтому, если вы измените права доступа к файлу «hosts» только на «чтение и запись», вы все равно не сможете редактировать его в TextEdit. Файл «hosts» заблокирован из-за папки «/private/etc». Хитрость заключается в том, что вам нужно изменить права доступа как к папке «/private/etc», так и к файлу «/private/etc/hosts».

sudo chmod 777 /private/etc;chmod 777 /private/etc/hosts;open -t /private/etc/hosts

Мне все равно, баг это или нет!

Вам не нужны права на запись в содержащую папку, чтобы изменить содержимое файла. Это не то, как работает система разрешений unix.
@JensErat вам не нужны права на запись, чтобы редактировать файл на месте. Но некоторые графические редакторы пишут во временный файл в той же папке, и если это работает, они удаляют старый файл и переименовывают новый в старый. ЭТОТ процесс требует записи в родительскую папку.