每用户主机文件


16

有没有一种方法可以/etc/hosts按用户(例如在文件中)定义主机别名(如中的)/home/user/.hosts

我的主要目标是在我的小型局域网中的计算机之间通过rsync轻松共享主机别名。由于没有可以始终可靠连接的计算机,因此无法选择DNS服务器(对吗?)。

谢谢。


2
哇哦 我正要发布同样的问题,但我知道你有。这对我来说很有意义,但是很遗憾,它在Linux上不存在。以我为例,我在Samsung Galaxy Tab设备上安装了带有Android OS的Linux监狱软件,由于我的Web开发,我经常需要编辑/ etc / hosts。在坐牢的Linux中,您无法编辑/ etc / hosts。因此,拥有〜/ .hosts绝对是很酷的事情!
ServerChecker 2010年

您到底找到了什么解决方案?
quamis 2011年

不幸的是没有。也许不可能,因为这是安全威胁。
mrucci 2011年

1
对于SSH,您可以使用别名作为部分解决方法。将alias ssh="ssh "您的.bashrc(请注意别名末尾的空白)与一起放入,alias myhost="me@real-name-of-my-host.com"然后您可以说出来ssh myhost,它将起作用。
诺亚·苏斯曼

一种更好的解决方法是~/.ssh/config在您添加行的位置添加一个条目:Host my-hostHostname 10.0.0.xxx<-机器的IP。有趣的是,它还允许您指定用户名,端口,要使用的密钥等
CiprianTomoiagă18年

Answers:


8

更好的解决方案是安装Avahi和libnss-mdns,然后使用HOSTNAME.local地址。

这些名称不是针对每个用户的,而是可以解决您声明的在LAN上为所有计算机使用通用名称的目标。


有没有一种方法可以在本地文件中(每个用户)而不是在/ etc / avahi / hosts中指定HOSTNAMES.local?
mrucci

我认为Teddy的意思是每台机器都有一个Avahi会发现的名称。机器到名称的映射是否真的应根据每个用户而有所不同?
pjc50

不可以,它不应该根据每个用户而有所不同。我只需要一种在ping hostnameAlias没有root特权的情况下共享主机别名的方法(以允许我做的方式)。Avahi几乎可以完成正确的工作,因为我可以使用机器$ HOSTNAME作为别名。出于好奇:此映射在哪里完成?
mrucci


2

Linux glibc实现无法做到这一点。

但是您可以使用nss库来扩展它。这很容易编写,因为您可以剥夺libc中nss_files目录中相关部分的内容。

http://ftp.gnu.org/gnu/glibc/glibc-2.5.tar.bz2

例如

但是,这将是一件很奇怪的非标准的事情。



0

正如此页面上的其他答案所描述的,有一些方法可以实现类似的功能,但是:

不,没有像/etc/hostsGNU / Linux中那样的“按用户”文件,也没有其他方法可以替代默认名称解析作为非特权用户。


-1

编写一个脚本可以确定哪些主机已启动,然后为以下rsync命令设置主机名似乎容易得多。像这样

#!/ usr / bin / sh

HOST =“ none”
TESTFILE = / tmp / testfile。$$
触摸$ TESTFILE
为我在玉hostHostb Hostc奥利维亚
做
    scp $ TESTFILE $ i:/ tmp
    如果[$?-eq 0]
    然后
        主机= $ i
    科幻
做完了
rm $ TESTFILE

如果[$ HOST!=“ none”]
然后
    echo $ HOST已启动
    rsync -av --rsh = ssh文件$ HOST:/ dest
其他
    回声“未找到主机”
    1号出口
科幻

这未经测试,并且有假设,因此您必须对其进行修改以适合。


谢谢您的回答,但我正在尝试解决另一个问题:如何在用户主文件夹中存储和共享主机名列表(hosta hostb hostc olivia),以便我可以编写rsync src olivia:/dst
mrucci
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.