Как я могу иметь специфический для пользователя файл hosts

Можно ли настроить пользовательский файл hosts вместо общего /etc/hosts.

Например, если пользователь "user1" пытается получить имя для IP: "127.0.0.1", он получает "dev.user1", а если пользователь "user2" пытается получить имя для того же IP, он получает "dev.user2".

3 ответа

Решение

Нет, у вас не может быть файла / 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 предлагал ранее, более распространенный способ сделать это - обозначить часть вашей локальной сети как "LAN разработчика".

Какую проблему ты пытаешься решить?

Вы, конечно, не можете иметь две разные записи в файле hosts, которые каким-то образом переключаются в зависимости от того, каким пользователем вы являетесь.

Если вы расскажете нам, что вы пытаетесь сделать, а не спросите нас о вашей конкретной реализации, мы сможем помочь вам больше.

Почему бы вам не назначить некоторые виртуальные ips вашему собственному серверу вместо eth0:0, eth0:1 и т. Д.?

Скажем, назначьте 192.168.2.10 для dev.user1 и 192.168.2.11 для dev.user2. Когда вы получаете доступ к проектам через разные ips, gethostbyaddr() возвращает имя хоста соответственно?

Другие вопросы по тегам