第1章 Linux安装及基本命令
1、Linux的起源与发展
Linux内核项目是由芬兰赫尔辛基大学的Linus Torvalds创建的
1991年10月,Linux第一个公开版0.02版发布
1994年3月,Linux 1.0版发布
Linus的标志是可爱的企鹅,取自芬兰的吉祥物
2、开源软件的定义及许可协议
GPL(GNU General Public License)
GPL许可协议的主要目标是保证软件对所有的用户都是自由的
LGPL(Lesser General Public License)
LGPL相对于GPL的条款更加宽松,为使用Linux平台开发商业软件提供了更多的空间
OSD(The Open Source Definition)
开放源代码软件的定义文本可以从官方网站查阅
3、Linux在企业中的应用
Linux作为Internet网络服务器的应用
提供Web、DNS、FTP和E-mail服务
Linux作为中小企业内部服务器的应用
提供网络代理、网络防火墙、DHCP和文件共享服务
Linux作为桌面环境的应用
可选择使用KDE、GNOME等多种桌面环境
Linux作为软件开发环境的应用
支持C、C++、PERL、PHP、JAVA和Python语言的开发
4、Linux内核版本
内核版本是由Linux内核社区统一进行发布的
XX.YY.ZZ
XX:表示主版本号;YY:表示次版本号;ZZ表示末版本号
2.5.4 :5是奇数,表示开发版本
2.4.23:4是偶数,表示稳定版本
阶段总结
开放源代码软件通常采用GPL或LGPL许可协议进行发布
Linux操作系统是开源软件的成功代表
Linux内核采用开发版本和稳定版本两个系列进行版本发布
Linux存在众多的发行版本,可以满足不同类型的用户需求
Red Hat Linux系统发行版是Linux的事实标准,可以很好的满足企业应用的需要
6、硬盘分区的设备文件
硬盘分区的文件名表示 /dev/hda5
dev:表示所有硬件设备文件的目录
hd:表示硬件设备的代号,hd代表IDE设备,sd代表SCSI设备
a:表示同类型设备的编号,a代表第一个硬盘,b代表第二个硬盘,类推
5:表示分区号
7、Linux使用的文件系统类型
• EXT2和EXT3都是Linux操作系统默认使用的文件系统类型
EXT3属于日志文件系统,是EXT2文件系统的升级版
• swap类型的文件系统在Linux系统的交换分区中使用
• Linux支持对FAT格式文件系统(包括FAT16和FAT32)的读写
• Linux支持对NTFS文件系统的读取,默认不支持对NTFS文件系统的写入
8、目录层次结构
• Linux系统使用树型目录结构,在整个系统中只存在一个根目录(文件系统)
• Linux系统中总是将文件系统挂载到树型目录结构中的某个目录节点中使用
9、Linux的安装方式
安装程序的引导方式
RHEL4支持从光盘和USB存储设备引导安装程序
安装程序读取软件包的方式
从光盘读取软件包进行安装是RHEL4提供的缺省安装方式
安装程序可读取硬盘中保存的安装光盘镜像文件(ISO文件)进行安装
安装程序可从NFS、FTP和HTTP网络服务器中读取文件进行安装
阶段总结
Linux系统安装前需要进行硬盘中数据的备份
主机硬盘中应为Linux系统预留空间和分区
Linux系统需要至少一个根分区和一个交换分区
根分区文件系统默认采用EXT3格式
RHEL4可以使用光盘或USB设备引导安装程序
安装程序可以从光盘、硬盘和网络服务器读取软件安装包
shutdown命令 - k 并不真正关机,而只是发出警告信息给所有用户。
- r 关机后立即重新启动。
- h 关机后不重新启动。
- f 快速关机,重启动时跳过fsck。
- n 快速关机,不经过init程序。
- c 取消一个已经运行的shutdown
用vi做虚拟网卡
1. cd /etc/sysconfig/network-scripts/
2. cp ifcfg-eth0 ifcfg-eth0:0 复制虚拟网卡配置文件
3. vi ifcfg-eth0:0 配置虚拟网卡
修改DEVICE=eth0:0 IP地址
4. Ipup eth0:0 启用虚拟网卡
第2章 常用命令及帐户管理
1、Linux命令格式
Linux命令的组成部分:命令字、命令选项、命令参数
command [option] [arguments]
command:执行的命令
option:命令选项,说明对命令的要求
arguments:命令的参数,描述命令作用的对象
[]:表示选项或参数可有可无,即参数并非必须
2、命令中的其他组成
• 命令提示符表示命令输入的状态
管理员root用户的提示符“#”
[root@localhost ~]#
普通用户提示符“$”
[teacher@localhost ~]$
• 命令的各组成部分之间用空格分隔
• 命令的输入以回车键结束
3、获得命令帮助
• help命令:$ help pwd
• “--help”命令选项:$ touch --help
• 使用man命令阅读手册页:$ man ls
• 使用info命令阅读信息页:$ info ls
4、文件、目录操作命令
• 目录操作命令: ls pwd cd mkdir rmdir
• 文件操作命令: file touch cp rm mv find
• 文本文件查看命令 :cat more less
head tail
5、目录操作命令
命令 功能
ls 显示指定目录和文件的信息
pwd 显示当前目录名称
cd 进入指定的目录
mkdir 创建指定名称的目录
rmdir 删除指定名称的目录
6、路径的表示
• 相对路径是以“.”或“..”开始的目录路径表示形式
cd ./test
ls ../bin
• 绝对路径是以“/”开始的路径表示形式
ls /
cd /home
7、文件操作命令
命令 功能
file 显示指定文件的类型
touch 建立指定名称的文件或更新文件时间
cp 复制文件或目录
rm 删除文件或目录
mv 移动文件或目录,文件或目录重命名
find 在指定目录查找符合条件的文件
文件命令实例
• 检测文件类型:$ file /etc/passwd
• 建立空文件:$ touch tfile
• 文件查找
按文件名进行查找:$ find . -name file*
按文件属主进行查找:$ find . -user teacher
• 复制和删除文件:$ cp filea fileb
$ rm filea
• 文件移动与重命名:$ mv filea fileb
$ mv filea dira/
8、文本文件查看命令
命令 功能
cat 显示文本文件内容
more 分页显示文本文件内容
less 分页显示文本文件内容,并可方便反复浏览
head 显示文件首部内容
tail 显示文件尾部内容
文本查看实例
• 显示文本:$ cat /etc/passwd
• 分页显示文本:$ more /etc/passwd
• 分页文本浏览:$ less /etc/passwd
• 显示文件首:$ head -5 /etc/passwd
• 显示文件尾:$ tail -5 /etc/passwd
阶段总结
Linux中的基本命令包括文件操作命令、目录操作命令、文件查看命令等几类
文件操作命令完成对文件的建立、复制、删除、移动等功能
目录操作命令完成对目录的建立、复制、删除、移动等功能
文本查看命令完成对文本文件内容的浏览、局部浏览或分页浏览等功能
9、光盘的基本使用
• 光盘驱动器设备文件 :/dev/cdrom
• 挂载光盘使用mount命令:# mount -t iso9660 /dev/cdrom /mnt/cdrom/
• 光盘内容的读取
使用命令访问光盘挂载点目录:# ls /mnt/cdrom/
• 卸载光盘使用umount命令:# umount /mnt/cdrom
10、光盘驱动器托盘的弹出与收回
• 弹出光盘驱动器托盘:# eject
• 收回光盘驱动器托盘:# eject -t
11、光盘镜像文件操作
• 使用cp命令制作光盘镜像文件:# cp /dev/cdrom mydatacd.iso
• 使用mount命令挂载光盘镜像文件:
# mount -o loop -t iso9660 mydatacd.iso /mnt/cdrom/
• 通过挂载点目录访问ISO镜像文件的内容:# ls /mnt/cdrom/
• 使用umount命令卸载光盘镜像文件:# umount /mnt/cdrom/
12、U盘的使用方法
• 识别USB存储设备
包括USB硬盘、U盘、MP3播放器等
/dev/sda /dev/sdb ……
# fdisk -l
• 使用mount命令挂载U盘:# mount -t vfat /dev/sda1 /mnt/
• 通过挂载点目录访问U盘的内容:# ls /mnt
• 使用umount命令卸载U盘:# umount /mnt
13、用户和组管理
• 用户帐号管理
• 用户组帐号管理
• 文件权限设置
• 使用图形界面程序管理用户和组帐号
14、用户管理命令
命令 功能
adduser 添加用户帐号
passwd 设置(更改)用户口令
userdel 删除用户帐号(及宿主目录)
usermod 设置用户属性
15、用户帐号管理
• 建立用户帐号:# adduser st01
• 设置用户口令:# passwd st01
• 设置用户帐号属性
锁定用户帐号禁止登录:# usermod -L st01
• 删除用户帐号:# userdel -r st01
16、用户帐号相关文件和目录
• 用户帐号信息保存在passwd文件中:/etc/passwd
• 用户的加密口令保存在shadow文件中:/etc/shadow
• 用户的宿主目录是home目录中与用户名称相同的目录:/home/teacher
• 用户的初始配置文件来在skel目录(配置模版):/etc/skel
阶段总结
用户帐号信息保存在passwd文件中
用户口令信息保存在shadow文件中
passwd和shadow文件保存在/etc目录中
adduser命令用于添加用户帐号文件
passwd命令用于设置用户口令
usermod命令用于设置用户属性
userdel命令用于删除用户帐号
目录/etc/skel中保存了建立用户帐号的模版文件
17、用户组管理命令及文件
命令 功能
groupadd 添加指定名称的用户组帐号
groupdel 删除指定名称的用户组帐号
文件 功能
/etc/group 保存用户组帐号信息
18、用户组帐号管理
• 添加用户组:# groupadd class1
• 在建立用户时指定用户组 :# adduser -g class1 st03
• 更改用户的组帐号 :# usermod -g class1 st01
• 删除用户组:# groupdel class1
19、查看文件的权限属性
文件权限(-rw--r--r--)
权限项 读 写 执行 读 写 执行 读 写 执行
字符表示 (r) (w) (x) (r) (w) (x) (r) (w) (x)
数字表示 4 2 1 4 2 1 4 2 1
权限分配 文件所有者 文件所属组用户 其他用户
20、使用chmod命令更改文件属性
chmod命令用于更改文件对于某类用户的操作权限
文件权限设置实例
• 使用chmod命令设置文件权限
查看文件权限:$ ls -l afile
-rw-rw-r-- 1 st01 class1 0 Apr 3 16:52 afile
增加文件属主st01的执行权限(x):$ chmod u+x afile
去除文件属组class1的写权限(w):$ chmod g-w afile
设置其他用户的文件权限为可执行:$ chmod o=x afile
21、设置文件属主和属组
chown命令用于设置文件的属主和属组
命令格式:chown OWNER[:[GROUP]] FILE...
设置文件afile的属主为用户st01:# chown st01 afile
设置文件afile的属组为用户组class1:# chown :class1 afile
设置文件afile的属主为st03,并设置文件的属组为class2:# chown st03:class2 afile
第3章 文本编辑器
1、文本编辑器概述
文本编辑器的作用
Linux系统中的配置文件以文本文件的形式保存
Linux管理员需要通过编辑配置文件进行系统管理
文本编辑器的分类
行编辑器与全屏幕编辑器
字符界面编辑器与图形界面编辑器
2、Linux中的多种文本编辑器
vii : Linux学习者需要掌握的第一个文本编辑器
大多数Linux系统中缺省使用的文本编辑器
Emacs : 用于编辑程序源代码文件的文本编辑器
nano : 在字符界面提供了菜单操作,易用性较好
gedit : GNOME图形环境中的文本编辑器
3、vi编辑器的三种模式
vi编辑器中有三种状态模式
命令模式
输入模式
末行模式
4、vi编辑器的基本使用
• vi编辑器的启动与退出
• 文件操作
• 光标移动操作
• 编辑操作
• 查找与替换操作
• vi编辑器的在线帮助
5、vi编辑器的启动与退出
• 直接进入编辑环境 :$ vi
• 进入编辑环境并打开(新建)文件:$ vi myfile
• 退出vi编辑环境 (输入末行命令放弃对文件的修改,并退出编辑器)::q!
6、文件的打开与读取操作
• 打开新文件
打开新的文件到vi编辑器中::e filename
打开新的文件到vi编辑器中,并放弃对当前文件的修改::e! filename
• 读取文件内容到当前vi编辑器中 ::r filename
7、文件保存与另存为
• 保存文件(保存对vi编辑器中已打开文件的修改)::w
• 另存为文件(将vi编辑器中的内容另存为指定文件名)::w myfile
8、退出vi编辑器的多种方法
• 未修改退出(没有对vi编辑器中打开的文件进行修改,或已对修改进行了保存,直接退出vi编辑器)::q
• 保存并退出(对vi编辑器中的文件进行保存并退出vi编辑器)::qw
• 不保存退出(放弃对文件内容的修改,并退出vi编辑器)::q!
9、光标移动和翻页操作
操作类型 光标操作键 功能
光标移动 h 向左移动光标
l 向右移动光标
k 向上移动光标
j 向下移动光标
翻页 Ctrl + f 向前翻整页
Ctrl + b 向后翻整页
Ctrl + d 向前翻半页
Ctrl + u 向后翻半页
10、行内快速跳转
操作键 功能
^ 将光标快速跳转到本行的行首字符
$ 将光标快速跳转到本行的行尾字符
w 将光标快速跳转到当前光标所在位置的后一个单词的首字母
b 将光标快速跳转到当前光标所在位置的前一个单词的首字母
e 将光标快速跳转到当前光标所在位置的后一个单词的尾字母
11、文件内行间快速跳转
命令 功能
:set nu 在编辑器中显示行号
:set nonu 取消编辑器中的行号显示
1G 跳转到文件的首行
G 跳转到文件的末尾行
#G 跳转到文件中的第#行
12、进入输入模式
命令 功能
i 在当前光标处进入插入状态
a 在当前光标后进入插入状态
A 将光标移动到当前行的行末,并进入插入状态
o 在当前行的下面插入新行,光标移动到新行的行首,进入插入状态
O 在当前行的上面插入新行,光标移动到新行的行首,进入插入状态
cw 删除当前光标到所在单词尾部的字符,并进入插入状态
c$ 删除当前光标到行尾的字符,并进入插入状态
c^ 命令删除当前光标之前(不包括光标上的字符)到行首的字符,并进入插入状态
13、输入模式的编辑键操作
按键 功能
方向键 进行上下左右方向的光标移动
Home 快速定位光标到行首
End 快速定位光标到行尾
PageUp 进行文本的向上翻页
PageDown 进行文本的向下翻页
Backspace 删除光标左侧的字符
Del 删除光标位置的字符
14、删除操作
命令 功能
x 删除光标处的单个字符
dd 删除光标所在行
dw 删除当前字符到单词尾(包括空格)的所有字符
de 删除当前字符到单词尾(不包括单词尾部的空格)的所有字符
d$ 删除当前字符到行尾的所有字符
d^ 删除当前字符到行首的所有字符
J 删除光标所在行行尾的换行符,相当于合并当前行和下一行的内容
15、撤销操作
命令 功能
u 取消最近一次的操作,并恢复操作结果
可以多次使用u命令恢复已进行的多步操作
U 取消对当前行进行的所有操作
Ctrl + r 对使用u命令撤销的操作进行恢复
16、复制与粘贴操作
命令 功能
yy 复制当前行整行的内容到vi缓冲区
yw 复制当前光标到单词尾字符的内容到vi缓冲区
y$ 复制当前光标到行尾的内容到vi缓冲区
y^ 复制当前光标到行首的内容到vi缓冲区
p 读取vi缓冲区中的内容,并粘贴到光标当前的位置(不覆盖文件已有的内容)
阶段总结
vi编辑器的启动与退出
文件操作
光标移动操作
vi编辑器的基本编辑操作:从命令模式进入输入模式的命令、输入模式中的基本编辑操作、命令模式中的删除操作、命令模式中的撤销操作、命令模式中的复制操作、命令模式中的粘贴操作
17、字符串查找操作
命令 功能
/word 从上而下在文件中查找字符串“word”
?word 从下而上在文件中查找字符串“word”
n 定位下一个匹配的被查找字符串
N 定位上一个匹配的被查找字符串
18、字符串替换操作
命令 功能
:s/old/new 将当前行中查找到的第一个字符“old” 串替换为“new”
:s/old/new/g 将当前行中查找到的所有字符串“old” 替换为“new”
:#,#s/old/new/g 在行号“#,#”范围内替换所有的字符串“old”为“new”
:%s/old/new/g 在整个文件范围内替换所有的字符串“old”为“new”
:s/old/new/c 在替换命令末尾加入c命令,将对每个替换动作提示用户进行确认
19、使用vi打开多个文件
• 在输入vi命令时使用多个文件名作为参数:vi file1 file2 file3 ...
20、vi多文件操作命令
命令 功能
:args 显示多文件信息
:next 向后切换文件
:prev 向前切换文件
:first 定位首文件
:last 定位尾文件
Ctrl + ^ 快速切换到编辑器中切换前的文件
阶段总结
vi编辑器中可同时打开多个文本文件进行编辑
vi编辑器的编辑区域中只显示一个文件,其他被打开的文件被放在后台
vi中编辑区域的内容可以在多个已打开文件之间进行切换
vi从一个文件切换到另一个文件时应先保存更改或放弃更改
第4章 Shell的使用
1、 Shell的基本概念:Shell是操作系统与用户进行交互操作的界面
2、Shell的发展与分类
Bsh:在20世纪70年代中期诞生于新泽西的AT&T贝尔实验室,具有较强的脚本编程功能
Csh:在20世纪80年代早期诞生于加利福尼亚大学 ,使用C语言的语法,用户命令交互更加方便
Ksh:结合了Bsh和Csh两者的功能优势,兼有Bsh的语法和Csh的交互特性
Bash:是Bsh的升级替代品,吸收了Ksh中的诸多优秀特性,Bash是开源软件
3、RHEL4中Shell的使用
RedHat9.0中提供了多种Shell程序可供用户选择
文件Shells中保存了Linux系统中可使用的Shell程序列表 :/etc/shells
• 在某个Shell程序中可通过执行其他的Shell程序改变用户的当前Shell
[teacher@localhost ~]$ bsh
• 用户默认Shell的设定
用户使用的登录Shell保存在passwd文件的记录中:/etc/passwd
4、Bash的主要功能
• 命令行编辑功能
• 命令和文件名补全功能
• 命令历史功能
• 命令别名功能
• 提供作业控制功能
• 具有将命令序列定义为功能键的功能
• 灵活的Shell脚本编程
7、 Shell变量的分类:环境变量、预定义变量、位置变量、用户自定义变量(本地变量)
8、环境变量
• 使用set命令查看环境变量 :set
常用环境变量
USER UID SHELL HOME PWD PATH PS1 PS2
环境变量配置文件
/etc/bashrc
/etc/profile
~/.bash_profile
~/.bashrc
9、预定义变量
变量名 含义
$# 表示位置参数的数量
$* 表示所有位置参数的内容
$? 表示命令执行后返回的状态,用于检查上一个命令的执行是否正确;在Linux中,命令退出状态为0表示命令正确执行,任何非0值表示命令执行错误
$$ 表示当前进程的进程号
$! 表示后台运行的最后一个进程号
$0 表示当前执行的进程名
10、用户自定义变量
• 自定义变量的设置:$ DAY=sunday
• 自定义变量的查看与引用 :$ echo $DAY
• 自定义变量的输出 :$ export DAY
• 自定义变量的清除 :$ unset DAY
11、Bash的命令行编辑功能
操作键 功能
左右方向键 使用左右方向键可以使光标在当前命令行中的已有字符间进行任意的移动
退格键 删除命令行中光标左边的字符
Del 删除当前光标处的字符
Home 将光标快速移动到命令行的行首
End 将光标快速移动到命令行的行尾
Ctrl + u 删除当前光标到行首的内容
Ctrl + k 删除当前光标到行尾的内容
12、Bash的命令行补全功能
• 命令补全功能
使用Tab键可在命令查找路径中查找匹配的命令,并进行命令拼写的补全
• 文件补全功能
使用Tab键可对文件和目录名进行补全
13、Bash的命令历史与命令重复
• 命令历史功能的使用 :使用上下方向键浏览已输入命令(历史命令)
• 历史命令的查看 :$ history
• 用户命令历史保存文件 :~/.bash_history
• 命令历史的清除:$ history -c
14、Bash的命令别名功能
• 命令别名的显示 :$ alias
• 命令别名的定义 :$ alias grep='grep -i'
• 命令别名的取消 :$ alias grep
$ unalias -a
• 系统别名定义文件
RHEL4系统中为用户预定义的命令别名保存在“/etc/profile.d/”目录的配置文件中
阶段总结
Shell的发展与类型:Bsh Csh Ksh Bash
Shell变量类型 :环境变量、预定义变量、位置变量、用户自定义变量
Bash的主要功能:命令行编辑、命令补全、命令历史、命令别名
15、管道与重定向
• 标准输入输出
• 重定向操作
• 管道操作
16、标准输入输出
输入输出文件 文件编号 默认设备
标准输入 0 键盘
标准输出 1 显示器
标准错误输出 2 显示器
17、重定向操作
类别 操作符 说明
输入重定向 < 输入重定向是将命令中接收输入的途径由默认的键盘更改(重定向)为指定的文件
输出重定向 > 将命令的执行结果重定向输出到指定的文件中,命令进行输出重定向后执行结果将不显示在屏幕上
>> 将命令执行的结果重定向并追加到指定文件的末尾保存
错误重定向 2> 清空指定文件的内容,并保存标准错误输出的内容到指定文件中
2>> 向指定文件中追加命令的错误输出,而不覆盖文件中的原有内容
输出与错误组合重定向 &> 将标准输出与错误输出的内容全部重定向到指定文件
18、输出重定向实例
将标准输出重定向到文件:$ ls /etc/ > etcdir
将标准输出重定向追加到文件:$ ls /etc/sysconfig/ >> etcdir
将错误输出重定向到文件:$ nocmd 2> errfile
将标准输出和错误输出重定向到文件:$ ls afile bfile &> errfile
19、管道的使用
• 管道操作符:|
• “|”符用于连接左右两个命令,将“|”左边的命令执行结果(输出)作为“|”右边命令的输入 :cmd1 | cmd2
• 在同一条命令中可以使用多个“|”符连接多条命令 :cmd1 | cmd2 | ... | cmdn
20、Shell脚本的概念
• Shell脚本程序是Shell命令语句的集合,用于实现特定的功能;
• Shell脚本程序保存在文本文件中,可以使用文本处理程序进行阅读和编辑;
• Shell脚本程序是由Shell环境解释执行的,不需要在执行前进行编译;
• 执行Shell程序时,Shell脚本文件需要具有可执行(x)的属性
21、基本脚本编程
• 使用文本编辑器(vi)建立Shell脚本文件
• 脚本中应包括的内容
脚本运行环境设置 :#!/bin/bash
注释行以#开始 :# Clean command history,清除用户命令历史
脚本语句:history -c
• 设置脚本文件为可执行
22、运行脚本程序
• 使用Shell命令程序执行脚本程序:$ bash hello.sh
• 使用“.”命令执行脚本程序:$ . hello.sh
• 直接执行具有执行属性的脚本程序:$ ./hello.sh
阶段总结
输入输出文件:标准输入、标准输出、标准错误
重定向符号:< > >> 2> 2>> &>
管道符:|
Shell脚本的组成:脚本运行环境设置、注释行、脚本语句
第5章 Linux应用程序安装与管理
1、Linux应用程序与命令的关系
• 内部命令
• 外部应用程序
• 两种形式的命令操作方法相同
2、Linux应用程序与命令
• 应用程序与命令的关系
基本命令是Linux系统中不可缺少的组成部分
命令保存在/bin和/sbin目录中
应用程序保存在/usr/bin和/usr/sbin目录中
命令的作用是完成对Linux系统本身的管理工作,应用程序则完成与Linux系统管理相对独立的任务
命令只能以命令行的形式运行,命令格式中包括命令字、命令选项和命令参数
应用程序可以是以命令行的形式运行,也可以是字符界面或图形界面的窗口程序,形式比较多样
3、应用程序与第三方应用程序
• 系统应用程序与第三方应用程序的比较
系统应用程序通常遵从Linux发行版本中的软件包管理格式进行安装和卸载
第三方应用程序可能以Linux发行版本中使用的软件包的格式提供安装程序,也可能使用来自安装程序或其他的形式提供应用程序的安装
4、Linux应用程序组成:可执行程序、配置文件、帮助文件、库文件
• 应用程序中不同类型的文件保存在Linux系统的不同目录中
文件类型 保存目录
普通执行程序文件 /usr/bin
服务器执行程序文件和管理程序文件 /usr/sbin
应用程序配置文件 /etc
应用程序文档文件 /usr/share/doc
应用程序手册页文件 /usr/share/man
5、RPM 软件包
• RPM最早是由Red Hat公司提出的软件包管理标准,目前应用于很多Linux发行版
RPM Package Manager
• RPM软件包的文件名
bash-3.0-19.2.i386.rpm
bash:代表软件包名称
3.0-19.2.i386:软件版本号、软件运行硬件平台
rpm:软件包扩展名
6、rpm命令的功能
• RHEL4中使用rpm命令对RPM软件包进行管理
• rpm命令可以完成对软件包的所有管理功能
查询已安装在Linux系统中的RPM软件包的信息
查询RPM软件包安装文件的信息
安装RPM软件包到当前Linux系统
从当前Linux系统中卸载已安装的RPM软件包
升级当前Linux系统中已安装的RPM软件包
7、rpm查询命令
命令 功能
rpm -qa 查询Linux系统中的所有软件包
rpm -q 包名称 查询指定名称的软件包是否安装
rpm -qi 包名称 查询指定名称软件包的详细信息
rpm -ql 包名称 查询指定名称软件包中所包括的文件列表
rpm -qf 文件名称 查询指定文件所属的软件包
rpm -qpi 包文件名 查询指定RPM包文件的详细信息
rpm -qpl 包文件名 查询指定RPM包中包含的文件列表
8、RPM安装命令
• rpm命令配合“-i”选项用于安装RPM软件包
rpm -i vim-common-6.3.035-3.i386.rpm
• rpm命令配合“-ivh”在安装RPM软件包时会显示更多的提示信息
rpm -ivh vim-common-6.3.035-3.i386.rpm
9、RPM包卸载
• rpm命令配合“-e”选项用于安装RPM软件包:rpm -e vim-enhanced
• RPM软件包的卸载同样存在依赖关系
被依赖的软件包应该最后被卸载
10、RPM包升级
rpm命令配合“-U”选项用于安装RPM软件包
rpm -U vim-enhanced-6.3.035-3.i386.rpm
当系统中未安装需要升级的软件包时,升级的过程等同于安装软件包的过程
阶段总结
应用程序和系统命令的执行文件放置在不同的系统目录中
应用程序软件包中不同类型的文件保存在不同的系统目录中
Red Hat Linux系列发行版中使用RPM作为软件包的管理格式
rpm命令用于软件包的管理:rpm -q实现软件包查询功能、rpm -i实现软件包安装功能、rpm -e实现软件包卸载功能、rpm -U实现软件包升级功能
11、应用补丁
• 使用diff命令生成补丁文件
语法:diff 原始文件 新文件
• 使用patch命令应用补丁文件
语法:patch 原始文件 补丁文件
12、应用程序编译安装
• 开放源代码应用程序的编译安装
• 编译应用程序前的准备工作
• 编译前的配置
• 编译与安装过程
13、应用程序源代码安装的一般步骤
• 确认当前系统中具备软件编译的环境
• 获得应用程序的源代码软件包文件
• 解压缩源代码软件包文件
• 进行编译前的配置工作
• 进行程序源代码的编译
• 将编译完成的应用程序安装到系统中
14、编译应用程序前的准备工作
• 确认系统中已经安装了编译环境 :$ rpm -qa | grep gcc
• 获得(下载)程序的源代码安装包文件
• 释放程序源代码软件包文件:$ tar jxf prozilla-2.0.4.tar.bz2
• 进入源代码目录:$ cd prozilla-2.0.4
15、程序编译前的配置
• 程序源代码目录中的“configure”命令用于完成程序编译前的配置工作
• 查看“configure”命令支持的配置选项:./configure --help
• 指定安装路径进行配置:./configure --prefix=/home/teacher/proz
16、编译与安装
• 程序编译过程(使用make命令进行应用程序的编译):$ make
• 程序安装过程(使用make install命令进行应用程序的编译):$ make install
• 验证(执行)已编译安装完成的程序(查看安装目录中的文件,执行命令程序):
$ cd /home/teacher/proz ; ls
$ bin/proz –help
17、应用程序管理工具的特点
• 应用程序管理工具对RHEL4安装光盘中包括的软件包按照类型划分后进行管理,结构比较清晰
• 管理工具只能用于管理RHEL4发行版中自带的应用程序,不能管理其他的RPM软件包
• 由于软件包之间存在复杂的依赖性关系,很多软件包只能通过管理工具进行安装和卸载,通过rpm命令很难手工完成管理工作
• 管理工具特别适合完成安装和卸载某个类型的所有软件包
阶段总结
为了实现特定的管理目的,一些应用程序只能通过源码编译的方式进行安装
应用程序源码编译安装需要系统中有编译环境
应用程序源码编译包括配置、编译、安装等步骤
./configure
make
make install
应用程序管理工具是Red Hat Linux系列发行版中特有管理程序,只能管理发行版自身包括的软件包
第6章Linux系统管理
1、系统启动过程
a:主机启动,并从硬盘进行引导
b:从硬盘MBR读取并运行Boot Loader程序
c:由Boot Loader引导Linux内核程序运行
d:由Linux内核运行INIT进程
e:进入指定运行级别,运行系统服务程序
f:运行终端程序,等待用户登录
2、Linux系统中的运行级别
运行级别 说明
0 停机
1 单用户模式,用于root用户对系统进行维护
2 多用户模式,在此模式下不能使用NFS
3 完全多用户模式,主机做为服务器使用时通常在此运行级别
4 未分配使用
5 图形登录的多用户模式,用户在该模式下可进行图形界面登录
6 重新启动
3、显示与转换运行级别
• 显示运行级别:# runlevel
• 改变系统运行级别
init命令用于改变系统当前的运行级别,使用0-6的运行级别作为命令选项
关机操作:# init 0
重新启动操作:# init 6
4、查看系统服务的启动状态
• chkconfig命令可查看服务启动状态
显示全部服务的启动状态:# chkconfig --list
显示指定服务的启动状态:# chkconfig --list syslog
5、设置独立系统服务的启动状态
实例:设置syslog服务在运行级别2和4中不启动
# chkconfig --level 24 syslog off
6、设置非独立服务的启动状态
实例:设置rsync服务在xinetd服务中有效:# chkconfig rsync on
重新启动xinetd服务,使非独立服务的启动状态设置生效
# service xinetd restart
7、INIT进程与配置文件
• INIT进程是由Linux内核引导运行的,是系统中运行的第一个进程
• INIT的配置文件是inittab
# tail -5 /etc/inittab
8、inittab文件的结构
x:5:respawn:/etc/X11/prefdm -nodaemon
字段 说明
id 用于在inittab文件中唯一标识一个配置记录
runlevels 用于指定该记录在哪些运行级别中运行
action 用于描述记录将执行哪种类型的动作
process 用于设置启动进程所执行的命令
9、系统脚本
rc.sysinit :保存在“/etc/rc.d/”目录中的Bash脚本文件,在系统启动时被调用执行,完成系统初始化的工作
rc.local :在系统启动过程中,完成初始化脚本的执行后,会执行“/etc/”目录中的“rc.local”脚本
可以将系统中需要自定义执行的命令保存在“rc.local”脚本中
10、程序与进程
• 程序是保存在外部存储介质中的可执行代码和数据,是静态保存的代码
• 进程是程序代码在处理器中的运行,是动态执行的代码
• 操作系统在执行程序时,将程序代码由外部存储介质(如硬盘)读取到内部存储介质(内存)中
• 驻留在内存中的程序代码作为“进程”在中央处理器中被动态执行
11、查看进程命令
• 显示进程信息:ps命令显示某时刻系统进程的状态信息
• 显示进程状态:
top命令以全屏幕的方式显示系统中的进程状态,并定时刷新显示的内容
可以通过top命令查看系统中进程的动态变化
• 显示系统进程树:pstree命令以树的形式显示系统进程间的父子关系
12、进程启动方式
• 手工启动
由用户输入命令,直接执行一个程序
前台启动是普通的命令执行方式
后台启动需要在命令尾加入“&”
# cp /dev/cdrom mycd.iso &
• 调度启动
使用at命令设置某个命令在某个时间,一次性的在系统中执行
crontab命令设置在系统中需要周期性(如每天、每周等)完成的任务
13、改变进程的运行方式
• 把当前终端中运行的进程调入后台
使用“Ctrl+z”组合键可以将当前终端的进程调入后台并停止执行
• 查看后台的进程
jobs命令用于查看当前终端中后台的所有进程的状态:$ jobs
[1]+ Stopped top
• 将后台的进程恢复到前台运行
fg命令用于将后台的进程调入终端前台执行:$ fg 1
14、终止进程运行
• 终止正在执行的命令
使用“Ctrl + c”组合键可以强制结束当前终端中运行的命令
• 使用kill命令终止进程 :$ kill -9 2501
阶段总结
Linux系统中有0-6的运行级别,每个运行级别都有不同的含义
进程是程序代码在计算机系统中的动态运行
ps、top和pstree命令用于查看系统中的进程信息
进程可以被手工启动,也可以被系统调度启动
进程可以运行在前台或后台,fg命令可以将后台的进程调入前台
kill命令可以终止进程的运行
15、cron简介
• cron是一个可以用来根据时间、日期、月份、星期的组合来调度对周期性任务执行的守护进程
• 利用cron所提供的功能,可以将需要周期性重复执行的任务设置为cron任务,并且设置为在主机较空闲的时间(如夜间)自动完成
• RHEL4中实现cron功能的软件包组成
vixie-cron 软件包实现系统中的定时执行功能
crontabs软件包实现对Linux系统的定时任务管理功能
16、cron服务的启动与停止
• 查询crond服务状态:# service crond status
• 停止crond服务:# service crond stop
• 启动crond服务:# service crond start
• 重新启动crond服务:# service crond restart
• 查看crond服务的开机启动状态:# chkconfig --list crond
17、cron任务的格式
50 3 2 1 * run_yearly_cmd
字段 说明
minute 分钟,取值为从0到59之间的任意整数
hour 小时,取值为从0到23之间的任意整数
day 日期,取值为从1到31之间的任意整数
month 月份,取值为从1到12之间的任意整数
dayofweek 星期,取值为从0到7之间的任意整数,0或7代表星期日
command 要执行的命令或程序脚本
18、使用crontab命令进行设置
• 查看用户的cron任务 :# crontab -l
• 编辑用户的cron任务
编辑并覆盖原有的cron任务:# crontab
调用文本编辑器对cron任务进行编辑 :# crontab -e
• 删除用户现有的cron任务 :# crontab -r
19、cron任务的保存文件
• 保存cron任务的文件
所有用户的cron任务(使用crontab命令创建的任务)都被保存在目录“/var/spool/cron/”中的文件中
文件的名称与用户名相同
例如root用户的cron任务列表文件的名称是“/var/spool/cron/root”
20、cron的配置文件和目录
• 系统任务配置文件
“/etc/crontab”文件中设置的是Linux系统维护所需的任务,一般不需要人为去修改
• 任务脚本目录
在“/etc”目录中有名为cron.hourly 、cron.daily 、cron.weekly 和cron.monthly 的目录
目录中存放的是需要定期执行的系统任务脚本
例如,“/etc/cron.daily/”目录中存放的是每日执行一次的系统任务脚本
21、认识日志文件
• 日志的功能
日志文件(Log files)是记录Linux中系统消息的文件
不同的日志文件记载不同类型的信息,包括内核、服务以及在系统中运行的应用程序的信息
日志文件对于诊断和解决系统中的问题很有帮助
22、系统中的日志文件
• 日志文件的位置
日志文件保存在目录“/var/log/”中
“/var/log/”目录中可以建立单独的子目录来存放特定程序的日志文件
• 日志文件的分类
应用程序独立管理的日志文件
受syslogd服务统一管理的日志文件
syslogd服务的配置文件“/etc/syslog.conf” 的内容可以显示syslogd服务管理的日志文件
23、日志文件分析
# head -1 /var/log/boot.log
Apr 7 05:05:12 localhost rc: Starting pcmcia: succeeded
字段 说明
时间标签 消息发出的日期和时间
主机名 生成消息的计算机的名字
生成消息的子系统的名字 发出消息的程序名称
消息 消息的内容
24、磁盘限额的基本概念
• quota软件包:RHEL4中是通过quota软件实现磁盘限额功能的
• 容量限制与文件数限制
quota可以限制指定对象能够占用的磁盘空间大小和拥有的文件数
• 软限制与硬限制
软限制:一个用户在文件系统可拥有的最大磁盘空间和最多文件数量,在某个宽限期内可以暂时超过这个限制
硬限制:一个用户可拥有的磁盘空间或文件的绝对数量,绝对不允许超过这个限制
• 用户限制与组限制
使用quota可以设置对指定用户进行限额,也可以对指定用户组进行整体限额
25、设置磁盘限额的步骤
• 修改“fstab”文件
在文件系统的配置记录中添加“usrquota”和“grpquota”配置选项
LABEL=/ / ext3 defaults,usrquota,grpquota 1 1
• 重新挂载文件系统
重新启动系统可以使文件系统的quota配置生效
# reboot
• 创建配额文件
使用quotacheck命令可创建用户配额文件aquota.user 和组配额文件aquota.group
# quotacheck -cmug /
• 设置配额
使用edquota命令可以编辑对用户和组的配额设置
26、磁盘限额命令
a、quotacheck用于建立限额额文件和对磁盘限额进行检测
在根文件系统中建立用户和组的配额文件:# quotacheck -cmug /
检测根文件系统中配额文件和实际配额状态的一致性
# quotacheck -mfvug /
b、 edquota命令用于编辑用户和组的磁盘配额
编辑用户st01的配额设置:# edquota -u st01
编辑组st01的配额设置:# edquota -g st01
c、 quota命令用于显示用户和组的配额情况
显示用户st01的配额信息:# quota -u st01
显示用户组st01的配额信息:# quota -g st01
27、tar命令建立归档
• 对文件和目录进行归档 :$ tar cf myfiles.tar files/
• 对文件和目录进行压缩归档:$ tar czf myfiles.tar.gz files/
28、查看归档中的文件列表
• 查看归档文件中的目录列表 :$ tar tf myfiles.tar
• 查看压缩归档文件中的目录列表:$ tar tzf myfiles.tar .gz
29、恢复归档文件
• 恢复归档文件 :$ tar xf myfiles.tar
• 恢复压缩的归档文件 :$ tar xzf myfiles.tar.gz
• 恢复归档文件到指定目录 :$ tar xzf myfiles.tar.gz -C restore/
阶段总结
Linux系统中通过crond服务实现任务的周期性自动执行,通过cron机制系统可以有效的完成管理任务的自动执行
Linux系统中的日志文件可以记录系统中运行程序的信息,便于排错时进行查询
Linux中使用quota实现对用户和组的配盘配额,可以对用户占用的空间进行有效的管理
tar命令可以实现对文件的归档、查看和恢复,可有效的实现对系统文件的备份和恢复
第7章Linux基本网络配置
1、网络信息查看
• Linux系统中的普通用户可以使用命令查看系统的网络属性信息
查看网络接口信息
测试网络连接状态
查看网关地址和路由信息
查看主机名称信息
2、查看网络接口信息
• ifconfig命令用于查看网络接口信息
查看所有活动网络接口的信息:$ /sbin/ifconfig
查看所有网络接口(包括非活动网络接口)的信息:$ /sbin/ifconfig -a
查看指定网络接口信息:$ /sbin/ifconfig eth0
3、查看主机路由信息
• route命令可查看主机的路由信息:$ /sbin/route
4、使用ping命令测试网络连结
• ping命令用于测试当前主机与其他主机的网络连接:$ ping 192.168.152.131
5、指定ping命令的测试数据包
• ping命令可以指定发送的测试数据包的数量:$ ping -c 4 192.168.152.2
6、测试与其他主机的网络连接路径
• traceroute命令测试当前主机到目的主机之间经过的所有网络节点
$ traceroute 192.168.1.1
7、查看当前主机名称
• hostname命令可显示当前主机的名称:$ hostname
localhost.localdomain
8、域名查询
• nslookup命令可进行域名的查询
使用nslookup命令的交互模式进行域名查询:$ nslookup
> www.sina.com.cn
使用nslookup直接查询域名:$ nslookup www.sina.com.cn
9、使用命令进行网络设置
• 使用命令配置网络属性可以即时生效,但主机重新启动后将丢失配置
网络设置的两种方法
ip地址配置命令
路由配置命令
主机名称配置命令
DNS域名解析
10、网络设置的两种方法
• DHCP网络配置
Linux主机通过网络中已有的DHCP服务器获取必要的设置信息进行网络配置
网络客户端的配置简单,需要在DHCP服务器端进行正确的配置
RHEL4中使用dhclient作为dhcp客户端程序
• 手工网络配置
在每台主机中独立配置网络属性
主要应用于网络服务器主机
11、ip地址配置命令
• ifconfig命令可以设置网络接口的ip地址
# ifconfig eth0 192.168.152.133 netmask 255.255.255.0
12、路由配置命令
route命令可以维护系统路由表信息
删除缺省网关:# route del default gw 192.168.152.2
添加缺省网关:# route add default gw 192.168.152.2
13、设置主机名称
• hostname命令可以对当前主机的名称进行设置
hostname命令设置的主机名称是即时生效的
系统重新启动后将会恢复为系统原有的主机名称
# hostname LinServer
14、DNS域名解析
• 使用nslookup命令的交互模式可以显示和设置当前命令使用的DNS服务器
显示使用的DNS服务器地址
# nslookup
> server
Default server: 192.168.152.2
Address: 192.168.152.2#53
设置nslookup命令使用的DNS服务器地址
> server 202.106.0.20
Default server: 202.106.0.20
Address: 202.106.0.20#53
阶段总结
ifconfig命令可已查看和设置网络接口的属性
route命令可查看和维护系统路由表信息,可查看和设置缺省网关的地址
ping命令用于测试当前主机与目标主机之间的网络连接
traceroute命令用于测试当前主机与目标主机间的所有网络节点的连接状态
hostname命令用于显示和设置主机名称
nslookup命令用于查询域名解析
15、修改配置文件进行网络设置
• 通过配置文件进行网络配置可以使配置持久有效
使用工具进行网络配置
网络服务启动脚本
网络接口配置文件
主机名称配置文件
本地主机名称解析文件
域名服务器配置文件
16、RHEL4中提供了网络配置工具:# netconfig
17、网络服务启动脚本
“network”服务程序用于对RHEL4中的网络属性进行配置生效
network服务的启动脚本在“/etc/init.d”目录中:/etc/init.d/network
启动network服务:# /etc/init.d/network start
停止network服务:# /etc/init.d/network stop
18、网络接口配置文件
• 网络接口的文件位于目录“/etc/sysconfig/network-scripts/”中
网络接口eth0的配置文件是ifcfg-eth0
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
19、停止和启动指定的网络接口
• 网络接口配置文件修改后并不会自动生效,需要执行命令使配置生效
停用网络接口:# ifdown eth0
启用网络接口:# ifup eth0
网络接口停用再启用时将按照配置文件的内容设置
20、主机名称配置文件
• network文件位于“/etc/sysconfig/”目录中,其中保存了主机的名称配置
# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=localhost.localdomain
在文件“/etc/sysconfig/network”中对HOSTNAME配置项进行配置后,需要重新启动计算机使新设置的主机名生效
21、本地主机名称解析文件
• “/etc/hosts”文件保存本地的主机名与ip地址的对应记录
# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
• hosts文件和DNS服务器功能的比较
在hosts文件中设置主机名称的解析更加灵活,可以立即生效
hosts文件中的设置内容只在当前的Linux主机中有效,无法作用于整个网络
hosts文件无法完全取代DNS服务器的作用,只能完成辅助的本地主机名称解析
22、域名服务器配置文件
• 系统使用的DNS服务器的ip地址保存在“resolv.conf”文件中
# cat /etc/resolv.conf
nameserver 192.168.152.2
文件中最多可以有3个“nameserver”配置记录
系统会优先使用文件中前面的“nameserver”配置记录
当前面的DNS服务器无效时系统会自动使用后面的DNS服务器进行域名解析
阶段总结
RHEL4中提供了netconfig工具用于网络配置文件的修改
network服务用于设置系统的网络属性
ifcfg-eth0文件用于设置网络接口eth0的属性
“/etc/sysconfig/”目录中的network文件用于保存主机名称信息
“/etc/hosts ”文件用于保存主机名称和地址解析记录
“/etc/resolv.conf ”文件用于保存系统使用的DNS服务器的地址
第8章NFS文件系统
1、NFS的基本概念
• NFS是系统间进行文件共享的一种网络协议
• 在NFS的应用结构中有服务器和客户机两种角色
• NFS客户端通过挂载NFS文件系统的方式访问NFS服务器中输出的共享目录
• 在同一台主机中即可以是NFS服务器也可以作为NFS客户机
2、NFS网络共享的一般用法
• 在NFS服务器主机中进行设置
安装NFS服务器软件包
启动NFS服务器程序
设置NFS共享目录输出
• 在NFS客户机中进行设置
使用mount命令挂载NFS服务器中的NFS共享目录到文件系统中
通过NFS文件系统的挂载点目录访问NFS服务器中的共享内容
3、NFS服务器的安装
• portmap软件包
提供了运行portmap服务所需的文件。portmap服务为NFS等服务器程序提供RPC服务的支持
• nfs-utils软件包:提供了NFS服务器的启动脚本和管理维护工具
• 软件包安装:“nfs-utils”和“portmap”两个软件包在RHEL4系统中是默认安装的
4、NFS服务器的配置文件
• “exports”文件用于配置NFS服务器中输出的共享目录
# cat /etc/exports
/home/share *(sync,ro)
字段 说明
nfs共享目录名 需要进行输出的NFS共享目录名称
客户端主机地址 能够访问共享目录 的主机地址
设置选项 设置共享目录的属性
5、exports文件解析
• exports文件中“客户端主机地址”字段可以使用多种形式表示主机地址
实例 说明
192.168.152.13 指定IP地址的主机
nfsclient.test.com 指定域名的主机
192.168.1.0/24 指定网段中的所有主机
*.test.com 指定域下的所有主机
* 所有主机
• exports文件中的“配置选项”字段放置在括号对(“( )”)中 ,多个选项间用逗号分隔
sync:设置NFS服务器同步写磁盘,这样不会轻易丢失数据,建议所有的NFS共享目录都使用该选项
ro:设置输出的共享目录只读,与rw不能共同使用
rw:设置输出的共享目录可读写,与ro不能共同使用
6、exports文件配置实例
• 配置NFS服务器输出的共享目录
输出“/home/share”目录,对所有主机可读,对地址为192.168.1.19的主机可读可写
输出“/home/pub”目录,对192.168.152.0子网内的所有主机可读
# cat /etc/exports
7、NFS服务器的启动与停止
• 查询服务器的状态
为了保证NFS服务器能够正常工作,系统中需要运行portmap和nfs两个服务程序
# service portmap status
# service nfs status
• 启动服务器 :# service portmap start
# service nfs start
• 停止服务器运行:# service nfs stop
8、showmount命令
• showmount命令的帮助信息
showmount命令用于查询显示NFS服务器的相关信息 :# showmount --help
• 显示主机的NFS服务器信息
显示当前主机中NFS服务器的连接信息:# showmount
显示指定主机中NFS服务器的连接信息:# showmount 192.168.152.131
• 显示NFS服务器的输出目录列表
显示当前主机中NFS服务器的输出列表 :# showmount -e
显示指定NFS服务器中的共享目录列表:# showmount -e 192.168.152.131
• 显示NFS服务器中被挂载的共享目录
显示当前主机NFS服务器中已经被NFS客户机挂载使用的共享目录
# showmount -d
• 显示NFS服务器的客户机与被挂载的目录
显示当前主机中NFS服务器的客户机信息 :# showmount -a
显示指定主机中NFS服务器的客户机信息 :# showmount -a 192.168.152.131
9、exportfs命令
• 重新输出共享目录
使nfs服务器重新读取exports文件中的设置 :# exportfs -rv
• 停止输出所有目录
停止当前主机中NFS服务器的所有目录输出 :# exportfs -auv
• 输出(启用)所有目录
输出当前主机中NFS服务器的所有共享目录 :# showmount -e
10、启动NFS服务器配置工具 :$ system-config-nfs
阶段总结
NFS是进行文件共享的网络协议
在RHEL4系统中NFS服务器程序和管理工具是默认安装的
NFS服务器通过exports文件配置共享目录输出和目录的访问权限
showmount命令用于查询显示NFS服务器的相关信息
exportfs命令用于对“exports”文件设置的共享目录进行管理
11、Linux客户端挂载NFS文件系统
• 显示NFS服务器的输出 :# showmount -e 192.168.152.131
• 挂载NFS服务器中的共享目录 :# mount -t nfs 192.168.152.131:/home/share/ /mnt/
12、卸载NFS文件系统
• 显示当前主机挂载的NFS共享目录
使用mount命令查看:# mount | grep nfs
• 卸载系统中已挂载的NFS共享目录
使用umount命令卸载NFS文件系统:# umount /mnt/
13、系统启动时自动挂载NFS文件系
将NFS的共享目录挂载信息写入“/etc/fstab”文件,可实现对NFS共享目录的自动挂载
# tail -1 /etc/fstab
14、在Windows中使用NFS客户端
• Windows操作系统中可以通过安装NFS客户端软件实现对NFS服务器的访问
• Omni Lite
Omni Lite是比较常用的Windows操作系统中运行的NFS客户端软件
Omni Lite是商业软件,可以下载并进行试用
Omni Lite可以运行于Windows 95之后的所有Windows操作系统
Omni Lite的试用期限为15天
15、Omni Lite使用步骤
• 启动NFS Client程序
• 设置NFS服务器主机记录
• 定义NFS驱动器的连接
• 挂载NFS驱动器
• 使用NFS网络驱动器
• 卸载NFS驱动器
16、Omni Lite的运行与配置
启动NFS Client程序
在Windows操作系统中选择“开始”=〉“程序”=〉“Omni-Lite V4.13”菜单,并选择“NFS Client”程序项启动NFS客户端程序
阶段总结
在Linux系统中使用mount命令可以将NFS服务器中的共享目录挂载到文件系统中
Linux系统中已挂载的NFS文件系统可通过挂载点目录进行访问
在Windows系统中需要安装第三方的软件实现NFS服务器共享目录的访问
Omni Lite是Windows下较常用的NFS客户端软件
Omni Lite通过将NFS共享目录映射为Windows中的网络驱动器来访问NFS服务器
第9章 动态地址分配服务和网络信息服务
1、DHCP的基本概念
• DHCP是进行动态主机配置的网络协议
• DHCP协议可以在Linux和Windows系统中实现
• DHCP网络服务的结构中具有服务器和客户机两个角色
• DHCP服务器用于为网络中所有的DHCP客户机提供网络配置信息
• DHCP客户机向DHCP服务器发出配置请求,并按照服务器返回的信息进行网络配置
2、DHCP服务能够提供的配置信息
• 网络接口的IP地址和子网掩码
• 网络接口IP地址对应的网络地址和广播地址
• 缺省网关地址
• DNS服务器地址
3、安装DHCP服务器软件
• RHEL4系统的安装光盘中包括RPM格式的DHCP服务器软件包
• 安装包文件在RHEL4的第4张安装光盘中
# rpm -ivh dhcp-3.0.1-12_EL.i386.rpm
4、dhcpd.conf配置文件
• dhcpd服务器的主配置文件是:/etc/dhcpd.conf
• dhcpd.conf文件默认不存在,需要手工建立
• 系统中提供了配置文件样例可供参考:/usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample
• dhcpd.conf的手册页提供了详细的配置说明:# man dhcpd.conf
5、dhcp.conf配置文件的基本格式
• 声明用来描述dhcpd服务器中对网络布局的划分,是网络设置的逻辑范围
subnet 192.168.1.0 netmask 255.255.255.0 {
……
}
• 参数由设置项和设置值组成: default-lease-time 21600;
: max-lease-time 43200;
• 选项由“option”关键字引导
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
6、dhcpd.conf中的全局设置
全局设置作用于整个配置文件
7、使用subnet声明设置子网属性
subnet声明用于在某个子网中设置动态分配的地址和网络属性
8、使用host声明设置主机属性
host用于对单个主机的网络属性进行声明,通常用于为主机(服务器)分配固定使用的IP地址
9、多网络接口时需要配置的文件
• 主机拥有多个网络接口时需要在文件中指定提供dhcp服务的网络接口
在/etc/sysconfig/dhcpd文件中设置
DHCPDARGS=
为
DHCPDARGS=eth0
eth0是提供dhcp服务的网络接口名称
10、dhcpd服务的启动与停止
• dhcpd服务的启动脚本;/etc/init.d/dhcpd
• 启动dhcpd服务:# service dhcpd start
• 停止dhcpd服务:# service dhcpd stop
• 重新启动dhcpd服务;# service dhcpd restart
11、查看dhcpd服务器的状态
• 使用启动脚本查看服务器状态:# service dhcpd status
• 查看dhcpd服务器的租约文件
租约文件dhcpd.leases中记录了DHCP服务器向DHCP客户机提供租用的每个IP地址的信息
# tail -7 /var/lib/dhcp/dhcpd.leases
12、DHCP客户端配置
• 设置网络接口文件:# cat /etc/sysconfig/network-scripts/ifcfg-eth0
• 重新启动网络接口:# ifdown eth0 ; ifup eth0
阶段总结
DHCP服务器可向DHCP客户机提供IP地址、缺省网关地址等配置信息
RHEL4系统中包括dhcpd服务器的安装包,需要手工进行安装
dhcpd服务器的主配置文件是dhcpd.conf
dhcpd.conf文件中包括声明、参数和选项三类设置内容
Linux系统作为DHCP客户机需要设置网络接口配置文件,并重新启动网络接口
第10章 SAMBA文件共享服务
1、Windows文件共享与Samba服务器
Windows文件共享
Windows主机之间使用SMB/CIFS网络协议实现文件和打印资源的共享
Windows无法与UNIX/Linux主机之间实现资源共享
Samba服务器
Samba服务器在UNIX系统中实现了SMB/CIFS协议
通过Samba服务可以实现UNIX/Linux主机与Windows主机之间的资源互访
2、Samba服务器的服务程序
Samba服务器包括两个服务程序
Smbd:smbd服务程序为客户机提供了服务器中共享资源(目录和文件等)的访问
Nmbd:nmbd服务程序提供了NetBIOS主机名称的解析,为Windows网络中域或者工作组内的主机进行主机名称的解析
3、Samba服务器的安装
RHEL4中缺省安装了Samba相关的软件包
samba-common软件包中提供了Samba服务器和客户机中都必须使用的公共文件
samba软件包中包括了Samba服务器程序的所有文件
samba-client软件包中提供了Samba客户机的所有文件
system-config-samba软件包中提供了Red Hat公司专门为Samba服务器管理编写的图形界面的管理程序,该程序是Red Hat系统管理工具中的一部分
4、smb.conf配置文件
smb.conf
Samba服务器的主配置文件是smb.conf,保存在目录“/etc/samba/”中
文件中注释行使用“#”开始,是对配置内容的说明文字
样例行使用“;”开始,是对配置内容的举例
查看smb.conf有效配置的命令:# grep -v "^#" /etc/samba/smb.conf |grep -v "^;"
5、smb.conf中的全局配置
smb.conf中的[global]
[global]
workgroup = MYGROUP 设置Samba服务器所在的工作组的名称,为“MYGROUP”
server string = Samba Server 设置Samba服务器的说明文字,用于描述Samba主机
log file = /var/log/samba/%m.log 设置Samba服务器的日志文件,表示所有设置文件都保存在“/var/log/samba/”目录中,使用Samba服务器的每个客户机的日志分别进行保存在与客户主机同名的“%m.log”文件中,“%m”变量表示客户端主机的名称
max log size = 50 设置日志文件的最大容量,默认为“50”,表示50KB;
security = usersecurity 设置Samba服务器的缺省安全级别为“user”,表示需要经过Samba服务器的用户认证后才能够访问服务器中的资源
6、Samba服务器的安全级别
smb.conf中security的配置
security值 含义
share 表示用户不需要账户及密码即可登入Samba服务器
user 表示由提供服务的Samba服务器负责检查账户及密码(Samba默认的安全等级)
server 表示检查账户及密码的工作指定由另一台Windows服务器或Samba服务器负责
domain 表示指定Windows域控制服务器来验证用户的账户及密码
7、用户目录共享设置
smb.conf中的[home]
[homes]共享目录不特指某个目录,而是表示Samba用户的宿主目录
[homes]
comment = Home Directories comment用于设置共享的说明信息
browseable = no browseable设置为no表示所有Samba用户的宿主目录不能被看到,只有登录用户才能看到自己的宿主目录共享;这样加强了Samba服务器的安全性
writable = yes writable设置为yes表示用户对该共享目录写入
8、Samba用户帐号
Samba帐号管理
a、Samba用户帐号使用独立的smbpasswd文件保存用户的帐号和加密口令信息
b、Samba服务器中的用户帐号应该具有与其同名的Linux系统用户帐号,因为c、Samba用户是使用同名的系统帐号身份访问Linux系统资源(文件和目录)的
c、Samba用户的口令和同名系统用户的口令是独立的,可以相同或不同,需要分别进行维护和更改
d、当Samba用户不需要登录Linux系统时,同名的系统用户帐号可不设置口令
Samba服务器的用户帐号
Samba服务器的用户帐号文件保存在“/etc/samba/”目录中,文件名称是“smbpasswd”
初始状态“smbpasswd”文件不存在,在第一次使用smbpasswd命令创建Samba用户时将自动建立
“smbpasswd”文件中同时保存有用户帐号和用户密码,因此该文件只对root用户有读写权限
smbpasswd命令
smbpasswd命令用于维护Samba服务器的用户帐号
添加Samba用户帐号:# smbpasswd -a sambauser
禁用Samba用户帐号 :# smbpasswd -d sambauser
启用Samba用户帐号 :# smbpasswd -e sambauser
删除Samba用户帐号 :# smbpasswd -x sambauser
9、共享目录配置实例
公共共享目录配置要求
在smb.conf中添加名为[public ]共享目录
公共共享目录的路径是“/home/public”
任何Samba的用户都可以访问公共目录并对目录具有读写权限
任何用户在公共目录中都以Linux中“nobody”系统用户的身份出现,即在公共目录中任何用户建立的文件都属于“nobody”系统用户
smb.conf中添加的配置内容
[public]
path = /home/public path用于设置共享目录对应的Linux系统目录
public = yes public设置为yes表示该共享目录对于所有Samba用户可见
only guest = yes “only guest”设置为yes表示所有用户在使用该共享目录时的用户身份都是“guest”,即Linux系统用户“nobody”
writable = yes writable设置为yes表示该共享目录对于用户可写
10、配置文件语法检测服务启动
测试smb.conf文件的内容
testparm命令是配置文件测试工具,可以对smb.conf配置文件的语法进行检测,并显示当前配置的清单
# testparm
11、启动Samba服务器
启动脚本文件:/etc/init.d/smb
启动服务命令:# service smb start
查询服务状态:# service smb status
停止服务命令:# service smb stop
12、smbclient命令
smbclient是Samba服务器的命令行方式的登录客户端,使用的形式类似telnet和ftp命令
显示指定Samba服务器中的共享资源列表 :# smbclient -L 192.168.1.2
以指定用户身份登录到指定服务器的指定共享目录
# smbclient //192.168.1.2/st02 -U st02
• “//192.168.1.2/st02”表示服务器“192.168.1.2”中的共享目录“st02”
• “-U st02”表示以Samba用户“st02”的身份进行登录
13、smbstatus命令
smbstatus命令用于显示当前主机中的Samba服务器的连接状态信息
显示信息包括连接服务器的每个Samba客户端的IP地址、主机名称、登录用户名、锁定的文件等
# smbstatus
14、smbmount命令
smbmount
smbmount命令用于将Samba共享目录挂载到Linux文件系统中
# smbmount //192.168.1.2/public /mnt
mount命令
使用“-t”命令选项指定文件系统类型为“smbfs”,
使用“-o”选项设置使用指定用户帐号
# mount -t smbfs -o username=st02 //192.168.1.2/public /mnt
卸载smb文件系统:# umount /mnt/
阶段总结
Windows主机之间使用SMB/CIFS协议进行文件和打印的共享
Samba服务器在Linux /UNIX系统中实现了SMB/CIFS协议
Samba服务器需要运行smbd和nmbd两个服务程序
配置文件smb.conf是Samba服务器配置的核心
使用smbclient和smbmount客户端命令可以连接使用Samba服务器中的共享目录
15、Linux主机访问Windows共享目录
使用Samba客户端软件访问Windows共享
在Linux系统中使用Samba客户软件访问Windows共享目录与访问Samba服务器的方法相同
使用smbclient登录共享目录:# smbclient //192.168.1.123/share -U osmond
使用mount命令挂载共享目录:
# mount -t smbfs -o username=osmond //192.168.1.123/share /mnt
16、Samba Web 管理工具
使用swat管理Samba服务器
swat管理工具以Web界面的形式提供了对Samba服务器的管理功能
swat的安装
swat软件包位于REHL4系统的第4张安装光盘,系统默认没有安装,需要使用rpm命令手工进行安装
# rpm -ivh samba-swat-3.0.10-1.4E.i386.rpm
设置swat的启动状态
# chkconfig swat on
# service xinetd restart
17、访问swat管理界面
swat对客户端的访问控制
文件“/etc/xinetd.d/swat ”中设置了允许访问swat服务的客户主机的IP地址,可根据管理需求进行更改
only_from = 192.168.1.122
swat的访问地址
在允许访问swat的客户机中使用网页浏览器登录swat
swat服务使用“901”号端口
http://192.168.1.2:901/
访问swat服务需要使用root用户帐号进行登录
18、swat自动完成的工作
swat中的操作将修改smb.conf配置文件
在swat界面中的进行的操作将自动保存在smb.conf配置文件中
# tail -2 /etc/samba/smb.conf
[Document]
path = /usr/share/doc/
swat中进行的操作会即时生效,不需要手工执行smb脚本重新启动服务程序
阶段总结
Windows主机可以将Samba服务器主机作为文件服务器,访问其中的共享文件
Linux主机使用Samba客户端软件可以访问Windows主机中的共享文件
swat服务程序提供了Web界面的Samba服务器管理功能
通过swat提供的Samba服务器管理界面,可以方便的对Samba服务器进行配置管理
第11章 FTP服务器
1、FTP服务器及基本原理
• FTP服务的基本概念
FTP是用于进行文件传输的网络协议
FTP服务中分为服务器和客户机两个角色
• FTP服务器的传输模式
主动模式:由服务器主动连接客户机建立数据链路
被动模式:FTP服务器等待客户机建立数据链路
• FTP服务器使用的端口
21端口用于与客户机建立命令链路
在主动模式下服务器使用20端口向客户机建立数据链路
2、主动模式的连接过程
1:FTP客户机由大于1024的N端口向FTP服务器的21端口发出请求建立命令链路
2:FTP服务器由21端口向FTP客户机的N端口回应,确认建立命令链路
3:FTP服务器由20端口向FTP客户机的N+1端口主动建立数据链路连接
4:FTP客户机由N+1端口向FTP服务器的20端口回应,确认数据链路的建立
3、被动模式的连接过程
1:FTP客户机由大于1024的N端口向FTP服务器的21端口发出请求建立命令链路
2:FTP服务器由21端口向FTP客户机的N端口回应,确认建立命令链路
3:FTP服务器会通过已建立的数据链路通知客户机自己已经打开了大于1024的端口M,用于建路数据链路;当需要传输数据时,FTP客户机会通过N+1端口向FTP服务器的M端口请求建立数据链路
4:FTP服务器在M端口监听到FTP客户机的连接请求后,将从M端口向FTP客户机的N+1端口确认数据链路的建立
4、常用FTP服务器软件
• Windows下常用的FTP服务器软件
IIS具有FTP服务器的功能
Serv-U是流行的FTP服务器软件
• Linux下的FTP服务器
Wu-ftpd出现较早,运行稳定,安全性稍差
Proftpd在配置文件和安全性方面有很大改进
vsftpd着重强调服务的安全性,运行效率也很高
• vsftpd服务器是本章学习的重点
5、ftp命令作为FTP客户端
ftp命令是最基本的FTP客户端软件
在Linux和Windows系统中都默认提供ftp命令
ftp命令的交互环境中使用命令对FTP服务器进行操作
ftp中很多命令与Bash中的命令类似
binary设置传输二进制文件,ascii设置传输文本文件
get命令用于下载文件,put命令用于上传文件
mget和mput用于一次下载或上传多个文件
bye命令可退出ftp命令交互环境
6、FTP客户端软件
• FTP客户端软件的特点
运行在图形环境下的窗口程序
可使用鼠标和通过菜单进行操作
用户界面友好,操作方便
• 常用FTP客户端软件
CuteFTP是Windows下流行的商业软件
Filezilla是Windows下运行的开源软件
gftp是Linux中GNOME桌面环境中运行的FTP客户端软件,是GNOME的重要组成部分
7、安装vsftpd
• vsftpd的安装需要注意以下几点
RHEL4系统中默认没有安装vsftpd服务器
vsftpd服务器的安装文件位于第1张安装光盘中
安装文件名称是vsftpd-2.0.1-5.i386.rpm
使用rpm命名可顺利安装该软件包
# rpm -ivh vsftpd-2.0.1-5.i386.rpm
8、vsftpd.conf配置文件
• vsftpd.conf是vsftpd服务器的主配置文件:/etc/vsftpd/vsftpd.conf
• 配置文件中所有的配置项都有相同的格式:anonymous_enable=YES
• 配置文件中的注释行以“#”开始
• 配置文件的详细帮助信息可查询手册页:# man vsftpd.conf
9、vsftpd服务器的缺省配置
• vsftpd.conf文件中的缺省配置为:
anonymous_enable=YES 设置为“YES”时FTP服务器允许匿名登录
local_enable=YES 设置为“YES”时允许本地用户登录
write_enable=YES 设置为“YES”时FTP服务器开放对本地用户的写权限
local_umask=022 local_umask设置项设置本地用户的文件生成掩码
dirmessage_enable=YES 设置为“YES”时当切换到FTP服务器中的某个目录时,将显示该目录下的.message隐含文件的内容
xferlog_enable=YES 设置为“YES”时FTP服务器将启用上传和下载日志
connect_from_port_20=YES 设置为“YES”时FTP服务器将启用FTP数据端口的连接请求
xferlog_std_format=YES 设置为“YES”时FTP服务器将使用标准的ftpd xferlog日志格式
pam_service_name=vsftpd pam_service_name设置PAM认证服务的配置文件名称
userlist_enable=YES 设置为“YES”时FTP服务器将检查userlist_file设置文件中指定的用户是否可以访问vsftpd服务器
listen=YES listen设置为“YES”时FTP服务器将处于独立启动模式
tcp_wrappers=YES设置为“YES”时FTP服务器将使用tcp_wrappers作为主机访问控制方式
10、vsftpd.ftpusers文件
• vsftpd.ftpusers用于保存不允许进行FTP登录的本地用户帐号
# head -5 /etc/vsftpd.ftpusers
• vsftpd.ftpusers文件中可禁止高权限本地用户登录FTP服务器,提高了系统的安全性
11、vsftpd.user_list文件
• vsftpd.user_list文件具有对vsftpd服务器更灵活的用户访问控制
/etc/vsftpd.user_list
• 使用vsftpd.user_list文件需要在主配置文件中进行设置
设置禁止vsftpd.user_list文件中的用户登录
userlist_enable=YES
userlist_deny=YES
设置只允许vsftpd.user_list文件中的用户登录
userlist_enable=YES
userlist_deny=NO
12、匿名用户登录
• vsftpd服务器提供匿名用户登录的功能
匿名用户使用的登录用户名:anonymous
ftp
匿名FTP用户登录的口令通常是使用用户的E-mail地址,在vsftpd中输入任何字符串或直接回车都可以登录
所有匿名用户都登录到相同的目录中:/var/ftp
FTP服务器的匿名登录可用于构建公共的文件下载服务器
13、vsftpd服务的启动和关闭
• 服务器启动脚本
启动脚本名称是vsftpd:/etc/init.d/vsftpd
vsftpd服务需要设置在运行级别3和5自动启动:# chkconfig --level 35 vsftpd on
服务器启动:# service vsftpd start
服务器停止:# service vsftpd stop
服务器状态查询:# service vsftpd status
14、使用ftp命令登录FTP服务器
• ftp命令登录FTP服务器的格式:# ftp 192.168.1.2
• 匿名登录
使用用户名anonymous或ftp
登录的FTP根目录为系统目录“/var/ftp”
• 本地用户登录
使用系统用户帐号和口令登录ftp服务器
登录FTP服务器后的目录为用户宿主目录,用户可转换到系统中的其他目录
15、FTP本地用户帐号的问题
• 使用FTP本地用户帐号存在安全性问题
FTP本地用户使用Linux系统用户帐号,存在安全隐患
使用虚拟帐号替代本地用户帐号可以增强系统的安全性
本地用户登录FTP目录后可从宿主目录转换到其他目录,不是很安全
可以设置将本地用户禁锢在宿主目录中
16、将FTP本地用户禁锢在宿主目录中
在vsftpd.conf文件中添加设置项:chroot_local_user=YES
• 重新启动vsftpd服务:# service vsftpd restart
• 使用ftp客户端验证:本地用户登录FTP服务器后,宿主目录将作为根(/)目录
阶段总结
FTP是进行文件传输的网络协议
FTP服务器和客户机软件在Linux和Windows平台都有多种选择
vsftpd是以安全见长的FTP服务器软件
FTP客户端可以是ftp命令或窗口程序
vsftpd服务使用vsftpd.conf文件进行核心配置
vsftpd服务器的启动脚本是vsftpd
vsftpd默认配置支持匿名用户登录和本地用户登录
17、vsftpd中支持的用户类型
• 匿名用户:使用公共的用户帐号进行登录,通常用于提供公共文件下载服务
• 本地用户:使用Linux系统用户帐号登录,每个用户都使用各自的宿主目录
• 虚拟用户:使用独立的文件保存虚拟帐号,安全性较好,可替代本地用户
18、vsftpd虚拟用户帐号的设置步骤
1. 建立虚拟用户口令库文件
2. 生成vsftpd的认证文件
3. 建立虚拟用户所需的PAM配置文件
4. 建立虚拟用户所要访问的目录并设置相应权限
5. 设置vsftpd.conf配置文件
19、vsftpd虚拟用户配置
• 建立虚拟用户口令库文件
口令库文件中奇数行设置用户名,偶数行设置口令 :# cat logins.txt
• 生成vsftpd的认证文件
使用db_load命令生成认证文件
# db_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db
设置认证文件只对用户可读可写 :# chmod 600 /etc/vsftpd/vsftpd_login.db
• 建立虚拟用户所需的PAM配置文件
手工建立vsftpd.vu文件:# cat /etc/pam.d/vsftpd.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
• 建立虚拟用户及要访问的目录并设置相应的权限
建立所有FTP虚拟用户帐号使用的系统用户帐号,并设置该帐号宿主目录的权限
# useradd -d /home/ftpsite virtual
# chmod 700 /home/ftpsite/
• 设置vsftpd.conf配置文件
在配置文件中添加虚拟用户的配置内容
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu
• 重新启动vsftpd服务程序
对vsftpd.conf文件修改后需要重新启动vsftpd服务程序
# service vsftpd restart
20、测试虚拟用户帐号的FTP登录
使用ftp命令登录FTP服务器
使用已配置的虚拟用户名和口令登录FTP服务器,如能够正常登录说明虚拟帐号配置成功
为了系统的安全,缺省配置的虚拟用户只具有较低的用户权限
可以通过为每个虚拟用户建立独立的配置文件增加用户的权限
21、对虚拟用户设置不同的权限
• 设置主配置文件
在vsftpd.conf文件中添加用户配置文件目录设置
user_config_dir=/etc/vsftpd_user_conf
• 建立用户配置文件目录
使用mkdir命令建立用户配置文件目录
# mkdir /etc/vsftpd_user_conf
为虚拟用户建立单独的配置文件
用户配置文件名称与用户名相同
/etc/vsftpd_user_conf/mike
/etc/vsftpd_user_conf/john
22、虚拟用户配置文件中的配置项
每个FTP虚拟用户都可以独立设置其权限
anon_world_readable_only=NO 表示用户可以浏览FTP目录和下载文件
anon_upload_enable=YES 表示用户可以上传文件
anon_mkdir_write_enable=YES 表示用户具有建立和删除目录的权利
anon_other_write_enable=YES 表示用户具有文件改名和删除文件的权限
23、配置vsftpd服务器中的资源限制
vsftpd服务器中的资源使用可以进行限制
max_clients=100 用于设置FTP服务器所允许的最大客户端连接数,值为0表不限制
max_per_ip=5 用于设置对于同一IP地址允许的最大客户端连接数,值为0表不限制
local_max_rate=500000 设置项用于设置本地用户的最大传输速率,单位bytes/sec,同上
anon_max_rate=200000用于设置匿名用户的最大传输速率,单位bytes/sec,值为0同上
阶段总结
vsftpd服务器中可使用匿名用户、本地用户和虚拟用户三种用户类型
FTP服务器中的虚拟用户与本地用户功能类似,但更加安全
vsftpd服务器中使用虚拟用户需要维护独立的用户口令库文件
vsftpd中的每个虚拟用户可以建立用户配置文件用于设置独立的用户权限
vsftpd中可以限制客户机对服务器资源的使用
第12章 域名服务
1、DNS的作用
域名的正向解析
将主机域名转换为对应的IP地址,以便网络程序能够通过主机域名访问到对应的服务器主机
域名的反向解析
将主机的IP地址转换为对应的域名,以便网络(服务)程序能够通过IP地址查询到主机的域名
2、DNS服务的整体结构
DNS服务体系是一个庞大的分布式数据库
DNS服务采用树型层次结构
全世界的DNS服务器具有共同的根域(.)
对域名的查询是分层次进行的
对域名www.sina.com.cn域名的解析需要依次经过:
• 根(.)域的DNS服务器
• “cn.”域的DNS服务器
• “com.cn. ”域的DNS服务器
• “sina.com.cn.”域的DNS服务器
3、常用国家和地区域名后缀
每个国家和地区都被分配了根域下的顶级域名
域名后缀 表示
.us 代表美国,但是很少使用
.cn 代表中国
.jp 代表日本
.hk 代表中国香港
.tw 代表中国台湾
4、常用机构的域名后缀
按照机构职能的不同,使用不同的域名后缀
域名后缀 表示
.gov 代表政府机构
.com 代表公司企业
.edu 代表教育机构,高校
.net 代表互联网络机构
.org 代表非商业组织
5、BIND服务器安装
RHEL4中包括了BIND服务相关的软件包
bind-libs-9.2.4-2 :提供了实现域名解析功能必备的库文件 ,系统默认安装
bind-utils-9.2.4-2 :提供了对DNS服务器的测试工具程序 ,系统默认安装
bind-9.2.4-2 :BIND服务器软件包,默认没有被安装到RHEL4系统中,需要使用rpm命令手工安装
安装文件位于第4张安装光盘中
# rpm -ivh bind-9.2.4-2.i386.rpm
6、BIND服务器的基本配置
主配置文件
named.conf是BIND服务器的主配置文件:/etc/named.conf
工作目录
“/var/named/” 目录用于保存BIND服务器的域名区域文件
启动脚本
“/etc/init.d/”目录中的named文件是BIND服务的启动脚本用于控制BIND服务器的启动和停止
7、DNS服务器的类型
缓存域名服务器
或称为“惟高速缓存服务器”,主要功能是提供域名解析的缓存
主域名服务器
是特定域所有信息的权威性信息源,对于某个指定域,主域名服务器是惟一存在的;主域名服务器中保存了指定域的区域文件
从域名服务器
不进行特定域信息(区域文件)的权威设置,而是从该域的主域名服务器中获取相应的文件并
8、构建缓存域名服务器
a、安装caching-nameserver软件包
RHEL4系统为配置缓存域名服务器专门提供了名为“caching-nameserver”的软件包
该软件包保存在第1张安装光盘中
# rpm -ivh caching-nameserver-7.3-3.noarch.rpm
b、named.conf中的全局设置
options {
directory "/var/named"; directory设置BIND服务器工作目录,即域名区域文件保存的目录
dump-file "/var/named/data/cache_dump.db"; dump-file设置域名缓存文件保存位置、文件名
statistics-file "/var/named/data/named_stats.txt";
};
c、根区域设置
named.conf中的根区域设置
zone "." IN {
type hint; type设置为hint表示该区域的类型是根区域
file "named.ca"; file用于设置区域文件,根区域文件的名称是“named.ca
};
d、 根区域文件
named.ca是根区域文件,位于“/var/named/ ”目录
e、 localhost正向解析
localhost区域的作用是对主机名称“localhost”和环回地址“127.0.0.1” 进行解析
zone "localhost" IN {
type master; type设置为master表示区域的类型为主服务器
file "localhost.zone"; file设置区域文件名的名字
};
f、 localhost反向解析
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
};
9、构建主域名服务器
a、在named.conf文件中设置域
建立正向解析域
zone "ltest.com" {
type master;
file "ltest.com.zone";
};
建立反向解析域
zone "1.168.192.in-addr.arpa" {
type master;
file "192.168.1.rev";
};
b、建立正向区域文件
/var/named/ltest.com.zone
基本设置
$TTL 86400
@ IN SOA ns1.ltest.com. hostmaster.ltest.com. (
42 ; serial (d. adams)
3H ; “refresh”
15M ; retry
1W ; expiry
1D ) ; minimum
c、添加域名服务器记录
域名服务器记录又称为NS记录,在区域文件中用于设置当前域的DNS服务器名称
@ IN NS ns1.ltest.com.
@ IN NS ns2.ltest.com.
“@”符号在区域文件中代表默认的域(当前域)
d、添加地址记录
地址记录又称为A记录,用于设置主机名到IP地址的对应记录
ns1 IN A 192.168.1.2
ns2 IN A 192.168.1.3
host1 IN A 192.168.1.11
host2 IN A 192.168.1.12
e、添加别名记录
别名记录又称CNAME记录,用于在区域文件中对主机名称设置别名
mail IN CNAME host1.ltest.com.
www IN CNAME host2.ltest.com.
f 、添加邮件交换记录
a) 邮件交换记录又称MX记录,用于设置当前域中提供邮件服务的服务器名称
@ IN MX 5 mail.ltest.com.
g、建立反向区域文件
/var/named/192.168.1.rev
基本设置:内容与正向区域文件中的基本设置相同
域名服务器设置:内容与正向区域文件中的基本设置相同
添加反向地址解析记录
2 IN PTR ns1.ltest.com.
3 IN PTR ns2.ltest.com.
11 IN PTR host1.ltest.com.
12 IN PTR host2.ltest.com.
h、反向解析文件的完整清单
# cat /var/named/192.168.1.rev
$TTL 86400
@ IN SOA ns1.ltest.com. hostmaster.ltest.com. (
42 ; serial (d. adams)
3H ; “refresh”
15M ; retry
1W ; expiry
1D ) ; minimum
@ IN NS ns1.ltest.com.
@ IN NS ns2.ltest.com.
2 IN PTR ns1.ltest.com.
3 IN PTR ns2.ltest.com.
11 IN PTR host1.ltest.com.
12 IN PTR host2.ltest.com.
10、配置文件和区域文件的测试
测试named.conf主配置文件
named-checkconf命令用于对BIND服务器的主配置文件中的配置内容进行检测
# named-checkconf
测试区域文件
named-checkzone命令用于检查区域文件中的语法错误,对正向区域文件和反向区域文件都可以进行检查
# named-checkzone ltest.com /var/named/ltest.com.zone
# named-checkzone 1.168.192.in-addr.arpa /var/named/192.168.1.rev
11、构建从域名服务器
在named.conf文件中设置域
建立正向解析域
zone "ltest.com" {
type slave; type设置为“slave”,表当前DNS服务器是该域的从域名服务器类型
file "slaves/ltest.com.zone" 从域名服务器中的区域文件应设置保存在 “slaves”子目录中,区域文件将从主域名服务器中获取并保存在该目录中
masters { 192.168.1.2 ; }; 使用masters设置主域名服务器的IP地址
};
建立反向解析域
zone "1.168.192.in-addr.arpa" {
type slave;
file " slaves/192.168.1.rev";
masters { 192.168.1.2 ; };
};
检测配置文件和启动named服务
从域名服务器只需要检测配置文件的语法:# named-checkconf
启动从域名服务器:# service named start
查看区域文件
从服务器启动后将从主域名服务器中获得区域文件并保存在指定的目录中
# ls /var/named/slaves/
192.168.1.rev ltest.com.zone
阶段总结
DNS服务器提供主机域名和主机IP地址间进行转换的服务
BIND是UNIX系统中运行的优秀的DNS服务器
RHEL4系统中提供了BIND服务器的RPM安装包
DNS服务器的主配置文件是named.conf
DNS服务器的工作目录是“/var/named”
DNS服务器可分为缓存域名服务器、主域名服务器和从域名服务器三类
12、DNS测试原理
DNS服务器的主要测试方法
设置客户机使用指定的DNS服务器,通过使用网络客户端程序访问主机域名对DNS服务器进行简单的测试
使用nslookup、dig和host等专用工具可以对DNS服务器进行较全面的测试
nslookup命令在Linux和Windows系统中都默认安装,是比较常用的测试工具
13、使用nslookup测试DNS服务器
进入nslookup命令交换环境:# nslookup
>
设置使用指定的DNS服务器:> server 192.168.1.2
测试localhost主机域名的正向解析 :> localhost
测试localhost主机域名的反向解析 :> 127.0.0.1
测试互联网中的域名解析:> www.sina.com.cn
测试ltest.com域中的A记录:> host1.ltest.com
测试ltest.com域中的PTR记录:> 192.168.1.11
测试ltest.com域中的CNAME记录:> www.ltest.com
测试ltest.com域中的NS记录:> set type=ns
> ltest.com
测试ltest.com域中的MX记录:> set type=mx
> ltest.com
设置进行A记录的测试:> set type=a
14、使用dig测试DNS服务器
dig
dig命令的格式
dig命令可以比nslookup命令显示更多的DNS服务器信息
# dig @192.168.1.2 ltest.com
阶段总结
通过网络客户端程序向DNS服务器进行域名查询是最简单的域名服务器测试方法
nslookup、dig和host等程序能够对DNS服务器提供更加全面的测试
nslookup命令可运行在Linux和Windows平台
nslookup命令可以对DNS服务器中的A、PTR、CNAME、NS和MX等各种类型的资源记录进行测试
dig命令可以提供比nslookup更丰富的DNS服务器信息
第13章 邮件服务
1、常用邮件系统
• 公共邮箱:国内:网易邮箱、新浪邮箱
国际:Hotmail、雅虎邮箱、Gmail邮箱
• 邮件服务器:Windows平台:Exchange
UNIX平台:Sendmail、Qmail、Postfix
2、邮件系统的组成
• 邮件系统中的角色
MUA:Mail User Agent ,邮件用户代理
MTA:Mail Transfer Agent ,邮件传输代理
• 邮件协议
邮件发送协议SMTP
Simple Mail Transfer Protocol ,简单邮件传输协议
邮件收取协议
POP3 : Post Office Protocol V3,邮局协议第3版
IMAP4 : Internet Message Access Protocol V4,因特网消息访问协议第4版
3、Sendmail的安装
• Sendmail相关的软件包
Sendmail:Sendmail服务器程序的安装包
m4:包括了配置Sendmail服务器的必要工具
sendmail-cf:包括了重新配置Sendmail服务器的必要配置文件
sendmail-doc:包括了sendmail服务器的说明文档
4、Sendmail的控制启动
• 主机域名的要求
sendmail运行的主机需要具有完整的域名
• sendmail的启动与停止
启动sendmail:# /etc/init.d/sendmail start
停止sendmail:# service sendmail stop
5、Sendmail主要配置文件
• 配置目录
Sendmail的所有配置文件都保存在配置目录中:/etc/mail
• 配置文件
sendmail.cf
Sendmail服务器的主配置文件,手工配置难度很大:/etc/mail/sendmail.cf
sendmail.mc
修改sendmail.mc文件后,通过m4命令可生成新的sendmail.cf配置文件
# m4 sendmail.mc > sendmail.cf
• 配置Sendmail的一般步骤
修改sendmail.mc文件中的设置内容
使用m4命令生成新的sendmail.cf文件
重新启动sendmail服务器程序,使新的配置生效
• 数据库文件
数据库文件的后缀是“.db”:/etc/mail/access.db
数据库文件辅助进行sendmail服务器的配置
数据库文件是通过makemap文件生成的:# makemap hash access.db • 日志文件
maillog日志文件用于记录Sendmail的事件信息
maillog文件保存在“/var/log”目录中:/var/log/maillog
6、Sendmail的常见配置举例
• 实例配置要求
邮件服务器的IP地址为192.168.1.2,主机域名为mail.ltest.com
邮件服务器将为“ltest.com”域中的用户提供邮件服务
邮件服务器具有SMTP用户认证功能
• 域名设置
邮件服务器需要进行域名注册
在ltest.com区域文件中进行A记录和MX记录的设置
@ IN MX 5
mail.ltest.com.
mail IN A
192.168.1.2
• 设置local-host-names文件
local-host-names文件用于设置提供邮件服务的域名
在local-host-names文件中增加“ltest.com”域:# vi /etc/mail/local-host-names
//添加邮件服务器提供邮件服务的域名:ltest.com
• 开启sendmail服务的网络接口
在sendmail.mc文件中设置服务地址:# vi sendmail.mc
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl
//修改为
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl
• 设置SMTP的用户认证
sendmail.mc文件中的配置:# vi /etc/mail/sendmail.mc
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
//去除行首的注释标记“dnl”,修改为
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
启动saslauthd服务程序:# service saslauthd start
• 邮件用户帐号
Sendmail服务器使用Linux系统中的用户帐号作为邮件帐号
建立邮件用户组:# groupadd mailuser
建立邮件用户帐号:# adduser -g mailuser -s /sbin/nologin mike
初始化用户口令:# passwd mike
• 设置邮件别名和邮件群发功能
邮件别名和邮件群发功能使用aliases机制实现
aliases和aliases.db文件:/etc/aliases /etc/aliases.db
aliases文件的记录格式:name: addr_1, addr_2, addr_3, . . .
设置邮件别名:admin: mike
设置邮件群发:testgroup: mike,john
修改aliases文件后更新aliases.db文件:# newaliases
• 访问控制的设置
access.db数据库可实现基于主机地址的访问控制
# cat /etc/mail/access
localhost.localdomain RELAY
localhost RELAY
127.0.0.1 RELAY
access.db数据库默认开启了对邮件服务器本机用户的邮件投递
• 生成sendmail.cf文件:# cd /etc/mail
# m4 sendmail.mc> sendmail.cf
• 重新启动sendmail服务器
当完成对sendmail服务器的配置后,需要重新启动服务程序:
# service sendmail restart
• 验证服务程序启动:# netstat -ntpl | grep 25
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 6835/sendmail: acce
阶段总结
SMTP、POP3和IMAP4是邮件系统中使用的网络协议,可实现邮件的发送和收取
Sendmail服务器的配置文件保存在“/etc/mail”目录中
Sendmail的主配置文件sendmail.cf是由m4命令根据sendmail.mc文件的内容生成的
Sendmail服务器可以配置为具有用户认证功能的MTA服务器,可阻止垃圾邮件的发送
7、安装dovecot 服务器
• RHEL4中安装dovecot服务器
dovecot服务器可实现POP3和IMAP4服务
dovecot服务器没有被缺省安装
dovecot需使用应用程序管理工具安装
# system-config-packages
8、设置dovecot服务器
• dovecot配置文件
dovecot服务器的配置文件保存在“/etc”目录下:/etc/dovecot.conf
• 开启dovecot 的pop3服务
修改dovecot.conf文件:# vi /etc/dovecot.conf
//将以下配置行:#protocols = imap imaps
//修改为:protocols = imap imaps pop3
9、启动dovecot服务程序
• 使用脚本启动dovecot服务
对dovecot.conf配置文件进行设置后,需要重新启动dovecot服务程序
# service dovecot restart
• 设置dovecot服务的启动状态
设置dovecot的启动状态:# chkconfig --level 35 dovecot on
• 验证dovecot服务启动
使用netstat命令查看dovecot已经监听110端口:# netstat -ntpl | grep 110
10、使用邮件客户端
• 在OutLook Express中设置邮件帐号
对于用户mike需要设置邮件帐号为[email protected]
SMTP服务器设置为mail.ltest.com
POP3服务器设置为mail.ltest.com
11、安装配置OpenWebmail
• 修改系统的selinux设置
在安装OpenWebmail之前需要先禁用系统中的SELinux功能
# vi /etc/sysconfig/selinux
//将配置行:SELINUX=enforcing
//修改为:SELINUX=disabled
在对selinux配置文件进行修改后,需要重新启动系统才能够使新的设置生效
# init 6
• 下载OpenWebmail所需的文件
OpenWebmail及相关软件包不包括在RHEL4中,需单独获得
openwebmail-2.51-1.i386.rpm
perl-CGI-SpeedyCGI-2.22-1.2.el4.rf.i386.rpm
perl-Compress-Zlib-1.34-1.2.el4.rf.i386.rpm
perl-suidperl-5.8.5-12.1.i386.rpm
perl-Text-Iconv-1.4-1.2.el4.rf.i386.rpm
• 安装OpenWebmail软件包
使用rpm命令安装openwebmail及相关软件包
# rpm -ivh perl*.rpm
# rpm -ivh openwebmail*.rpm
• 建立dbm.conf文件
OpenWebmail需要建立 “dbm.conf” 配置文件
# vi /var/www/cgi-bin/openwebmail/etc/dbm.conf
dbm_ext .db
dbmopen_ext .db
dbmopen_haslock no
• 初始化OpenWebmail系统
执行openwebmail-tool.pl程序对OpenWebmail系统进行初始化
# /var/www/cgi-bin/openwebmail/openwebmail-tool.pl --init
12、通过Web服务器发布Webmail
• 启动Apache服务器
访问OpenWebmail之前需要先启动httpd服务程序:# service httpd start
• 访问OpenWebmail的界面
在客户端主机中使用网页浏览器访问OpenWebmail
http://mail.ltest.com/cgi-bin/openwebmail/openwebmail.pl
13、管理OpenWebmail应用系统
• OpenWebmail的配置文件
通过openwebmail.conf文件进行配置
/var/www/cgi-bin/openwebmail/etc/openwebmail.conf
• 修改配置文件中的设置项
设置邮件系统域名和中文界面显示
# vi /var/www/cgi-bin/openwebmail/etc/openwebmail.conf
//完成以下设置行的修改
domainnames ltest.com
default_language zh_CN.GB2312
default_iconset Cool3D.Chinese.Simplified
• 验证对OpenWebmail的设置
重新登录OpenWebmail将变为中文显示界面
• OpenWebmail中的个人设置
对于单个用户可以在界面中进行个人属性的设置
14、OpenWebmail中设置邮件过滤
• 设置邮件过滤
登录OpenWebmail界面后,默认的工作区为“收件箱”
选择“邮件规则”图标进入“编辑邮件过滤规则”界面
• 邮件过滤规则
邮件过滤规则属性:规则优先级、过滤条件、字符串、操作动作、目的邮件夹
公共过滤规则:公共过滤规则是只读的,不能进行修改和删除
自定义规则:用户可以根据实际需求进行邮件过滤规则的自定义
阶段总结
• dovecot服务器缺省不提供pop3服务,需要在配置文件中进行设置
• 在邮件客户端软件中需要配置用户邮件帐号、SMTP服务器地址和POP3服务器地址等信息后,才能够正确的收发邮件
• OpenWebmail应用系统的运行需要Perl环境和Apache服务器的支持
• 通过OpenWebmail提供的操作界面,邮件用户可以登录自己的邮箱进行邮件的阅读和发送,并对邮箱进行管理操作
第14章 网络服务
1、Apache服务器的起源
Apache是著名的开源软件项目
Apache是著名的Web服务器软件
Apache名称的原型为A Patchy Server
Apache项目由Apache软件基金会(ASF)负责管理和开发
2、Apache的主要特点
Apache服务器的特点
开放源代码
跨平台应用,可运行于Windows和大多数UNIX/Linux 系统
支持Perl、PHP、Python和Java等多种网页编程语言
采用模块化设计
运行非常稳定
具有相对较好的安全性
3、Apache的版本分支
Apache服务器的两个版本分支
Apache服务器目前同时维护1.X和2.X两个版本分支
1.X:目前最高版本是1.3,系统运行稳定、缺乏一些较新的功能
2.X:具有新的功能特性、与1.X的配置存在较大差别、没有1.X运行稳定
4、Apache的RPM包安装
Apache的RPM软件包
RHEL4系统中包括Apache服务器的RPM软件包
httpd软件包:是Apache服务器的程序软件包
httpd-manual软件包:是Apache服务器的手册文档
Apache服务器RPM安装后的目录和文件
目录或文件 描述
/etc/httpd/ Apache服务器的根目录
/etc/httpd/conf/httpd.conf Apache服务器的主配置文件
/var/www/html/ Apache服务器的文档根目录
/etc/init.d/httpd Apache服务器的启动脚本文件
/var/log/httpd/access_log Apache服务器的访问日志文件
/var/log/httpd/error_log Apache服务器的错误日志文件
5、Apache编译安装
编译安装的优点
具有较大的自由度,功能可定制
可及时获得新版本
普遍适用于大多数Linux版本
获得Apache服务器的源码包
从Apache的官方网站下载源码包:http://httpd.apache.org/download.cgi
源码包文件:httpd-2.0.59.tar.gz
确认Linux系统中的编译环境
编译安装需要系统中具备gcc等编译工具
可使用图形界面的软件包管理程序安装完整编译环境 :# system-config-packages
编译安装的步骤
释放源码包文件
编译前的配置
编译服务器程序
安装已编译完成的程序
编译步骤操作
使用tar命令释放源代码安装包 :# tar zxvf httpd-2.0.59.tar.gz
使用./configure命令进行编译前的配置工作
# ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite
使用make命令进行程序的编译 :# make
使用make install命令将已经编译的文件安装到系统中:# make install
6、Apache服务器的目录结构
“/usr/local/apache2/”目录中的子目录
子目录 描述
bin 保存Apache服务器运行和管理所需的执行程序
lib 保存Apache服务器运行所需的库文件
conf 保存Apache服务器的配置文件
htdocs Apache服务器的文档根目录
manual 保存Apache服务器的帮助手册文件(网页格式)
man 保存Apache服务器的手册页文件
logs 保存Apache服务器的日志文件
7、Apache服务器的启动和停止
使用apachectl脚本控制服务程序
apachectl脚本文件:/usr/local/apache2/bin/apachectl
启动httpd服务程序 :apachectl start
重新启动httpd服务程序 :apachectl restart
停止httpd服务程序运行 :apachectl stop
测试httpd.conf的语法 :apachectl -t
8、httpd.conf配置文件解析
httpd.conf配置文件的结构
注释行以“#”开始
不以“#”开始的行是配置文件中真正有效的设置内容
获得完整的有效配置清单
使用grep命令去除文件中以#开始的行:grep -v "^#" conf/httpd.conf
httpd.conf中的全局配置
设置项 说明
ServerRoot 设置Apache服务器的根(Root)目录
ServerAdmin 设置Apache服务器管理员的E-mail地址
ServerName 设置Apache服务器的主机名
DocumentRoot 设置Apache服务器网页(文档)根目录
Listen 设置Apache服务器监听的网络端口号
PidFile 设置保存httpd服务器程序进程号(PID)的文件
设置项 说明
ErrorLog 设置Apache服务器中错误日志文件的路径和文件名
CustomLog 设置Apache服务器中访问日志文件的路径和格式类型
Timeout 设置Web服务器与浏览器之间网络连接的超时秒数
KeepAlive 设置为Off时服务器不使用保持连接功能,传输的效率比较低;设置为On时,可以提高服务器传输文件的效率,建议设置保持连接功能有效
MaxKeep
AliveRequests 当KeepAlive为On时,设置客户端每次连接允许请求响应的最大文件数 ,默认设置为100个文件
httpd.conf中的区域设置
除全局设置外,httpd.conf文件中的大多数设置都是包括在“区域”中的
:使用定义根区域的开始
Options FollowSymLinks
AllowOverride None
:使用定义根区域的结束
9、建立系统用户的个人主页
httpd.conf文件配置
在httpd.conf文件中需要进行UserDir的设置:UserDir public_html
用户目录设置
用户宿主目录需设置为其他用户可以进入:$ chmod o+x ~
用户宿主目录中需要建立public_html目录:$ mkdir public_html
public_html目录中需要建立index.html文件
访问用户个人主页:http://192.168.1.2/~st02/
10、域名虚拟主机的配置
httpd.conf文件中添加虚拟主机
NameVirtualHost 192.168.1.2 用于设置域名虚拟主机使用的IP地址
使用和建立在地址“192.168.1.2:80”上的虚拟主机区域
ServerName www.ltest.com 使用ServerName设置当前虚拟主机所使用的域名
DocumentRoot /home/ltest.com 设置当前虚拟主机所使用的文档根目录
11、Apache的日志
Apache的两类日志文件
httpd.conf中对日志文件的设置:ErrorLog logs/error_log
:CustomLog logs/access_log common
访问日志文件:用于记录对Apache服务器的访问事件
/usr/local/apache2/logs/access_log
错误日志文件:用于记录Apache服务器中的错误事件
/usr/local/apache2/logs/error_log
阶段总结
Apache是著名的Web服务器软件,可运行在多种操作系统平台
在RHEL4系统中,Apache服务器可采用RPM和源码编译两种方式进行安装
apachectl是Apache服务器的启动脚本程序,可以对httpd服务程序进行启动控制
Apache服务器的主配置文件是httpd.conf,用于对Apache服务器进行功能和性能的配置管理
12、LAMP网页应用架构
LAMP的组成:Linux作为操作系统、Apache作为Web服务器
MySQL作为数据库服务器、PHP/Perl/Python作为编程语言
LAMP的特点
全部组成部分都采用开源软件
适合于构建各种类型的网页应用系统
具有广泛的应用系统支持
13、配置LAMP应用
安装并管理MySQL服务器
获得MySQL软件包:http://dev.mysql.com/downloads/
添加mysql用户和组:# groupadd -g 200 mysql
# useradd -u 200 -g mysql -d /usr/local/mysql/data -M mysql
释放MySQL软件包:# tar zxvf mysql-3.23.58-pc-linux-i686.tar.gz -C /usr/local/
# cd /usr/local/
# ln -s mysql-3.23.58-pc-linux-i686/ mysql
初始化MySQL服务器中的数据库 :# ./scripts/mysql_install_db
启动mysql服务程序:# /usr/local/mysql/bin/safe_mysqld --user=mysql &
设置数据库管理员用户口令
# /usr/local/mysql/bin/mysqladmin -u root password 'myrootpw'
登录数据库:# /usr/local/mysql/bin/mysql -u root
安装并管理PHP环境
获取php源码包:http://www.php.net/downloads.php
释放php源码包:# tar zxvf php-4.4.4.tar.gz -C /usr/local/src/
完成编译前的配置:
# cd /usr/local/src/php-4.4.4
# ./configure --prefix=/usr/local/php4 / 设置php程序的安装路径
> --with-apxs2=/usr/local/apache2/bin/apxs / 设置php为Apache服务器提供的模块的安装位置
> --with-mysql=/usr/local/mysql / 设置mysql服务器程序的安装位置
> --with-config-file-path=/usr/local/php4 设置php程序的配置文件所在的位置
编译并安装php程序:# make; make install
建立php的配置文件:# cp php.ini-dist /usr/local/php4/php.ini
进行Apache服务器中的设置
httpd.conf中对php的配置
LoadModule php4_module modules/libphp4.so
AddType application/x-httpd-php .php
DirectoryIndex index.html index.html.var index.php
停止并再次启动httpd服务程序:# /usr/local/apache2/bin/apachectl stop
:# /usr/local/apache2/bin/apachectl start
测试php网页
建立php测验页: # vi /usr/local/apache2/htdocs/test.php
phpinfo( );
?>
访问测试页:http://192.168.1.2/test.php
安装phpBB论坛系统
获得phpBB安装包:http://www.phpbb.com/downloads.php
释放phpBB安装包:# tar zxvf phpBB-2.0.21.tar.gz -C /usr/local/apache2/htdocs/
设置目录属主和属组:# chown -R nobody:nobody phpBB2/
访问phpBB安装向导页面:http://192.168.1.2/phpBB2/
删除配置目录:# cd /usr/local/apache2/htdocs/phpBB2/
# rm -rf install/ contrib/
访问phpBB论坛首页:http://192.168.1.2/phpBB2/
阶段总结
LAMP环境由Linux、Apache、MySQL和PHP/Perl/Python组成
LAMP环境的构建需要配置Apache、MySQL和PHP进行协同工作
phpBB是典型的LAMP应用,可实现论坛系统的功能
第7章 代理服务器与防火墙
1、应用层代理
应用层代理的基本概念
应用层代理针对特定的网络协议提供代理服务
HTTP代理和FTP代理是应用层代理的典型应用
使用代理服务器可以解决的问题
局域网中的所有主机都可以通过同局域网中具有互联网访问能力的代理服务器主机进行外部网络的访问
代理服务器对已经访问过的内容提供缓存,可有效的减少对外部网络的访问流量,并能够提高频繁访问的页面的访问效率
通过代理服务器可以进行一定程度的访问控制,可以对客户端和被访问页面进行控制
2、代理服务的应用原理
代理服务器工作在TCP/IP的应用层
3、网络层防火墙
网络防火墙软件的主要功能
对进入和流出的IP数据包进行过滤,屏蔽不符合要求的数据包,保证内部网络的安全
提供数据包的路由选择,实现网络地址转换(NAT),从而解决局域网中主机使用内部IP地址也能够顺利访问外部网络的应用需求
防火墙的类型
硬件防火墙是功能专一的硬件设备,价格昂贵
软件防火墙的功能是由计算机中的软件实现的,具有相当大的价格优势
4、网络层防火墙的应用原理
网络防火墙工作在TCP/IP的网络层
5、Linux中代理服务和防火墙的实现
Linux中使用软件实现代理和防火墙功能
使用netfilter/iptables架构实现网络防火墙的基本功能
使用squid服务器软件实现HTTP服务的代理功能
6、Linux防火墙软件的发展与实现
Linux中的防火强功能是由内核实现的
在2.0内核中,网络防火墙的操作工具名称是ipfwadm
在2.2内核中,网络防火墙的操作工具名称是ipchains
在2.4之后的内核中,网络防火墙的操作工具名称是iptables
netfilter与iptables
在Linux的内核中使用netfilter架构实现防火墙功能
iptables是Linux系统中为用户提供的netfilter管理工具,用于实现对Linux内核中网络防火墙的管理
7、iptables规则链
iptables缺省具有5条规则链
8、iptables规则表
iptables缺省具有3个规则表
Filter:用于设置包过滤
NAT:用于设置地址转换
Mangle:用于设置网络流量整形等应用
不同的规则表由不同的规则链组成
Filter:INPUT、FORWARD、OUTPUT
NAT:PREROUTING、POSTROUTING、OUTPUT
Mangle:PREROUTING、POSTROUTING、INPUT、OUTPUT和FORWARD
9、netfilter/iptables的典型应用
netfilter/iptables的典型应用
作为主机防火墙实现外部网络与主机之间的访问控制
作为网络防火墙提供外部网络与内部网络的访问控制
作为网关服务器实现网络地址转换(NAT)功能,实现内部网络通过网关主机共享访问外部网络
netfilter/iptables可以在Linux系统中实现网络防火墙的各种常用功能
10、iptables的软件包组成
RHEL4中的iptables软件包
# rpm -q iptables
iptables-1.2.11-3.1.RHEL4
iptables软件包中的管理命令
iptables是主要管理命令,对网络防火墙功能的管理是通过iptables命令实现的
iptables-save命令可以将当前系统中的防火墙设置进行保存
iptables-restore命令可以将使用iptables-save命令保存的防火墙策略配置恢复到当前系统中
11、iptables服务的启动与停止
iptables服务启动脚本:/etc/rc.d/init.d/iptables
iptables配置文件与策略设置文件
iptables配置文件:/etc/sysconfig/iptables-config
策略设置文件:/etc/sysconfig/iptables
iptables服务的启动与停止
iptables服务缺省自动启动
可通过启动脚本手工启动和停止iptables服务:# service iptables start
12、查看防火墙的基本状态
查询防火墙的状态
使用iptables命令查询防火墙状态:# iptables -L
13、使用iptables命令进行策略设置
iptables命令是对防火墙配置管理的核心命令
iptables命令提供了丰富的功能,可以对Linux内核中的netfilter防火墙进行各种策略的设置
iptables命令的设置在系统中是即时生效的
使用iptables命令手工进行的防火墙策略设置如果不进行保存将在系统下次启动时丢失
14、使用iptables-save命令保存设置
iptables-save命令提供了防火墙配置的保存功能
iptables-save命令缺省只将配置信息显示到标准输出(屏幕)中 :# iptables-save
如果需要将iptables-save命令的输出保存,需要将命令输出结果重定向到指定的文件中:# iptables-save > ipt.v1.0
使用iptables-save命令可以将多个版本的配置保存到不同的文件中
15、使用iptables-restore命令恢复设置
iptables-restore命令可恢复防火墙设置
iptables-restore命令可恢复使用iptables-save命令保存的防火墙设置内容
iptables-restore命令从标准输入或输入重定向文件中获取防火墙的设置内容
# iptables-restore < ipt.v1.0
iptables-restore命令可快速恢复指定版本的防火墙配置
16、使用iptables脚本保存防火墙设置
iptables脚本可以保存当前防火墙配置
在保存防火墙当前配置前应先将原有配置进行备份
# cp /etc/sysconfig/iptables iptables.raw
iptables脚本的save命令可以保存防火墙配置:# service iptables save
配置内容将保存在“/etc/sysconfig/iptables”文件中,文件原有的内容将被覆盖
17、使用防火墙的配置工具
RHEL4中提供了防火墙配置程序
运行防火墙配置工具:# system-config-securitylevel-tui
在防火墙配置工具设置后会即时生效,并将设置保存到“/etc/sysconfig/iptables”文件中
18、iptables命令的使用
iptables命令的操作对象包括
规则表(table)由规则链的集合组成,不同的规则表用于实现不同类型的功能
规则链(chain)由规则的集合组成,保存在规则表中;在规则表中不同的规则链代表了不同的数据包流向
规则(rule)是最基本的设置项,用于对防火墙的策略进行设置;流经某个数据链的数据将按照先后顺序经过规则的“过滤”
iptables中缺省包括3个规则表
filter
nat
mangle
iptables命令可查看规则表的内容
基本语法:iptables [-t table] -[L] [chain] [options]
不指定表名称时查看filter表的内容:# iptables -L
查看指定的规则表:# iptables -t nat -L
清空表中的规则
命令格式:iptables [-t table] -F [chain] [options]
清空filter表中的所有规则:# iptables -F
清空nat表中的所有规则:# iptables -t nat -F
删除表中的自定义规则链
命令格式:iptables [-t table] -X [chain]
添加规则
命令格式:iptables [-t table] -A chain rule-specification [options]
在INPUT规则链中添加规则,允许来自“lo”网络接口中所有数据包
# iptables -A INPUT -i lo -j ACCEPT
在INPUT规则链中添加规则,允许“eth0”网络接口中来自“192.168.1.0/24”子网的所有数据包
# iptables -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT
删除规则
命令格式:iptables [-t table] -D chain rule-specification [options]
删除规则的iptables命令与添加规则的命令格式类似
删除INPUT规则表中已有的规则
# iptables -D INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT
设置内置规则链的缺省策略
命令格式:iptables [-t table] -P chain target [options]
只有内建规则链才能够设置“缺省策略”
将INPUT规则链的缺省策略设置为“DROP”:# iptables -P INPUT DROP
将规则链的缺省策略的缺省策略设置为“DROP”,然后在逐个添加允许通过的规则是比较严谨的规则设置方法
19、防火墙配置实例
设置主机防火墙策略
使用iptables命令设置防火墙策略
# iptables –F 清除filter规则表中的所有规则
# iptables –X 清除filter规则表中的自定义规则链
# iptables –Z 清除filter规则表的计数
# iptables -P INPUT DROP 设置filter表中INPUT规则链的缺省策略为DROP
# iptables -A INPUT -i lo -j ACCEPT 在规则链中添加规则允许来自lo网络接口所有数据包
# iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT 在INPUT规则链中添加规则允许
# iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT 来自eth0网络接口的SSH、WWW
# iptables -A INPUT -i eth0 -p tcp --dport 3128 -j ACCEPT 和SQUID类型的数据包
# service iptables save
设置Linux作为网关服务器
配置需求
• 服务器网接口eth0的IP地址为“192.168.1.1/24”,eth0网络接口与公司的内部网络相连
• 服务器的网络接口ppp0是主机的拨号网络接口,具有公网IP地址
• 局域网中的所有主机都需要通过Linux网关服务器与外部互联网进行通信
关键配置命令
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
“-t nat -A POSTROUTING ”表示在nat表的POSTROUTING规则链中添加规则
“-s 192.168.1.0/24”表示数据包的源地址为“192.168.1.0/24”子网
“-o ppp0”表示数据包的流出网络接口是“ppp0”,“ppp0”网络接口具有公网IP地址
“-j MASQUERADE”表示对数据包进行的处理,即将符合条件的数据包进行IP伪装
阶段总结
代理服务器和网络防火墙工作在不同的协议层
在Linux系统中内核提供包过滤防火墙功能,使用squid服务器实现代理服务器功能
netfilter是Linux内核中的包过滤框架,iptables是对netfilter的管理工具
使用iptables可设置Linux系统实现各种常用的网络防火墙功能
20、squid服务器的功能
squid服务具有以下基本功能
提供对HTTP和FTP协议的代理服务
缓存代理的内容,提高客户端访问网站的速度,并能够节约出口网络流量
对客户端地址进行访问控制,限制允许访问squid服务器的客户机
对目标地址进行访问控制,限制客户端允许访问的网站
根据时间进行访问控制,限定客户端可以使用代理服务的时间
21、squid服务器的代理工作机制
squid服务器具有代理和缓存的基本功能
22、squid服务器的安装
squid服务器在RHEL4系统中已经默认安装 :# rpm -q squid
squid-2.5.STABLE6-3
squid服务的启动状态
squid服务程序在RHEL4中默认不自动启动
需要用chkconfig命令设置squid服务在运行级别3和5中自动启动
# chkconfig --level 35 squid on
23、squid服务启动前的准备
确认主机具有完整的域名
squid服务运行需要Linux主机具有完整的域名:# grep `hostname` /etc/hosts
squid服务器的初始化
在第一次使用squid服务器之前需要先对squid服务器进行初始化工作 :# squid -z
初始的主要作用是在squid服务器的工作目录中建立需要的子目录
# ls /var/spool/squid/
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
24、squid服务的启动与停止
启动脚本
squid服务的启动脚本名称是“squid”:/etc/init.d/squid
启动与停止squid服务
启动squid服务:# service squid start
停止squid服务:# service squid stop
服务端口
squid服务器的缺省服务端口为3128
25、squid服务的配置文件
配置目录
squid具有独立的目录保存配置文件:/etc/squid/
主配置文件
主配置文件squid.conf保存在配置目录中:/etc/squid/squid.conf
squid.conf文件中的配置选项
配置服务端口:http_port 3128
squid.conf文件中的配置选项
缓冲内存数量:cache_mem 8 MB
• “cache_mem”的值设置为服务器物理内存的三分之一比较合适
工作目录 :cache_dir ufs /var/spool/squid 100 16 256
• “cache_dir”设置项的缺省值为设置“/var/spool/squid”作为squid的工作路径,“100 16 256”分别表示,目录中最大的容量是100MB,目录中的一级子目录的数量为16个,二级子目录为“256”个
squid.conf文件中的配置选项
访问控制设置
• “http_access”用于设置允许或拒绝访问控制对象
http_access allow localhost
http_access deny all
访问控制列表(ACL)的定义
• “acl”配置项用于设置访问控制列表的内容
acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1/255.255.255.255
重新启动squid服务
对squid.conf文件修改后需要重新启动服务程序:# service squid restart
26、配置透明代理服务器
配置squid服务器
修改squid.conf配置文件中的设置:# vi /etc/squid/squid.conf
//在配置文件中添加以下的配置行
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
重新启动squid服务器:# service squid reload
设置防火墙策略:# iptables -t nat -A PREROUTING -s 192.168.1.0/24 /
> -p tcp --dport 80 -j REDIRECT --to-ports 3128
“-t nat -A PREROUTING ”表示在nat表的PREROUTING规则链中添加规则
“-s 192.168.1.0/24”表示数据包的源地址为“192.168.1.0/24”子网
“-p tcp”表示数据包的协议为“tcp”,“--dport 80”表示数据包访问的目的端口为“80”,即标准的WWW服务
“-j REDIRECT”表示将符合条件的数据包进行重定向,“--to-ports 3128”表示将数据包重定向到“3128”端口,“3128”端口是squid服务器提供网页代理服务的端口
27、网页浏览器的代理设置
透明代理
如果网关配置为透明代理将不需要在网络浏览器中进行任何的代理设置
使用代理服务器
直接使用squid代理服务器需要在浏览器中进行代理服务器的信息设置
阶段总结
squid是著名的代理服务器软件,可实现HTTP和FTP协议的代理功能
squid服务器的基本功能包括代理服务和内容缓存服务
squid服务器的主配置文件“squid.conf”保存在“/etc/squid”目录中
squid提供代理服务的缺省端口是“3128”
squid服务器可以对代理的内容和客户端进行一定的访问控制
网页浏览器使用代理服务器时需要进行设置