鸟哥的私房菜读书笔记.docx
《鸟哥的私房菜读书笔记.docx》由会员分享,可在线阅读,更多相关《鸟哥的私房菜读书笔记.docx(18页珍藏版)》请在冰点文库上搜索。
鸟哥的私房菜读书笔记
Linux安装硬盘规划
Linux其实就是一个kernel,新内核上开发的软件无法在旧的内核上运行,比如在内核为2.6上开发出来的各种软件就无法在2.4的内核上运行,而且,不同内核的函数库也不相同。
所以,选择linux版本时,需要知道该版本的kernel版本。
1.硬盘的分区与挂载
除了硬盘的代号需要特别留意之外,硬盘分区也要清楚。
需要学习fdisk这个重要的分区程序,完成分区后,接下来就要格式化硬盘,格式化需要了解mke2fs命令的用法。
格式完后,需要了解挂载点(一个目录)并进行挂载,挂载使用的命令为mount。
挂载前,想要使用fsk命令来检查一下该分区有没有问题。
但是注意:
使用fsck时,请务必先使用umount卸载要被检查的分区。
还有,如果要让某些分区在开机的时候就自动挂载,要记得将其写入/etc/fstab当中,或者是将命令完整的写到/etc/tc.d/rc.local当中。
2.软件包的选择与安装
图形界面很容易造成系统的资源损耗,因此服务器上面较少使用图形界面。
为了方便以后的升级与重新安装,在选择软件包时,请务必将下面几个软件包选择进来:
make,gcc,kernel-source,kernel-header及kernel—devel。
其中make和gcc是编译软件包必须用到的软件,kernel-devel是一些驱动程序在编译时会用到的函数库或系统数据,这些东西对于台式计算机并不很重要,因此在个大版本的软件包上面都没有默认安装,需要自己选择安装。
这些软件通常都会放在softwaredevelop或者utility项中,请仔细选择。
3.启动设置(Grub/Lilo)
在我们进入系统之前,主机会先读BIOS信息,然后会读取第一块硬盘的主引导扇区(MasterBootRecorder,简称MBR),这个操作是为了让我们的主机了解数据格式,以顺利地将系统的数据读取进来。
MBR上的程序,被称为开机管理程序,在linux中主要的开机管理程序有Grub和LILO两个,他们的运行方式不太相同。
区别:
LILO是直接将所有的信息都写入MBR,所以当您设置完配置文件/etc/lilo.conf后,还得将LILO重新安装到MBR中。
至于Grub则是使用类似指针(point)的功能,将启动信息导入配置文件/boot/grub/menu.lst中。
这两个管理程序各有优缺点,可依照个人喜好来选择安装。
如果想实现“多重开机”功能,您必须了解MBR与SuperBlock的异同点,这都是需要学习的。
安装一台好的linux主机,最重要的一点就在于硬盘的分区,硬盘分区的考虑会影响到主机以后的扩充性,实用性,以及安全性。
了解欲架设的网站服务原理
了解每种服务的工作原理,对您以后进行调试相当有用,在主机的规划上也会有一定程度的帮助。
例如:
在linux上很有名气的文件服务SAMBA,它的工作原理主要是NetBiOSoverTCP/IP,而如果您了解最原始的NetBIOS是无法跨网段的,亦即无法跨路由器的,那么就比较容易了解为何Windows的网络上的“网上邻居”显示的计算机数量只有局域网内部的计算机。
总之,理解服务(Service)的工作流程,将有助于服务器的架设与维护。
这还只是各个服务器的服务原理,如果是在linux上运行,您至少要了解什么事daemon(守护进程)。
服务的软件安装,漏洞修补,软件包升级
假设您已经将网络硬件配置搞定了,主机也规划好了,并且也已经可以连上Internet了,知道该服务器的服务原理,那么接下来当然就是:
“我的主机上面是否有我要架设的服务器软件包了?
”
一,使用RPM,locate,find,which等命令来寻找。
二,若没有安装,考虑“软件管理员”这个工具。
目前linux上的软件管理员大多使用RPM与Tarball这两个工具。
RPM与Tarball的优缺点:
使用RPM最大的优点是方便管理,因为所有的文件与信息都有记录,所以在搜索,升级,反安装上都相当容易。
不过,这个软件包的依赖问题也会常常导致新手无法立刻进入状态。
此外,RPM有版本方面的问题,不同的linux版本上的RPM还不能相互通用。
如果您对RPM的包依赖问题很反感,那么使用源代码来进行编译则是一个不错的选择。
在系统上能够执行的文件属于二进制文件,那么这些二进制文件是怎么来的呢?
以linux常见的二进制文件制作方法,即使用gcc进行编译的过程来说明。
在制作二进制文件之前,首先需要撰写程序代码,这些程序代码大多是以文本编辑器编辑而成的ASCII格式文件,这就是通称的源代码。
然后这些程序代码必须经过编译器(compiler)编译成为我们的系统认识的二进制可执行文件。
在编译的过程中,可能还会使用到很多的函数库(library)。
需注意的是,目前linux上常见的编译器有gcc,g77等,您的源代码需要针对这些编译器的语法进行编写。
一般来说,当发布软件包时,大多采用源代码的方式发布,但因源代码所占用的文件空间比较大,所以常常会压缩之后才放到网站上供人下载,这就是所谓的Tarball了,因此您需要了解tar,gzip,bzip,compress等命令的用法才能够解开Tarball文件。
此外,由于Tarball是源代码,因此,您还必须有编译器以及相关的make,与kernel相关的函数库,才能够成功地将这个软件编辑成为可以在您的系统上运行的二进制文件。
使用Tarball的安装方式,最大的优点是具有弹性,您可以将软件安装在任何您想安装的目录下,还可以自行加入一些额外的参数来设置该软件。
不过,缺点就是当平台不一样时,可能由于某些函数库无法找到,或者是用户的基本知识不足,无法成功编译Tarball。
另外,用Tarball安装时,某些特殊的软件很难进行反安装操作,造成升级与卸载上的困难。
为了随时修补漏洞,您应该熟悉如何进行软件包的升级。
一般来说,使用RPM安装的软件以RPM方式升级,使用Tarball安装的软件则需要先删除后再升级!
无论如何,软件的升级是系统管理员经常要进行的工作。
主机配置,启动,观察与调试
1.找出配置文件
主机配置的第一个步骤就是“需要找到主配置文件”,因为不论您使用的是RPM还是Tarball,由于都是同一个软件包,所以配置文件的文件名是不变的。
所以,熟悉locate,rpm,find和grep等命令就显得很重要了。
2.编辑配置文件
既然要配置,当然就要编辑,所以必须学会unixlike标准的文本编辑器(vi)。
Vi是学linux过程中相当重要的一课。
需要知道,软件的文件数据(documentation)放置在我们系统的/usr/share/doc里面。
3.启动服务
设置完服务的配置文件后,接下来就是启动服务器。
如果您在服务器启动之后进行配置文件的修改,也需要重新启动服务器。
要启动服务器,就需要了解什么是daemons,而daemons又有superdaemon与standalone两种模式,默认路径,standalone的服务在/etc/init.d/*这个目录中,里面的文件是以BASHshell脚本写成的,所以除了了解daemon之外,还需要熟悉shell脚本的相关语法。
另外,如果是superdaemon的话,必须知道启动服务器的设置文件放在/etc/xinetd.d里面,启动的话,则是重新启动/etc/init.d/xinetd这个superdaemon。
如果服务器软件是以Tarball安装的,那么启动的时候可能是直接执行二进制文件,这样,就没有shell脚本帮助您启动,关闭,重新读取设置信息。
如果这样的话,您就需要以进程(process)与信号(signal)的方法运行服务器。
对于这部分内容,您需要熟悉ps,top,kill以及signalnumber的意义,尤其是当您想要中断当前某个联机时,netstat配合kill的用法是很重要的。
4.观察启动的状态
虽然启动了服务器,但是启动后的服务器不一定能够正常运行。
如何观察它是否正常运行呢?
首先,您必须具有PID的概念,利用netstat观察PID与端口号的信息来判断服务器是否正常工作。
还有,任何系统信息都会记录到日志文件里面去,所以,启动完服务器后到该服务器的日志文件中查看一下日志信息,是应当养成的一个习惯。
5.服务器与客户端的权限问题
为了了解权限的概念,您必须至少具有UID,GID等linux系统上有关用户账户的概念,每个账号的特殊参数一般放在/etc/passwd与/etc/shadow文件中。
此外,每个文件或目录具有10个属性的特征,这些概念很重要。
如果要让用户管理系统的话,用户身份必须转换成为系统管理员(root),这样就需要教会用户了解su及sudo的用法。
为了防止系统被破坏,适时地减少SUID与SGID等特殊权限的二进制文件,则显得非常重要。
6.设置开机启动该服务
服务器设置好,启动正确,对于客户端的权限与服务也设置完毕,接下来就需要在开机时将服务器加载到内存中了。
如何进行这个操作呢?
RedHat/SuSE/Mandriva有chkconfig辅助工具,RedHat中用ntsysv做简单的设置。
如果是其他linux版本,就需要了解正常的开关机程序,这里面包含了RunLevel的观念,RunLevel的读取文件在/etc/inittab中;还有了解/etc/rc.d里的目录与/etc/rc.d/rc.local这个文件的用途。
一般来说,我们使用Tarball安装的软件想要在开机时就启动,都会利用/etc/rc.d/rc.local这个文件来实现。
综上所述,架设好一台主机需要知道:
(1)各个process与signal的概念。
(2)账号与群组的概念与相关性。
(3)文件与目录的权限,包括与账号相关的特性。
(4)软件管理器工具的学习。
(5)BASH的语法与shellscripts的语法,还有很重要的vi。
(6)开机的流程分析,以及记录日志文件的配置分析。
(7)类似quota以及链接文件的概念。
客户端设置,观察与调试
一般来说,目前的服务器大多只要针对服务器端设置好即可,客户端我们不需要做太多管理。
不过,某些特殊的软件包,例如SSH,Mail,SAMBA,NAT等,就必须同时配置客户端的权限。
安全性设置
1.严格规范用户的密码设置规则
(1)修改/etc/login.defs文件里面的规则,让用户需要每半年更改一次密码,且密码长度需要长于8个字符。
(2)利用/etc/secutrity/limits.conf来规范每个用户的相关权限,让您的linux可以较为安全一点。
(3)利用pam模块来额外地进行密码的验证工作。
2.利用Superdaemon与TcpWrappers管理服务权限
如果使用xinetd这个superdaemon,或者是直接使用tcpwrappers
的函数库,那么您将可以直接使用/etc/hosts.allow以及/etc/hosts.deny来管理是否能够登录系统的某个daemon的权限!
在host.allow(deny)里面,能够限制的有IP,网段,网域等的配置,如此一来,可以让您的daemon提供有限的信任网段,这样就会更安全一些。
3.利用netfilter防火墙
除了/etc/hosts.allow(deny)之外,利用防火墙机制iptables来为主机配置单机防火墙式很重要的。
4.持续进行软件包修补
服务日志,日志文件与备份管理
小结:
两个学习网站:
http:
//www.study-area.prg/
http:
//linux.vbird.org/
第二章网络基本概念
在mac的传送中,它仅在局域网内生效,如果跨过不同的网段,那么来源与目的地址就会跟着改变了。
因为不同网卡之间的传输,卡号不一样了。
由于网卡卡号是跟着网卡走的,并不会因为重装操作系统而改变,所以防火墙软件大多也能够针对网卡来进行阻止的工作。
不过阻止网卡仅能在局域网络内进行而已,因为mac不能跨router。
常见的通信协议
TCP协议
ip除了表头之外的Data内容其实就是TCP数据包的表头内容:
而MAC的Data内容就是一个完整的数据包数据。
(1.)通信端口与Socket
我们的主机上有65536(2的16次方个端口)。
在linux环境下,各网络服务与端口号的对应默认项是写在/etc/services文件内。
由于client都是主动向Server端要数据,所以client端就随机取一个大于1024且没有在用的端口号来进行连接了。
常见的端口与网络服务的对应
连接端口
服务名称与内容
20
FTP—data:
文件传输协议所使用的主动数据传输端口
21
FTP:
文件传输协议的命令通道
22
SSH:
较为安全的远程登录服务器
23
Telnet:
早期的远程登录服务器软件
25
SMTP:
简单邮件传递协议,用在作为MailServer的端口
53
DNS:
用在作为名称解析的领域的名称服务器
80
www:
这个很重要,是全球信息网服务器
110
Pop3:
邮件收信协议,办公室用的收信软件都是通过它
443
https:
有安全加密机制的www服务器
需要注意的是:
小于1023的端口要启动时,启动者的身份需要时Root才行。
(2)数据包的传送
用户端主机端
主动发送连接要求接受与回应B
ASYN
SYN/ACK
CD
UDP协议
Udp的全名是:
userdataprotocol(用户数据报协议),udp数据包由于不需要确认对方是否正确地收到数据,故表头数据较少,也因为如此,UDP就可以在Data处填入更多的数据了。
同时UDP比较适合需要实时反应的一些数据流。
ICMP协议
ICMP的全称是InternetControlMessageProtocol,即因特网信息控制协议。
基本上,Icmp是一个错误侦测与回报的机制,最大的功能就是可以确保我们网络的连接状态与连接的正确性。
数据包过滤的防火墙概念
数据包的传送其实就是数据包的发出与接收的操作了。
Linux系统上是怎么挡掉数据包的呢?
既然数据包的表头上已经有这么多的重要信息,那么我们就利用一些防火墙机制与软件来进行数据包表头的分析,并且设置分析的规则,当发现某些特定的IP,特定的端口或者是特定的数据包信息(SYN/ACK等),就将该数据包丢弃,这就是最基本的防火墙原理了。
连上Internet前的准备事项
连上Internet的必要网络参数
IP,Netmask,Network.Broddcast.Gateway,DNS
如果您是使用ADSL拨号连接上网的话,上面这些数据都是由ISP直接给您的,只要使用拨号连接程序连接到ISP的工作之后,这些数据就自动地在您的主机上面设置完成了。
重点回顾:
只要能够连上Internet的主机,都有危险,不要以为小网站就不会被Cracker入侵。
虽然目前的网络媒介多以以太网为标准,但网络媒介不是只有以太网。
Internet主要是由InternetNetworkInformationCenter(INTERNIC)维护,但其仅维护一些技术文件。
以太网的标准相当多,速度定义亦不相同,购买时需要特别留意其速度标准。
第三章局域网架构简介与Linux版本的选择
局域网的联机
局域网的布线规划
网络设备与连线选购建议
1.网卡
新主机内置有吉兆速度的网卡,家庭使用10/100Mbps的网卡足够了。
如果作为Linux服务器使用,那么网卡需要购买好一点的。
如果是一般家用或者学习练习之用,可以买螃蟹卡(芯片是RealTek8139)。
因为linux本身就支持RealTek8139的芯片,不需要额外的驱动程序。
2.交换机/集线器
集线器是共享设备,交换机是具有独立频宽的非共享设备。
购买集线器/交换机时,应注意该硬件是否具有N-Way(自动协调速度机制)以及AutoMDI/MDI-x(自动跳线机制)。
3.网线
4.无线网络相关设备
无线网络的最大问题在于“无线的安全性”。
购买无线网络基地台时,注意它是否限制MAC。
5.其他配件
主机硬件的选
1.省不省电有所谓
2.虚拟机技术
现在的主机采用双核技术,也就是说在一台主机上面的一个CPU包含两个实际的运算单元。
双核就是表示主机上面有两个CPU。
所谓的虚拟机,其实就是在一台实体主机里面,安装多个操作系统,而且这些操作系统同时存在,且不互相干扰的。
在linux上使用的虚拟机技术很多,不过目前比较受关注的当属Xen这个工具。
Xen网站:
第四章连上Internet
Linux连上Internet前的注意事项
整个主机最重要的设置就是“先要驱动网卡”。
Linux的网卡
万一网卡芯片组开发商不愿意开源(opensource)硬件的驱动程序,或者网卡太新了,使得Linux内核来不及支持时,可以通过以下两种方式让内核支持网卡:
1.重新编译内核2.编译网卡的内核模块
判断网卡是否被识别
查询网卡的相关模块
编译网卡驱动程序
1.解压缩与编译
上面这个步骤很重要。
因为驱动程序的模块都会需要找到内核的包含文件与相关函数库,linuxkernel2.6以后的版本,默认都会将内核源代码放在/usr/src/kernels/(version)目录内,但一般程序却是假设内核源代码在/usr/src/linux,因此将源代码与/usr/src/linux连接
cdDriverInstall
./install.sh
2.模块的测试与处理
3.设置开机自动启动网卡模块
Linux的网卡其实仅是一个代号,并不是类似硬盘的设备文件,所以,需要指定这个代号与模块对应才行,CenOS(RedHat系统)对应是使用/etc/modprobe.conf,至于旧版的2.4内核中,则使用的是/etc/modules.conf,注意一下您的内核版本。
修改或增加下面一行
4.尝试设置IP
设置前
设置后
然后去ping一下网段内的其他计算机,ping通代表没问题了。
Linux网络相关设置文件
1.与网络相关的文件
(1)/etc/sysconfig/network
这个文件的主要功能在于设置主机名称(Hostname)及能否启动Network.在变更这个文件内的主机名称时,请务必重新开机。
因为这样才会让系统上所有程序都使用最新设置的主机名称。
(2)/etc/sysconfig/network-scripts/ifcfg-eth0
这个文件的内容即是设置网卡参数的文件,里面可以设置Network,ip,Netmask,Broadcast,Gateway,开机时的IP取得方式(DHCP,Static),是否在开机的时候启动等。
Ifcfg-eth0指的是第一块网卡,而第二块网卡为ifcfg-eth1,以此类推。
(3)/etc/modprobe.conf
如果硬件要能操作,当然要内核支持才行。
同时,也可以利用外挂的内核模块(可以将它想象成是驱动程序)来驱动硬件,而开机时用来设置加载内核模块的文件就是modprobe.conf。
一般来说,目前的distributions通常是使用模块的方式来编译网卡驱动程序,所以,当您安装完毕后,网卡与对应模块已经写到这个文件中了。
(4)/etc/resolv.conf
DNS功能就是进行主机名称与IP的对应。
而resolv.conf就是设置DNSIP(名称解析服务器)的文件。
(5)/etc/hosts
这个文件可以记录计算机的IP对应主机的名称或者主机的别名。
在局域网内有些服务需要反查Client的身份,此时就会动用到主机名称对应IP的数据。
但是因为局域网内使用私有保留IP,当然无法进行Hostname对应IP的操作,这个时候该服务就会等待30—60秒。
如果可以避过这个反查,或者是直接告诉主机HostName与IP的对应,那么就可以节省这个反查的时间了。
(6)/etc/services
这个文件是记录架构在TCP/IP上的所有协议,包括HTTP,FTP,SSH,Telnet等服务所定义的端口数,都是在这个文件中规定的。
如果你想要自定义一个新的协议与端口的对应,就需要更改这个文件了。
(7)/etc/protocols
这个文件用于定义IP数据包协议的相关数据,包括ICMP,TCP,UDP方面的数据包协议的定义。
2.与网络相关的启动指令
(1)/etc/init.d/networkrestart
这个script很重要因为可以一口气重新启动整个网络的参数。
它会主动去读取所有的网络设置文件,所以可以很快的恢复系统设置的参数值。
(2)ifupeth0(ifdowneth0)
启动或关闭某个网络接口,可以通过这个简单的script来处理。
这两个script会主动到/etc/sysconfig/network-scripts/目录下,读取适当的配置文件。
固定IP上网方式
1.修改主机名称:
/etc/sysconfig/network
我用的是ubuton和书上的有差异。
2.设置网络参数:
/etc/sysconfig/network-scripts/ifcfg-eth0
这部分书上多用redhat的讲的,我用的是ubuton,命令及文件有差异,实验的时候找不到相关配置文件,先放下,回头在看。
3.启动关闭网卡:
ifup/ifdown
我的eth0网卡无法识别,尝试着写进配置文件,试试
输入以下信息
Eth0就可以识别了,重新启动服务/etc/init.d/networkingrestart
4.设置DNS的IP:
/etc/resolv.conf
ADSL拨号连接上网
需要安装一个软件书上用的是rp-ppoe
拨号成功后,会有三个接口内部循环测试用的lo网卡eth0接口拨号连接后产生的通过ISP对外连接的ppp0接口。
这三个接口完全独立,互不干扰。
无线网络——一笔记本电脑为例
无线网络所需要的硬件:
无线访问点(WirelessAccessPoint,简称AP)。
另一个设备是主机上的无线网卡。
网络安全方面
在AP上使用网卡卡号(MAC)来作为是否可以存取AP的限制。
设置您的AP联机加密机制与密钥。
重点回顾:
Linux内的网卡代号为一个代号,并非设备文件。
欲对应设备代号,可以在/etc/modprobe.conf内制作好网卡代号与驱动模块的对应。
内部网段的私有IP的主机与主机名称的对应,最好还是写入/etc/hosts中,可以克服很多软件的IP反查所花费的等待时间。
在ifcfg-eth0中,可以指定MTU以设置网卡的最大传输单元,也可以利用HWADDR指定出所需要设置的网卡。
在GATEWAY参数的设置上,务必检查妥当,仅设置一个GATEWAY即可。
第五章Linux常用的网络命令
Ifconfig:
查询设置网卡与IP网段等相关参数
Ifup,ifdown:
这两个文件时Script,通过更简单的方式来启动网络接口。
Route:
查询,设置路由表(Routetable)。
Ip:
复合式的命令,可以直接修改上述命令提到的功能。
路由修改rout