Можно ли настроить файл hosts для конкретного пользователя вместо обычного / etc / hosts.
Например, если пользователь «user1» пытается получить имя для IP: «127.0.0.1», он получает «dev.user1», а если пользователь «user2» пытается получить имя для того же IP-адреса, он получает «dev. пользователь2 ".
Какую проблему ты пытаешься решить?
У вас, конечно, не может быть двух разных записей в файле hosts, которые каким-то образом переключаются в зависимости от того, какой вы пользователь.
Если вы сообщите нам, что вы пытаетесь сделать, вместо того, чтобы спрашивать нас о вашей конкретной реализации, мы, возможно, сможем больше вам помочь.
Нет, у вас не может быть файла / etc / hosts для каждого пользователя или чего-то вроде /home/user1/.hosts и т. Д.
Ты используешь gethostbyaddr который жестко запрограммирован в соответствии с инструкциями в nsswitch.conf, который сам по себе сообщает gethostbyaddr искать в / etc / hosts.
Возможно, вы сможете сделать что-то вроде добавления дополнительных петлевые IP-адреса в сети 127.0.0.0/8, например 127.0.0.2, 127.0.0.3, 127.1.2.3, а затем назначьте локальное имя хоста одному из этих локальных IP-адресов. Мы сделали это на одной работе, но я помню, что это очень сбивало наших инженеров с толку.
Кроме того, если я правильно помню, некоторые балансировщики нагрузки действительно делают это внутренне.
Вот пример / etc / hosts, чтобы проиллюстрировать мою точку зрения:
127.0.0.1 u1.localhost u1
127.0.0.2 u2.localhost u2
# And if you wanted QA servers on the same host, add them to 127.0.8.0/24
127.0.8.1 qa1.localhost qa1
Как ранее предложил @blacklotus, наиболее распространенный способ сделать это - обозначить часть вашей локальной сети как «ЛВС разработчика».
Почему бы вам не назначить несколько виртуальных IP-адресов вашему собственному серверу вместо eth0: 0, eth0: 1 и т. Д.?
Скажем, назначьте 192.168.2.10 для dev.user1 и 192.168.2.11 для dev.user2. Когда вы получаете доступ к проектам через разные IP-адреса, будет ли gethostbyaddr () соответственно возвращать имя хоста?