是否可以配置用户特定的主机文件而不是通用的 /etc/hosts?
例如,如果用户“user1”尝试获取 IP 的名称:“127.0.0.1”,他将获得“dev.user1”,而如果用户“user2”尝试获取相同 IP 的名称,他将获得“dev.user2”。
答案1
不,您不能拥有每个用户一个 /etc/hosts 文件,或者类似 /home/user1/.hosts 等的任何文件。
您正在使用获取主机地址它是硬编码的,以遵循 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”。
答案2
您想解决什么问题?
您当然不能在 hosts 文件中拥有两个不同的条目,这些条目会根据您的用户身份以某种方式切换。
如果您告诉我们您正在尝试做什么,而不是询问我们您的具体实施情况,我们可能会提供更多帮助。
答案3
为什么不在 eth0:0、eth0:1 等处为您自己的服务器分配一些虚拟 IP?
假设将 192.168.2.10 分配给 dev.user1,将 192.168.2.11 分配给 dev.user2。当您通过不同的 IP 访问项目时,gethostbyaddr() 是否会相应地返回主机名?