Пользовательский файл хоста

2

Я хотел бы добавить пользовательский файл хоста на моем Mac (El Capitan 10.11.5) в домашний каталог пользователей, и это нужно проверять в дополнение к /etc/hostsразрешению доменных имен.

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

Я нашел другой ответ здесь , но это не работает на моей машине. Этот ответ включает в себя установку HOSTALIASESпеременной среды в значение ~/.hosts, но никакое добавление к ~/.hostsфайлу не повлияло на мой веб-браузер, поэтому я хочу создать файл хоста для конкретного пользователя.

ПРИМЕЧАНИЕ. После прочтения нескольких справочных страниц по bash вы получите правильную переменную окружения на mac, которая нужна для второго ответа HOSTFILE. Однако это все равно ни на что не повлияло. Мысли об этом?

РЕДАКТИРОВАТЬ: Это для однопользовательской среды, как предложил MrWonderful. Тем не менее, я бы хотел, чтобы настройки хостов одного пользователя не затрагивались, а другого пользователя.

Мысли?

К. Шорс
источник
2
Мне все еще любопытно, какую пользу это может принести, что не может быть реализовано с помощью программных средств.
MrWonderful
1
HOSTALIASES=$HOME/hosts sudo -E dtruss ping foobarпоказывает единственный открытый файл /etc/hosts. HOSTFILE=$HOME/hostsимеет тот же результат. В hosts(5)состояниях человека странице только для /etc/hostsчтения. Состояния hostname(7)man-страницы HOSTALIASESиспользуются. Тьфу, больше сломанного программного обеспечения Apple.

Ответы:

-1

Если вы управляете однопользовательской средой, такой как общий MacBook, вы можете попросить каждого пользователя .bashrc скопировать файл базовых хостов , а затем добавить их пользовательский файл в конец. Например:

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
источник
1
Итак, как вы справляетесь с этим, когда два человека вошли в систему одновременно?
Аллан
1
@Allan - Какова твоя настоящая цель? Возможно, если бы вы привели более конкретный пример, это способствовало бы более глубокому пониманию проблемной области. Тем более, что разным пользователям для разных записей нужны разные имена или IP-адреса.
MrWonderful
1
Это близко к тому, что я был после. Я действительно хотел оставить основной файл hosts, чтобы настройки хостов для каждого пользователя были применимы только к ним, но, тем не менее, это полезно.
К. Шорс
1
Не моя цель ... Я просто не рассматриваю это как жизнеспособное решение, учитывая, что вам придется предоставить sudo доступ пользователям потенциально без пароля. Что будет запрашивать у них пароль каждый раз при редактировании файла хоста?
Аллан
1
@Allan - я до сих пор не могу догадаться, какой может быть желаемая функциональность, которая потребовала бы эту функцию.
MrWonderful