- 論壇徽章:
- 0
|
《Red Hat 9系統(tǒng)管理》讀書筆記
作者 張啟峰
Email:
zqf620@gmail.com
啟動(dòng)引導(dǎo)篇
一 GRUB 啟動(dòng)引導(dǎo)器
1.啟動(dòng)引導(dǎo)器(Boot Loader)是計(jì)算機(jī)啟動(dòng)過程中運(yùn)行的第一個(gè)真正的軟件。通常,計(jì)算機(jī)在啟動(dòng)時(shí),通過
BIOS 自檢后讀取并運(yùn)行硬盤主引導(dǎo)扇區(qū)(MBR)中的啟動(dòng)引導(dǎo)器(Boot Loader)程序,啟動(dòng)引導(dǎo)器再負(fù)責(zé)加載和
啟動(dòng)硬盤分區(qū)中的操作系統(tǒng)
2.GRUB 是一個(gè)功能強(qiáng)大的Boot Loader 程序。Red Hat 9 默認(rèn)使用GRUB 作為啟動(dòng)引導(dǎo)器程序
3.可以在GRUB 的啟動(dòng)菜單界面中,對GRUB 的啟動(dòng)菜單項(xiàng)進(jìn)行編輯,具體方法見屏幕提示。在啟動(dòng)菜單項(xiàng)
編輯界面所作的修改只對當(dāng)次啟動(dòng)有效,并不會(huì)保存到GRUB 的配置文件中
4.GRUB 的命令行界面可分為2 類情況:
1) 啟動(dòng)菜單命令行界面: 即在GRUB 啟動(dòng)菜單界面鍵入"e"或"c"鍵而進(jìn)入
2) Shell 程序界面 : 即在Linux shell 下使用"grub"命令而進(jìn)入
5.GRUB 的配置文件-grub.conf
1) grub.conf 文件的默認(rèn)位置是 /boot/grub/grub.conf,由一系列g(shù)rub 命令組成的文本文件
2) GRUB 配置文件包括2 部分: 全局配置、菜單項(xiàng)配置
3) 全局配置: 常見的有default,timeout,splashimg 三個(gè)命令
eg:
default=0 //指定GRUB的默認(rèn)啟動(dòng)菜單項(xiàng)
timeout=10 //指定GRUB菜單界面的停留時(shí)間
splashimage=(hd0,0)/boot/grub/splash.xpm.gz //指定GRUB 的啟動(dòng)畫面
4) 菜單項(xiàng)配置,一個(gè)菜單項(xiàng)對應(yīng)一個(gè)操作系統(tǒng):
1> 用于啟動(dòng)Linux 的菜單項(xiàng)一般使用title,root,kernel,initrd 四條命令。
eg:
title Red Hat Linux (2.4.20-8) //指定菜單項(xiàng)的名稱
root (hd0,0) //指定GRUB的根設(shè)備為Linux 內(nèi)核所在的分區(qū)
kernel /boot/vmlinuz-2.4.20-8 ro root=LABLE=/ //指定要加載的內(nèi)核文件及內(nèi)核啟動(dòng)參數(shù)
initrd /boot/initrd-2.4.20-8.img //指定要加載的內(nèi)核鏡像文件
2> 用于啟動(dòng)Windows 的菜單項(xiàng)一般使用title,[map,]root,[makeactive,]chainloader 這幾條命令。
eg:
title win2000p
map (hd0)(hd1) //交換磁盤或分區(qū)在BIOS 中的標(biāo)識(shí)符,用于啟動(dòng)第二個(gè)硬盤中的Window
map (hd1)(hd0)
root (hd1,0) //指示W(wǎng)indow OS 所在分區(qū),(hd1,0)表示第二個(gè)硬盤第一個(gè)分區(qū)
makeactive //將根設(shè)備設(shè)為活動(dòng)分區(qū),針對于Window 不能從非活動(dòng)分區(qū)啟動(dòng)
chainloader +1 //調(diào)用Window 分區(qū)的啟動(dòng)引導(dǎo)器引導(dǎo)Window 系統(tǒng)
5) GRUB 的安全設(shè)置:
1> 設(shè)置全局口令
設(shè)置全局口令后,不能在GRUB 啟動(dòng)菜單界面中使用"e" "c"命令進(jìn)入命令行界面,除非先用"p"命令解鎖
Usage: 在全局配置之后菜單項(xiàng)配置之前,使用命令: password 口令字符串
2> 使用全局口令鎖定啟動(dòng)菜單項(xiàng):
在GRUB 啟動(dòng)菜單界面中選擇該菜單項(xiàng)時(shí),會(huì)提示輸入口令,只有輸入全局口令后才能啟動(dòng)對應(yīng)的OS
Usage: 先設(shè)置全局口令,然后在要鎖定的菜單項(xiàng)的title 命令之后使用命令 "lock"
3> 為各個(gè)菜單項(xiàng)設(shè)置單獨(dú)的鎖定口令:
與2>類似,只是各個(gè)菜單項(xiàng)可以設(shè)置各自的口令,并不要求先設(shè)置全局口令,但建議先設(shè)置全局口令
Usage: 在要鎖定的菜單項(xiàng)的title 命令之后使用命令: password 口令字符串
4> 使用MD5 加密口令:
在grub.conf 配置文件中口令使用的是明文,容易泄漏?梢允褂胢d5 來加密口令
Usage:
① 在GRUB 的命令行界面下運(yùn)行命令"md5crypt"或在shell 下運(yùn)行命令"grub-md5-crypt"
② 提示輸入口令,輸入口令字符串后,得到該口令字符串對應(yīng)的加密字符串
③ 在使用" password 口令字符串"的地方用"password -md5 加密字符串"代替
6.GRUB 命令參考
1) 菜單命令: 只能用于grub.conf 的全局配置部分的命令
Include: default,fallback,hiddenmenu,timeout,title(用于菜單項(xiàng))
2) 常規(guī)命令: 既可以用于grub.conf 的全局配置部分,又可以用于GRUB 命令行界面的命令
Include: bootp,color,device,dhcp,hide,ifconfig,pager,partnew,parttype,password,rarp,serial
setkey,splashimage,terminal,tftpserver,unhide
3) 命令行和菜單項(xiàng)命令: 既可以用于grub.conf 的菜單項(xiàng)配置,又可以用于GRUB 命令和的命令
Include: blocklist,boot,cat,chainloader,cmp,configfile,debug,displayamp,displaymem,embed,find
fstest,geometry,halt,help,impsprobe,initrd,install,ioprobe,kernel,lock,makeactive
map,md5crypt,module,modulenounzip,pause,quit,reboot,read,root,rootnoverity
savedefault,setup,testvbe,uppermem,vbeprobe
7.一些GRUB 的tips
1) 配置GRUB 重復(fù)上次啟動(dòng)項(xiàng)
可以讓GRUB 在下一次啟動(dòng)PC 時(shí)的默認(rèn)菜單項(xiàng)為本次啟動(dòng)時(shí)選擇的啟動(dòng)項(xiàng)。
Usage: 1> 在grub.conf 配置文件的全局配置部分使用命令"default saved"
2> 在每個(gè)菜單項(xiàng)的末尾都加上命令"savedefault"
2) 制作GRUB 啟動(dòng)盤
Usage: 1> mke2fs /dev/fd0 //Shell下運(yùn)行
2> mount /mnt/floppy
3> grub-install --root-directory=/mnt/floppy/'(fd0)' //安裝GRUB 到軟盤
3) 使用GRUB 啟動(dòng)盤恢復(fù)被覆蓋的MBR
Usage:
1> 用GRUB 啟動(dòng)盤引導(dǎo)PC,進(jìn)入"grub>"提示符界面,這時(shí)GRUB 的root 為 fd0
2> find /boot/grub/grub.conf //查看Linux 內(nèi)核所在的硬盤分區(qū),本例為 (hd0,0)
3> root (hd0,0) //設(shè)置內(nèi)核所在分區(qū)為root(根設(shè)備)
4> setup (hd0) //安裝GRUB 到第一塊硬盤(hd0)
二 Linux 的啟動(dòng)與服務(wù)
1.Linux 的啟動(dòng)過程
1) BIOS 自檢
2) 啟動(dòng)GRUB/LILO
3) 運(yùn)行Linux kernel 并檢測硬件
4) 運(yùn)行Linux 系統(tǒng)的第一個(gè)進(jìn)程init(其PID 永遠(yuǎn)為1,是所有其它進(jìn)程的父進(jìn)程)
5) init 讀取系統(tǒng)引導(dǎo)配置文件 /etc/inittab 中的信息進(jìn)行初始化
1> 執(zhí)行系統(tǒng)初始化腳本- /etc/rc.d/rc.sysinit,執(zhí)行系統(tǒng)初始化(包括很多內(nèi)容)
2> 根據(jù)指定的運(yùn)行級(jí)別(runlevel)來運(yùn)行服務(wù)器腳本程序,再執(zhí)行腳本 /etc/rc.d/rc.local
3> 運(yùn)行一些其他的特別服務(wù),一般為 /sbin/mingetty 和 /etc/X11/prefdm
6) Linux 控制臺(tái)(console)提示用戶輸入用戶名、密碼進(jìn)行登陸。
2.Linux 系統(tǒng)的運(yùn)行級(jí)別(runlevel)
1) Linux 系統(tǒng)有7 個(gè)運(yùn)行級(jí)別,Linux 系統(tǒng)任何時(shí)候都運(yùn)行在一個(gè)指定的運(yùn)行級(jí)別上
. 運(yùn)行級(jí)別0 系統(tǒng)停機(jī)(halt)狀態(tài),系統(tǒng)的默認(rèn)運(yùn)行級(jí)別不能設(shè)為0,否則不能正常啟動(dòng)
. 運(yùn)行級(jí)別1 單用戶工作(single user)狀態(tài),root 權(quán)限,用于系統(tǒng)維護(hù),禁止遠(yuǎn)程登陸
. 運(yùn)行級(jí)別2 多用戶(multiuser)狀態(tài) (沒有NFS)
. 運(yùn)行級(jí)別3 完全的多用戶(multiuser)狀態(tài) (有NFS),登陸后進(jìn)入控制臺(tái)命令行模式
. 運(yùn)行級(jí)別4 系統(tǒng)未使用,保留
. 運(yùn)行級(jí)別5 X11 控制臺(tái) (xdm、gdm、kdm),登陸后進(jìn)入圖形GUI 模式
. 運(yùn)行級(jí)別6 系統(tǒng)正常關(guān)閉并重啟(reboot),默認(rèn)運(yùn)行級(jí)別不能設(shè)為6,否則不能正常啟動(dòng)
2) 不同的運(yùn)行級(jí)別所運(yùn)行的程序和服務(wù)不盡相同,所要完成的工作和要達(dá)到的目的也不相同
3) 運(yùn)行級(jí)別的原理:
1> 在目錄 /etc/rc.d/init.d 下有許多服務(wù)器腳本程序,一般稱為服務(wù)(service)
2> 在 /etc/rc.d 下有7 個(gè)名為 rcN.d 的目錄,其中N=0-6,對應(yīng)于系統(tǒng)的7 個(gè)運(yùn)行級(jí)別
3> rcN.d 目錄下,都是一些符號(hào)鏈接文件,這些鏈接文件都指向 init.d 目錄下的service 腳本文件
這些鏈接文件的命名規(guī)則是 "K+nn+服務(wù)名" 或 "S+nn+服務(wù)名",其中 nn 為2 位數(shù)字
eg: rc3.d 目錄下的鏈接文件 S80sendmail 就指向service 腳本文件 ../init.d/sendmail
4> 系統(tǒng)會(huì)根據(jù)指定的runlevel 進(jìn)入對應(yīng)的 rcN.d 目錄,并按照文件名順序檢索目錄下的鏈接文件
. 對于以K 為開頭的鏈接文件,系統(tǒng)將終止對應(yīng)的服務(wù)
. 對于以S 為開頭的鏈接文件,系統(tǒng)將啟動(dòng)對應(yīng)的服務(wù)
通過這種方式來實(shí)現(xiàn) "不同的運(yùn)行級(jí)別運(yùn)行不同的程序和服務(wù)"
4) 查看系統(tǒng)當(dāng)前的運(yùn)行級(jí)別:
Usage: runlevel
轉(zhuǎn)換系統(tǒng)的運(yùn)行級(jí)別:
Usage: init N //切換到運(yùn)行級(jí)別N
eg: init 0 //關(guān)機(jī)
init 6 //重啟動(dòng)系統(tǒng)
3.系統(tǒng)引導(dǎo)配置文件 /etc/inittab 解析
1) /etc/inittab 是 INIT 進(jìn)程的配置文件,用于描述系統(tǒng)啟動(dòng)時(shí)和正常運(yùn)行中將運(yùn)行哪些進(jìn)程
2) 文件 inittab 中的每一行(除注釋行外)都具有相同的格式:
ID:RUNLEVELS:ACTION:PROCESS // 分為4 個(gè)域,以":"為域分隔符
eg: pr:12345:powerokwait:/sbin/shutdown -c "Power Restored;Shutdown Canclled"
1> ID 字段: 用于唯一的標(biāo)識(shí)文件中一行
2> RUNLEVELS 字段: 指定一個(gè)或多個(gè)運(yùn)行級(jí)別,不能包含任何間隔符
3> ACTION 字段: 指定運(yùn)行狀態(tài),可以有如下的取值:
. respawn 當(dāng)本行下一個(gè)字段指定的命令結(jié)束后,重新運(yùn)行該命令
. wait 執(zhí)行本行下一個(gè)字段指定的命令,并等待其結(jié)束,然后執(zhí)行下一行
. once 執(zhí)行本行下一個(gè)字段指定的命令,不等待其結(jié)束,就開始執(zhí)行下一行
. boot 在系統(tǒng)啟動(dòng)時(shí)執(zhí)行本行下一個(gè)字段指定的命令,并忽略
. bootwait 在引導(dǎo)完成后,執(zhí)行本行下一個(gè)字段指定的命令,并等待其結(jié)束
. off 指示init 撤銷本行下一個(gè)字段指定的命令所對應(yīng)的進(jìn)程
. initdefault 指定首次啟動(dòng)時(shí)所進(jìn)入的運(yùn)行級(jí)別狀態(tài)
. sysinit 在與系統(tǒng)控制臺(tái)通訊時(shí)執(zhí)行本行下一字段指定的命令
. powerwait 在電源出現(xiàn)錯(cuò)誤時(shí)執(zhí)行本行下一字段指定的命令,并等待其結(jié)束
. powerfail 在電源出現(xiàn)錯(cuò)誤時(shí)執(zhí)行本行下一字段指定的命令,不等待其結(jié)束
. powerokwait 當(dāng)電源恢復(fù)時(shí)執(zhí)行本行下一字段指定的命令
. ctrlaltdel 當(dāng)按下Ctrl+Alt+Del 組合鍵時(shí),執(zhí)行本行下一字段指定的命令
4> PROCESS 字段: 用于指定要運(yùn)行的命令
3) 系統(tǒng)初始化腳本-/etc/rc.d/rc.sysinit
1> 在文件 inittab 中第二行一般為: si::sysinit:/etc/rc.d/rc.sysinit
2> rc.sysinit 腳本是專門用于系統(tǒng)初始化的文件。包括檢查、掛載文件系統(tǒng),設(shè)置系統(tǒng)時(shí)鐘,初始化設(shè)備,
加載系統(tǒng)模塊、字體等。
4.Linux 系統(tǒng)服務(wù)
1) Linux 系統(tǒng)服務(wù)程序是由運(yùn)行在后臺(tái)的守護(hù)進(jìn)程(daemon)來執(zhí)行的,系統(tǒng)服務(wù)又稱守護(hù)進(jìn)程
2) Linux 系統(tǒng)服務(wù)程序的啟動(dòng)腳本都放置在目錄 /etc/rc.d/init.d 中
3) 服務(wù)程序的啟動(dòng)和停止
1> 方法1: service_script_file arg
2> 方法2: service_name arg
注: 參數(shù) arg 一般可以是: start|stop|status|restart|reload|condrestart
服務(wù)名 service_name 一般就是該服務(wù)在 init.d 目錄中對應(yīng)的腳本文件名
eg: /etc/rc.d/init.d/xinetd status //查看服務(wù)xinetd 的狀態(tài)
service httpd restart //重啟動(dòng)服務(wù)httpd(Apache 服務(wù)器)
4) 為運(yùn)行級(jí)別指定要啟動(dòng)/停止的服務(wù)
1> 文本用戶界面(TUI)工具:
Usage: ntsysv
. 可以配置所有服務(wù)程序在當(dāng)前運(yùn)行級(jí)別中的啟動(dòng)/停止?fàn)顟B(tài)
2> 命令行界面(CLI)工具:
Usage: chkconfig
. 可以配置所以服務(wù)程序在各個(gè)運(yùn)行級(jí)別中的啟動(dòng)/停止?fàn)顟B(tài)
① 查看所有或指定服務(wù)的啟/停狀態(tài): chkconfig --list [service_name]
② 添加新服務(wù)/刪除指定的服務(wù): chkconfig --
③ 設(shè)置指定服務(wù)在指定運(yùn)行級(jí)別的啟/停狀態(tài):
chkconfig [--level ]
注: levels 是要指定的運(yùn)行級(jí)別,可以是多個(gè)運(yùn)行級(jí)別(不用分隔符)
reset 表示將服務(wù)的啟/停狀態(tài)恢復(fù)到系統(tǒng)的默認(rèn)狀態(tài)
④ 設(shè)置非獨(dú)立服務(wù)(由xinetd 管理的服務(wù))的啟/停狀態(tài):
chkconfig //不需要指定運(yùn)行級(jí)別
3> 舉例:
chkconfig rsync on //rsync 服務(wù)是由xinetd 來管理的服務(wù)
chkconfig --level 24 syslog off //設(shè)置在運(yùn)行級(jí)別2 和4 不啟動(dòng)服務(wù)syslog
chkconfig --list httpd //查詢服務(wù)httpd 在各個(gè)運(yùn)行級(jí)別的啟/停狀態(tài)
三 可插拔認(rèn)證模塊-PAM
1.PAM 概述
1) Linux-PAM,即Pluggable Authentication Modules for Linux
2) PAM 使用一套共享庫,是系統(tǒng)管理員可以選擇應(yīng)用程序如何對用戶進(jìn)行認(rèn)證
3) PAM 的配置文件位于 /etc/pam.d 目錄,每個(gè)需要對用戶進(jìn)行驗(yàn)證的程序在這里都有一個(gè)與它自身名稱相同
的配置文件,文件 /etc/pam.d/other 是通用配置(為所有其它沒有獨(dú)立PAM 配置文件的程序所使用)。
2.PAM 配置文件
1) 應(yīng)用程序的 PAM 配置文件每一行均為如下格式:
type control module_path module_args //以空格為域分隔符
1> type 字段: 認(rèn)證類型,即指示當(dāng)前行的模塊將應(yīng)用于哪種類型的認(rèn)證。PAM 支持4 種類型:
. account 驗(yàn)證用戶帳號(hào)是否被允許訪問服務(wù),如用戶帳號(hào)口令是否過期等
. auth 驗(yàn)證用戶身份,一般為通過口令進(jìn)行驗(yàn)證
. password 提供用戶改變驗(yàn)證身份的機(jī)制,通常為改變口令
. session 在用戶通過驗(yàn)證之前/之后需要進(jìn)行的內(nèi)容(會(huì)話)
2> control 字段: 指示如何應(yīng)對模塊認(rèn)證失敗。PAM 支持4 種類型:
. requisite 當(dāng)前模塊認(rèn)證失敗后,立即拒絕用戶認(rèn)證
. required 如果當(dāng)前模塊認(rèn)證失敗,在拒絕用戶認(rèn)證之前仍調(diào)用接下來的所有其它模塊
. sufficent 如果當(dāng)前模塊認(rèn)證成功,則立即準(zhǔn)予用戶認(rèn)證成功,即使之前的required 類型認(rèn)證失敗。
同時(shí)也不會(huì)再嘗試認(rèn)證其它模塊。如果模塊認(rèn)證失敗,sufficient 當(dāng)做optional 一樣對待
. optional 如果當(dāng)前模塊認(rèn)證失敗,將繼續(xù)處理下一模塊。即當(dāng)前模塊失敗,用戶仍可能通過鑒別
3> module_path 字段: 指示被使用的模塊。如果沒有給出全路徑,默認(rèn)模塊目錄是 /lib/security/
4> module_args 字段: 指示用于傳遞給模塊的模塊參數(shù)。模塊可以帶參數(shù),也可以不帶參數(shù)
2) 每個(gè) PAM 配置文件都可以有多行,即對于某個(gè)應(yīng)用程序可以有不同的認(rèn)證類型,同一認(rèn)證類型也可以使用
不同的模塊(模塊參數(shù))來進(jìn)行認(rèn)證。
本文來自ChinaUnix博客,如果查看原文請點(diǎn):http://blog.chinaunix.net/u2/80941/showart_1275040.html |
|