第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服務器可以對代理的內容和客戶端進行一定的訪問控制
網頁瀏覽器使用代理服務器時需要進行設置