鸟哥私房菜 习题答案(服务篇)

PART I、网络基础篇

1  架站之前所需的技能分析

1. 请简述架设网站前,应该具备何种基本技能?

基本技能有:
1.   至少需要了解账号管理、文件属性与权限、程序与资源管理、硬盘挂载与软件包的安装,如RPM套件管理程序等,而viShell也是不可忽略的基本技能,更重要的是,日志管理及系统服务的原理(如stand alonesuper deamon 服务启动的方式差异等)需要理清,以方便未来架设网站时进行除错;
2.   在网络基础知识上,TCP/IP的概念及路由概念相当重要,此外,DNS的概念也很重要。
3.   在心态调整方面,系统管理员需要的道德意识及使命感要求较高。

2. 如果我有一块硬盘在A主机上安装了Linux之后,拿到另一台配备相同的B主机上进行开机,结果竟然无法顺利开机,你认为可能的原因是什么?

由于配备相同,所以排除硬件问题,不过,考虑到IDE数据线与分区代号及/etc/fstab的对应,所以应该是由IDE插槽放置错误所致(Linux系统下,每个IDE插槽对应的分区名称皆不相同)。此外,上次不正常关机也可能造成硬盘损害而无法开机成功!

3. 一般来说,在Linux系统上,用户默认的根目录在哪个目录下?另外,新增一个用户时,该用户默认的根目录内容来自哪个目录?

/etc/default/useradd文件里会规范用户的默认根目录及默认根目录的内容,一般来说,用户默认根目录为/home,至于根目录内的文件则复制来源在/etc/skel里。

4. 磁盘配额(quota)能否针对某个特定目录进行限制?Quota有什么较特殊的使用限制?

Quota目前仅能针对整个分区进行限额配置,如果该特定目录是一个分区,则可以进行quota设定,否则无法针对特定目录!此外,Quota除了特定目录及只能识别ext2ext3等磁盘格式外,也需要核心的支持。

5. Linux系统下,要寻找一个文件名为vbird.document的文件,可以使用什么指令?另外,如果要寻找在一天内更动过的文件,又该如何进行?

如果是执行文件,可以使用which command来搜寻,如果是文件,就必须使用locate vbird.documentwhereis vbird.documentfind / -name vbird.document。如果要查找一天内更动过的文件,可以使用find配合参数,如:「find / -ctime 1 」。

6. Linux系统中,常见的套件管理程序有RPMTarball,请分别说明这两个套件管理程序的优缺点。

         RPM在安装套件时,会将该套件的文件名称、套件功能与信息等记录在/var/lib/rpm目录内,由于有这些套件的基本信息,因此在系统内很容易进行RPM的升级、安装、移除等动作。不过,由于RPM文件之间的相依性较强,因此常会有版本不合或欠缺某样前驱套件的问题。
         至于Tarball则是源代码,用户可以自行配置套件的编译参数,以符合自己的Linux平台。此外,由于Tarball是源代码,因此需要在你的系统上进行编译,编译过程中需要gccmakekernel source等套件,还有你想安装的套件所需的前驱套件也需要先安装,这样才能进行Tarball的安装。注意,几乎每个Tarballtar程序解压后,在新增目录下均会生成READMEINSTALL文件,请务必先查阅后再进行编译工作。

7. 如果我下载了一个文件名为httpd-2.0.52.tar.gz的文件,一般来说,这个文件代表的意义为何?如何让这个文件能够在我的Linux系统上安装?

由于后缀名是.tar.gz.tgz的文件,所以可以认定该文件为一个Tarball文件。至于文件名的配置,httpd为套件名称,2.0.52则通常为该套件的版本名称!那么如何安装?由于该文件为httpd这个套件,且格式为Tarball,所以你必须:
1.   系统上务必具有tarmakegcc等相关编译包;
2.   使用tar解开httpd-2.0.52.tar.gz后,务必进入该目录内读取REAME/INSTALL文件,以了解是否还需要其他的相关套件;
3.   ./configure --help查阅是否有相关可以加入或取消的编译内容;
4.   使用make 读取Makefile来编译程序;
5.   使用make install来安装程序!

8. 我以源代码方式安装一个套件,但是在分析系统时,分析程序一直告诉我找不到cc指令,请问这是什么问题?为何需要cc?另外,我该如何解决这个问题,好让套件可以顺利安装在我的Linux上?

如前面几个题目所说,因为是源代码,所以还需要编译程序将该源代码编译为可以在Linux系统上运行的二进制文件,在Linux上默认的编译程序就是gcc编译器。如果你在安装Linux时,使用LinuxInstaller 默认选择的套件,那通常会没有安装gccmake等套件,此时,请拿出你的原版光盘,以mount指令挂载后,使用RPM 将一个一个相关的套件安装即可。

9. 我发现我的Linux系统怪怪的,似乎有什么不知名的程序在内存中运行,我该如何将这个不知名的程序捕捉出来,并且将它移除?

如果要捕捉程序(process),可以使用ps -aux或直接输入top来查询程序的IDPID),找到PID 号码后,再以kill -9 PID删除该程序即可。

10. 我总是无法编辑某个文件,你认为是什么问题造成的?怎么解决?

无法编辑某个文件,可以先使用file指令查询该文件的格式,例如想查看/etc/shadow的格式,可以输入file /etc/shadow,如果是文本文件,却还是无法编辑,那么最可能发生的就是权限问题。可以使用ls -l filename查看文件权限,再以chmodchown修订该文件的权限。此外,该文件也可能含有隐藏属性,可以使用lsattr filename查阅,再以chattr修订隐藏属性。

11. 什么是UIDGIDUID有哪些等级?

Linux系统下,用户与群组其实都是以ID(数字)格式来设定的,所以用户与群组其实都是UIDGIDUser IDGroup ID),Linux对于文件权限也是使用UID/GID来分辨。不过人类习惯使用文字来记忆,所以才会有/etc/passwd/etc/groupID转译成相应的UserGroup,这也可以解释为什么将从Internet上下载下来的Tarball解压之后,其文件拥有者与群组往往为数字形式,因为你的Linux系统上的/etc/passwd/etc/group没有相关的对应文字。UID的等级主要有两种,分别是超级管理员(root),其UID0;其他非0UID身份基本上是相同的!不过Linux通常会将小于500UID保留给系统使用。

12. 用户的根目录参数、UIDGID及其他相关参数,还有密码文件,放置在哪些文件里?

放置在/etc/passwd /etc/shadow中,当然还有 /etc/login.defs

13. 你认为一个称职的网管人员应该具备什么能力?

能力要求相当高,如(1)操作系统的基础知识(不论是Linux/Unix/MAC/MS);(2)网络基础知识;(3)个别Internet服务的运作知识;(4)身心保持在备战状态;(5)具有相当高的道德感、责任感与使命感。

14. 我要启动一个系统默认的服务,请问可以通过执行或修改哪些目录下的文件来启动?

         如果是stand alone服务,可以通过/etc/rc.d/init.d/*里的文件,如/etc/rc.d/init.d /syslog start
         如果是Super daemon服务,就必须先到/etc/xinetd.d/etc/inetd.conf修改相关文件或参数,再以/etc/rc.d/init.d/xinetd restart来启动。

15. 我要关掉cron服务,应该怎么关掉它?如果以正常方法无法关闭这个服务,可以使用什么方法来关闭?

因为cron是一个stand alone服务,所以可以使用/etc/rc.d/init.d/cron stop来关闭;如果还是无法正常关闭,可以使用ps -aux | grep cron提出该程序的PID,然后以kill -9 PID关闭。

16. 如果一开机就要执行某个程序,应该将该程序写入哪个文件?

可以直接在/etc/rc.d/rc[run-level].d里加入以S开头的文件,不过,更简单的做法是直接将该程序写入/etc/rc.d/rc.local,不过,请注意该程序必须具有可执行权限,且rc.local也必须是可执行的。

2章、简易网络基础架构

1. 请简述OSI网络七层协议每一层的功能;

OSI网络七层协议主要又分为两大部分,网络层与用户应用层。至于每一层的相关功能请参考本章表一所示。

2. ISP提供的网络服务中,它们提到传输速度为1.5M/382K,请问这个数据的单位为何?

由于电子信号的基本单位为bits,所以一般ISP提供的传输速度单位均为bits/second,并非我们常用的文件计数单位Bytes

3. 什么是MACMedia Access Control),MAC主要的功能是什么?

在网络媒体上,数据要传输时,必须知道下一个节点的地址才能顺利传送,这个节点的地址(如网卡的硬件地址)就是MAC。硬件地址是在网卡出厂时就已经焊死在上面(某些笔记本电脑的MAC则可以经由特殊软件修改),而软件地址则是我们常说的IP,这两个并不相同。MACIP互相的对应是以ARP Table进行转译。

4. 请解释什么是物理广播(Physical Broadcast),它与逻辑广播(Logical Broadcast)有什么不同?

物理广播主要与网络媒体有关,在同一个网络媒体上同一时间仅能有一台主机使用这个网络共享媒体,而要判断目前有没有其他主机在使用这个网络媒体时,就是利用Physical Broadcast
至于逻辑广播,就是在查询到底网域上有没有我们这台主机想要连接的相关协议或同一网域内的其他主机。它主要与MACARP及软件地址(IP)有关。

5. 什么是包碰撞?为什么会发生包碰撞?

当两台主机同时在一个网络媒体上进行数据传输时,两个数据包就会发生碰撞,这就是包碰撞。在网络媒体流量很高、网络媒体的联机长度过长时,都容易发生数据包碰撞。

6. ARP Table的作用为何?如何在我的Linux查看我的ARP表?

ARP Tables主要用于对应IPMAC,当主机将数据包送到下个节点时,必须知道下个节点的MAC,如果不知道MAC,就需要使用逻辑广播来查询IPMAC的对应。不过,当你的主机内部的ARP table已经记录了IP对应的MAC,那么该数据包则可以立即传送到下个节点,而不需要再次进行逻辑广播。要知道目前的ARP table内有多少记录,可以使用arp -a

7. 简略说明Netmask的作用与优点。

Netmask可以有效增加网络的效率,这是因为Netmask 可以定义一个网域的大小,那么用在广播的时间就可以大大降低。一般来说,我们如果要将一个大网域再细分为小网域,也需要借由Netmask进行subnet的切割。

8. 我有一组网域为192.168.0.0/28,请问这个网域的Network, Netmask, Broadcast各为多少?可以使用的IP数量与范围各是多少?

因为共有28位是不可动的,所以Netmask 地址的最后一个数字为11110000,也就是(128+64+32+16=240),所以:
Network192.168.0.0
Netmask
255.255.255.240
Broadcast
192.168.0.15
IP
:由192.168.0.1 ~ 192.168.0.14 14个可用IP

9. 承上题,如果网域是192.168.0.128/29呢?

因为有29位不可动,所以最后一个Netmask的地址为11111000,也就是(128+64+32+16+8=248),所以:
Network192.168.0.128
Netmask
255.255.255.248
Broadcast
192.168.0.135
IP
:由192.168.0.129 ~ 192.168.0.134 6个可用的IP

10. 我要将192.168.100.0/24这个C Class网域分为4个子网域,请问这4个子网域要如何表示?

既然要分为4个网域,也就是还需要借助Netmask的两个位(22次方为4啊),所以Netmask会变成255.255.255.192,每个子网域会有256/4=64IP,而必须扣除NetworkBroadcast,所以每个子网域会有62个可用IP!因此,4个子网域的表示方法为:
192.168.100.0/26, 192.168.100.64/26, 192.168.100.128/26,
192.168.100.192/26

11. 如何观察Linux主机上的路由信息(route table)?

可以通过输入route来直接查看路由信息,或输入route –n

12. TCP包上的SYNACK标志代表的意义为何?

         SYN代表该包为该系列联机的第一个包,即主动联机;
         ACK则代表该包为确认包,即回应包。

13. 什么是三次握手?在哪一种包格式上才会有三次握手?

使用TCP包才会有三次握手。TCP包的三次握手是一个确认包正确性的重要步骤,通过SYNSYN/ACKACK三个包确认无误后,才能够建立联机。至于UDP包,则没有三次握手。

3章、局域网架构简介

1. 幻想自己是一个私人公司的老板,员工有20人,如果我想让公司的员工都可以连上Internet,并且控管每个员工的对外联机,请问我的硬件联机应该怎么配置?另外,应该申请的线路频宽应该多大?而我的内部网域(IPNetmask……)又该如何设定?

因为只有20个员工,事实上,人员并不多,所以并不需要在内部加设router来隔开不同的网域。不过,由于想要管理员工的上网功能,因此最好以第三章图三的架构,以一台主机内含两块网卡隔开IntranetInternet 两个网段,便于管理;至于对外联机的频宽方面,如果Linux主机需要进行网络服务功能,那么最好能够有512/512频宽,因为可能会有Client端下载的问题,如果单纯地仅下载(公司没有额外的网络服务),可以考虑使用T1/384之类的频宽,比较省钱;而在内部网域设定上,如同本章节使用的网域192.168.0.0/24来设定即可,如果公司内部尚有移动装置(NoteBook),则可以在Linux上加装DHCP(参考第16章)服务器。

2. 承上题,假如我的私有网域内有较大的网络流量,那么我的网络媒体应该怎么选择?

如果私有网域内的流量较大,那么网络媒体需要选择Switch而不要使用Hub!另外,整体包括网线也需要使用能够负载10/100 Mbps的流量才好。

4章、连接Internet

1. 我要如何确定我在Linux系统上的网卡已经被Linux识别并驱动了?

网卡能不能被识别可以使用dmesg|grep eth来判断,有没有驱动则可以使用lsmod 看看模块有没有加载核心!最后,以ifconfig eth0 192.168.0.10测试看看!

2. 假设我的网络参数为IP 192.168.100.100Netmask 255.255.255.0 ,请问我要如何在Linux上设定这些网络参数(未提及的网络参数请自行定义)? 请使用手动与文件设定方法分别说明。

         手动设定为:ifconfig eth0 192.168.100.100 netmask 255.255.255.0 up
         文件设定为:vi /etc/sysconfig/network-scripts/ifcfg-eth0,内容为:
DEVICE=eth0

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.100.100

NETMASK=255.255.255.0

NETWORK=192.168.100.0

BROADCAST=192.168.100.255

要启动则使用ifup eth0即可!

3. 我要将我的Linux主机名称改名,步骤为何?(更改哪个文件?如何启用?)

Linux主机名称在/etc/sysconfig/network文件里通过“HOSTNAME=主机名称”来设定,先以vi修改,之后再使用/etc/rc.d/init.d/network restart或直接reboot启动主机名称!

4. /etc/resolv.conf/etc/hosts的功能为何?

以主机名称查找IP的方法,/etc/resolv.conf内填写DNS主机名称,至于/etc/hosts则直接填写主机名称对应的IP即可!

5. 我使用ADSL拨号连接Internet,请问拨号成功之后,我的Linux上会有几个网络接口(假设我只有一个网卡)?

因为拨号是使用PPP(点对点)协议,所以拨号成功后会多出一个ppp0接口,此外,系统原本即有eth0lo这两个接口,所以共有三个接口。

6. Linux上进行ADSL拨号应该使用什么软件?

请用rp-pppoe,官方网站:http://www.roaringpenguin.com/pppoe/

7. 一般来说,如果拨号成功,也取得了ppp0接口,但是无法对外联机成功,你认为是哪里出了问题?该如何解决?

因为拨号成功,表示物理对外联机没有问题,那么可能的问题应该发生在网关上!确认方法请使用route -n查阅路由信息,然后修订/etc/syscon- fig/network-scripts/ifcfg-eth0

5章、Linux常用网络指令介绍

1. 我要增加一个路由规则,以eth0连接192.168.100.0/24网域,应该如何输入指令?

手动方法为:route add -net 192.l68.100.0 netmask 255.255.255.0 dev eth0

2. 我的网络停顿很厉害,尤其是连接到tw.yahoo.com时,那么应该如何检查是哪个环节出了问题?

使用traceroute寻找到底是哪个环节出问题:traceroute tw.yahoo.com

3. 我发现我的Linux主机上有个联机很怪异,想将它断线,应该如何进行?

root身份进行netstat -anp |more,查出该联机的PID,然后以kill -9 PID踢掉该联机。

4. 你如何知道green.ev.ncku.edu.tw这台主机的IP

方法很多,可以利用host green.ev.ncku.edu.twdig green.ev.ncku.edu.twnslookup green.ev.ncku.edu.tw等方法找出!

5. 请找出你的机器上最适当的MTU应该是多少?

请利用ping -c 3 -M do -s MTU yourIP找出你的IPMTU数值。

6. 如何在终端机接口上进行WWW浏览?又该如何下载WWW上提供的文件?

要浏览可以使用lynx,要下载则使用wget软件。如果想在终端机上看到中文,还可以安装JCMME

7. 在终端机接口中,如何连接bbs.sayya.org这个BBS

利用telnet bbs.sayya.org 即可连接上,同样地,要看到中文,还是得安装JCMME
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章