Я хотел бы добавить пользовательский хост-файл на моем Mac (El Capitan 10.11.5) в домашний каталог пользователей и проверить это в дополнение к /etc/hosts
разрешению доменных имен.
Я нашел аналогичный ответ здесь . Этот ответ был категорическим «нет», потому что у этого человека не было привилегий суперпользователя. Это не относится ко мне, потому что у меня действительно есть привилегии суперпользователя.
Я нашел здесь еще один ответ , но, похоже, он не работает на моей машине. Этот ответ включает в себя установку HOSTALIASES
переменной среды на ~/.hosts
, но никакое добавление к ~/.hosts
файлу никогда не имело каких-либо последствий в моем веб-браузере, что является целью моего желания создать хост-файл для конкретного пользователя.
ПРИМЕЧАНИЕ. Прочитав немного справочных страниц bash, правильная переменная среды на Mac, которая нужна для второго ответа, — это HOSTFILE
. Впрочем, это все равно ни на что не повлияло. Мысли по этому поводу?
РЕДАКТИРОВАТЬ: это для однопользовательской среды, как предложил MrWonderful. Тем не менее, я хотел бы, чтобы настройки хостов одного пользователя не затрагивались, а другой пользователь.
Мысли?
Если вы управляете однопользовательской средой, такой как общий MacBook, вы потенциально можете сделать так, чтобы .bashrc каждого пользователя скопировал базовый файл hosts , а затем добавил его собственный файл в конец. Например:
sudo cp /etc/common_hosts /etc/hosts
sudo cat ~/my_hosts >> /etc/hosts
Это фактически даст каждому пользователю свои собственные дополнения к файлу hosts . Вы можете сделать так, чтобы для этих команд sudo не требовался пароль, используя команду sudo visudo и добавив их в разрешенные команды. Вот несколько примеров из нижней части моего файла sudoers :
# Samples
# %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users localhost=/sbin/shutdown -h now
В OS X файл /etc/hosts, по-видимому, читается динамически, поэтому нет необходимости перезапускать сетевые службы.
mbp-c17189:~ root# ping goog
ping: cannot resolve goog: Unknown host
mbp-c17189:~ root# ping google.com
PING google.com (172.217.4.238): 56 data bytes
64 bytes from 172.217.4.238: icmp_seq=0 ttl=49 time=4306.507 ms
^C
--- google.com ping statistics ---
2 packets transmitted, 1 packets received, 50.0% packet loss
round-trip min/avg/max/stddev = 4306.507/4306.507/4306.507/0.000 ms
mbp-c17189:~ root# echo 172.217.4.238 goog>>/etc/hosts
mbp-c17189:~ root# ping goog
PING goog (172.217.4.238): 56 data bytes
64 bytes from 172.217.4.238: icmp_seq=0 ttl=49 time=43.639 ms
^C
--- goog ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 43.639/43.914/44.189/0.275 ms
mbp-c17189:~ root#
MrWonderful
пользователь83961
HOSTALIASES=$HOME/hosts sudo -E dtruss ping foobar
показывает, что открыт только файл/etc/hosts
.HOSTFILE=$HOME/hosts
имеет тот же результат. Наhosts(5)
справочной странице указано только/etc/hosts
чтение. Наhostname(7)
справочной странице указано,HOSTALIASES
что используется. Ох, еще сломанное программное обеспечение Apple.JBis
JBis