Как я могу иметь специфический для пользователя файл 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() возвращает имя хоста соответственно?