LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 5105|回复: 10

[Linux]关于Linux下的主机名(讨论稿)

[复制链接]
发表于 2005-7-24 14:55:41 | 显示全部楼层 |阅读模式
一、假设原始状态:
1、Debian3.1环境,由于本贴是讨论主机名,不失一般性,其它系统也基本适用,有些系统我没用过,有不同的请指出。
2、“#cat /etc/hostname”显示“myhostname”。
3、“#cat /etc/hosts”显示“127.0.0.1       localhost.localdomain   localhost       myhostname”。
3、“#hostname”显示主机名为“myhostname”。

二、“#hostname myNEWhostname”命令更改主机名后:
1、用“#hostname”显示主机名已变为“myNEWhostname”。
2、此时“/etc/hostname”和“/etc/hosts”中的内容未变。Shell提示符中仍然是原来的主机名。
3、但用“#hostname”显示主机名已变为“myNEWhostname”。
问题1:请问这个更改主机名的操作结果是保存在哪里?缓存中吗?
4、现在注销一下,重新登录时将弹出对话框“无法查到myNEWhostname的互联网地址,这将妨碍GNOME正常操作。把myNEWhostname加到/etc/hosts文件中也许能解决这个问题”(注:如果不是在桌面注销后登录不会出现这个对话框,关于这个对话框暂时不关心原因,请继续往后看),“继续登录”进去后,终端提示符中已经变成了更改后的主机名“myNEWhostname”,用“#hostname”查看也显示是“myNEWhostname”,但“/etc/hostname”和“/etc/hosts”中的内容还是未变。
5、“#reboot”重新启动计算机后,所有的状态都将恢复原状,即终端提示符中和“#hostname”后的显示都已变回原来的“myhostname”了。
问题2:“#hostname 新主机名”命令是临时更改主机名吗?

三、在原始状态的基础上,只将“/etc/hostname”文件中的内容从“myhostname”改为“myNEWhostname”:
1、用“#hostname”显示的主机名和终端提示符中的主机名都不变,仍为“myhostname”。
2、现在注销然后重新登录,用“#hostname”显示主机名和终端提示符中的主机名也都不变。
3、“#reboot”重新启动计算机,在登录时又出现前面提到的对话框,不理它,“继续登录”进去,用“#hostname”显示的主机名和终端提示符中的主机名都已经变成了新主机名“myNEWhostname”。
问题3:为什么会出现这个对话框?
问题4:“/etc/hostname”中的主机名才是永久性决定的主机名吗?
问题5:直接修改“/etc/hostname”文件后,不重新启动计算机的情况下如何操作才能立即生效?
(注:本贴所涉及的操作尽量不要用图形界面的操作,因桌面上的操作各个发行版的差异性要大些)

四、在原始状态的基础上,只将“/etc/hosts”文件内容“127.0.0.1       localhost.localdomain   localhost       myhostname”中的“myhostname”改为“myNEWhostname”:
1、用“#hostname”显示的主机名和终端提示符中的主机名都不变,仍为“myhostname”。
2、现在注销然后重新登录(晕,又出现前面提到的对话框,如果你回答了前面的问题就知道什么原因了,不管了),用“#hostname”显示主机名和终端提示符中的主机名也都不变。
问题6:“#reboot”重新启动计算机所出现的结果跟第四-2步一样吗?
问题7:“/etc/hosts”文件内容“127.0.0.1       localhost.localdomain   localhost       myhostname”中的“myhostname”的含义是什么(先想想,想不出,哎,打开图形化的网络配置工具看看)?
问题8:将“/etc/hostname”和“/etc/hosts”中的“myhostname”都改为“myNEWhostname”后会出现什么样的结果呢?
问题9:“/etc/hostname”中的“myhostname”改为“myNEWhostname”后,不修改“/etc/hosts”中的“myhostname”而增加一个“myNEWhostname”可以吗?
问题10:跟主机名有关系但前面没有涉及到的请提出来。另外“/etc/host.conf”文件和主机名与域名的关系都没设计进去,你认为有必要也可讨论。

注:
1、发本贴的原意:通过这种技术性的操作步骤并设置问题,来诱发大家讨论其中涉及到的Linux系统设计与运行原理直至计算机学科方面的原理。不知用这种方法来讨论基础理论内容会不会没那么枯燥,也许举的这个例子太简单,引不出太多的理论,但我想游离在技术与理论的边缘的思路总该比直接把理论贴出来再来讨论理论要舒坦得多。说错了,别打我,你批评,我改正。
2、也许又有人会说,这种所谓的理论在基础建设版或其它版块里已经涉及到了。我的想法是把这些知识放在这里,一个知识点一个知识点的讨论,更系统一些,并尽可能的提升到理论上去。
3、回答问答时希望同时能看到理由,即相关的理论知识,如果直接回答问题,我倒,害我要改问题的提法。
4、帖子中设计过程如果有打错或设计步骤、思路有颠三倒四等,请指出,立即改正。
5、是不是感觉这个主题太基础了,若这种类型的设计大家认为可以的话,以后可以提些复杂点的。先增加点难度:能用Y文回贴更好,经常看翻译的东西总有知其然而不知其所以然的感觉,虽然自己不昨的,总希望从别人哪里学点。
发表于 2005-7-26 00:10:11 | 显示全部楼层
1. 缓存
2. 是,因为不写入配置文件
3. 主机名和/etc/hosts里面记录的不一致,查询DNS找不到该主机的IP,查询/etc/hosts也找不到
4. 应该是的,从hostname的man page得知
5. hostname 主机名,或者 hostname -F /etc/hostname
6. 应该是不同
7. 给DNS查询用的,因为DNS服务器上很有可能查不到本机名,所以放在这里
8. 如果没有hostname -F /etc/hostname的话,应该还会出现那个对话框
9. 应该可以
10. 不理解这个问题的含义……
回复 支持 反对

使用道具 举报

发表于 2005-7-26 09:10:17 | 显示全部楼层
设置主机名和解析主机名是两回事吧

设置了主机名之后,不一定需要解析成地址,正如你看到的,只有在登陆 GNOME 时需要解析为地址
解析地址的步骤是什么?这个是由 glibc 控制的。在 /etc/host.conf 里面定义着解析地址的顺序。顺序一般都是 hosts, bind, nis,也就是先察看本地的文件记录,然后是 DNS 解析,最后是到数据服务器去查,如果定义了NIS服务器的话。用 man 5 host.conf[3] 可以看到详细的解释。
你的系统肯定没有配置 NIS,你自己设置的临时主机名当然也不在 DNS 的管辖范围,所以 GNOME 会提示你把主机名和 IP 的对应写入 /etc/hosts
不知道 /etc/host.conf[1] 和 /etc/nsswitch.conf[2] 的 "hosts:" 指令是什么关系?

hostname[4] 只设置临时的主机名,重启之后当然没有了。启动过程中会使用这个命令来设置主机名,要从 /etc/hostname 里面读取配置,也可以从数据库获取。具体的过程看 man 文档。手册页都是英文的,虽然有中文的翻译,但是不一定会有人看。

bash 的提示符中 \h 对应的是主机名,但是只有在登陆的时候确定一次。所以,设置临时主机名之后,需要注销才能生效。


帮助文档的位置
[1] http://www.faqs.org/docs/securing/chap5sec39.html
[2] http://www.faqs.org/docs/securing/chap6sec71.html
[3] http://cmpp.linuxforum.net/cman-html/man5/host.conf.5.html
[4] http://cmpp.linuxforum.net/cman-html/man1/hostname.1.html
回复 支持 反对

使用道具 举报

发表于 2005-7-26 09:16:14 | 显示全部楼层
/etc/hosts[5] 当然允许写入多个主机和 IP 的对应关系了,看手册页 man 5 hosts
HISTORICAL NOTE

       Before the advent of DNS, the host table was the only way of  resolving
       hostnames on the fledgling Internet. Indeed, this file could be created
       from the official host data base maintained at the Network  Information
       Control Center (NIC), though local changes were often required to bring
       it up to date regarding unofficial aliases and/or unknown  hosts.   The
       NIC  no        longer maintains the hosts.txt files, though looking around at
       the time of writing (circa 2000), there are historical hosts.txt         files
       on the WWW. I just found three, from 92, 94, and 95.

SEE ALSO

       hostname(1)  resolver(3), resolver(5), hosts(5), hostname(7), named(8),
       Internet RFC 952



[5] http://unixhelp.ed.ac.uk/CGI/man-cgi?hosts+5
[5] http://cvs.sf.linuxforum.net/cgi ... up&cvsroot=cmpp  待翻译
回复 支持 反对

使用道具 举报

发表于 2005-7-27 01:07:22 | 显示全部楼层
似乎有些小题大作,虽然我连菜鸟也不是。觉得这个问题不应在这里讨论。
/etc/hostname与 /etc/hosts两个文件好像没有什么关系的。
一个是配主机名,一个DNS,没有什么关系吧
回复 支持 反对

使用道具 举报

发表于 2005-7-27 09:00:41 | 显示全部楼层
我想单说内容 可以移动到基础讨论版 可是楼主设计了一大堆步骤 也算是有动手研究的态度了吧

继续问:
/etc/host.conf[1] 和 /etc/nsswitch.conf[2] 的 "hosts:" 指令是什么关系?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-27 23:25:28 | 显示全部楼层
Post by Zer4tul

......
10. 不理解这个问题的含义……

是为了引出类似
Post by bbbush

继续问:
/etc/host.conf[1] 和 /etc/nsswitch.conf[2] 的 "hosts:" 指令是什么关系?

问题,以便更深入讨论。
-----------------------------------------------------
Post by bbbush
设置主机名和解析主机名是两回事吧

对呀,设计的目的就是要通过讨论,让大家清楚仅仅手工修改主机名文件,会带来解析主机名的问题。
-----------------------------------------------------
Post by zxb
似乎有些小题大作,虽然我连菜鸟也不是。觉得这个问题不应在这里讨论。
/etc/hostname与 /etc/hosts两个文件好像没有什么关系的。
一个是配主机名,一个DNS,没有什么关系吧

    1、我前面已经说明了这个,就hostname这个东西跟基础理论版有点不相符,这里仅是举个例子而已,我是想介绍这种讨论模式,大家在回答的时候,一是要将设计过程中涉及的概念引向原理级别的讨论,二是要针对讨论主题所设计出来的讨论稿本身进行讨论,讨论稿这样设计能否把主题所涉及概念的原理挖掘出来,有没有遗漏,应该怎么补充和修正才能让一个技术工人通过这种包含实践的思考升级为一个技术员,然后再升级为一个什么师甚至高级什么师。在基础建设版和其它发行版的任务是实现了技术工人(最多也是高级技术工人)的培训,我认为这个版首先应该培养一批技术员级的人(就是能把man、手册之类的东东搞通并能综合应用),在此基础上涌现一批“师”字辈的“学科基础理论”精英。注:扯远了,后面这几句多余,不要理会。继续看下面吧,哈。
    2、我只是想用一种新的讨论方式引入到枯燥的传统讨论方式中,我不想看到:“是、不是、可以、……”之类的直接问题回答,因为这里不是回答技术问题的地方,我想看到的是:“……,正如你看到的,只有在登陆 GNOME 时需要解析为地址,解析地址的步骤是什么?这个是由 glibc 控制的。……”、“你的系统肯定没有配置 NIS,你自己设置的临时主机名当然也不在 DNS 的管辖范围,所以……”、……等,这种才是讨论的目的。
    3、继续……
回复 支持 反对

使用道具 举报

发表于 2005-7-28 00:56:56 | 显示全部楼层
不同的发行版,这些文件可能有些不同。我在gentoo看到与网络配置相关的几个文件如下:

host.conf
# /etc/host.conf:
# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/files/2.3.4/host.conf,v 1.2 2004/11/24 05:31:58 vapier Exp$

# The  file /etc/host.conf contains configuration information specific to
# the resolver library.  It should contain one configuration keyword  per
# line,  followed by appropriate configuration information.  The keywords
# recognized are order, trim, mdns, multi, nospoof, spoof, and reorder.



# This keyword specifies how host lookups are to be performed. It
# should be followed by one or more lookup methods, separated by
# commas.  Valid methods are bind, hosts, and nis.
#
order hosts, bind


# Valid values are on and off. If set to on, the resolv+ library treats
# the .local top level domain as link-local domain and sends multicast
# DNS requests to the multicast address 224.0.0.251 port 5353 instead
# of normal DNS requests. If you already use the .local domain in your
# nameserver configuration you will have to switch this option off.
#
mdns off


# Valid  values are on and off.  If set to on, the resolv+ library
# will return all valid addresses for a host that appears  in  the
# /etc/hosts  file,  instead  of  only  the first.  This is off by
# default, as it may cause a substantial performance loss at sites
# with large hosts files.
#
multi off




/etc/hosts
#IP             domain names
127.0.0.1 bing bing Bing localhost.localdomain localhost
192.168.36.182 bing Bing localhost.localdomain


networks
# $Header: /var/cvsroot/gentoo-src/rc-scripts/etc/networks,v 1.4 2002/11/18 19:39:22 azarah Exp $

#
# networks      This file describes a number of netname-to-adress
#               mappings for the TCP/IP subsytem. It is mostly
#               used at boot time, when no name servers are running.

loopback        127.0.0.0

# End.



resolv.conf
nameserver 202.116.64.2
nameserver 202.116.64.3
domain Localdomain
回复 支持 反对

使用道具 举报

发表于 2005-8-6 23:30:03 | 显示全部楼层
主机名是在/etc/sysconfig/network文件里配置的
$cat /etc/sysconfig/network|grep HOSTMANE
$HOSTNAME=Yuri
回复 支持 反对

使用道具 举报

发表于 2006-1-20 23:48:53 | 显示全部楼层
用 hostname NewName

eg: hostname Fedora
但是重启后就会还原

最好还是修改 /etc/sysconfig/network 文件 把里面的HOSTNAME=newhostname

这样你的主机名字就被改好了 !
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表