1. 程式人生 > 實用技巧 >RedHat操作指令第2篇

RedHat操作指令第2篇

六、RPM包管理命令
主要功能

  1. 查詢RPM軟體、包檔案的相關資訊
  2. 安裝、升級、解除安裝RPM軟體包
  3. 維護RPM資料庫資訊

查詢RPM軟體資訊
查詢已安裝的RPM軟體資訊
格式:rpm -q[子選項] [軟體名]
用法:結合不同的子選項 完成不同查詢
-qa:檢視系統中已安裝的所有RPM軟體包列表
-qi:檢視指定軟體的詳細資訊
-ql:查詢指定軟體包所安裝的目錄、檔案列表
-qc:僅顯示指定軟體包安裝的配置檔案
-qd:僅顯示指定軟體包安裝的文件檔案
查詢檔案/目錄屬於哪個RPM軟體
格式:rpm -qf 檔案或目錄名

查詢未安裝的RPM包檔案
格式:rpm -qp[子選項] RPM包檔案
用法:結合不同的子選項 完成不同查詢
-qpi:通過.rpm包檔案檢視該軟體的詳細資訊
-qpl:檢視.rpm安裝包內所包含的目錄、檔案列表
-qpc:檢視.rpm安裝包內包含的配置檔案列表
-qpd:檢視.rpm安裝包內包含的文件檔案列表

安裝、升級、解除安裝RPM軟體包

安裝或升級RPM軟體
格式:rpm [選項] RPM包檔案...
用法:不同選項適用於不同情況
-i:安裝一個新的rpm軟體包
-U:升級某個rpm軟體,若原本未裝,則進行安裝
-F:更新某個rpm軟體,若原本未裝,則放棄安裝

-i 用於安裝新軟體包,-U 用於升級現有軟體包(若未裝則安裝),-F 也用於升級現有軟體包(若未裝則不裝)

解除安裝指定的RPM軟體
格式:rpm -e 軟體名
解除安裝軟體時只需要指定軟體名即可,無需指定版本號

輔助選項
--force:強制安裝所指定的rpm軟體包
--nodeps:安裝、升級或解除安裝軟體時,忽略依賴關係
-h:以“#”號顯示安裝的進度
-v:顯示安裝過程中的詳細資訊

--force 輔助選項主要應用於以下兩種情況:
1)缺失某個軟體包的檔案時,需要進行覆蓋安裝以找回丟失檔案
2)安裝一個比現有軟體版本陳舊的軟體包(多為測試用途)
當安裝、解除安裝軟體包時,提示缺少依賴包無法進行時,如果仍要繼續執行,應結合 --nodeps 選項而不是 --force 選項

在安裝新的軟體包時,通常使用”-ivh”組合選項來獲得更加友好的螢幕提示資訊
“warning:……NOKEY……”的警告資訊是由於沒有匯入RedHat提供的公鑰所致,但並不影響安裝效果,可以忽略,如果需要匯入公鑰檔案,可以參考如下步驟(以後從RHEL5光碟中安裝軟體時,就不會再出現警告提示了):
[root@localhost ~]# cd /media/cdrom
[root@localhost cdrom]# rpm --import RPM-GPG-KEY-redhat-release

解決軟體包依賴關係
安裝有依賴關係的多個軟體時
1、被依賴的軟體包需要先安裝
2、同時指定多個.rpm包檔案進行安裝
解除安裝有依賴關係的多個軟體時
1、依賴其他程式的軟體包需要先解除安裝
2、同時指定多個軟體名進行解除安裝

忽略依賴關係
結合“--nodeps”選項,但可能導致軟體異常

查詢util-linux軟體包安裝的檔案:rpm -ql util-linux

查詢mkdir命令是由哪個RPM軟體包安裝的:rpm -qf mkdir

強制解除安裝被其他程式依賴的軟體:rpm -e softname --nodeps

當安裝、解除安裝軟體包時,提示缺少依賴包無法進行時,如果仍要繼續執行,應結合 --nodeps 選項而不是 --force 選項

維護RPM資料庫

當RPM資料庫損壞時,需要進行資料庫重建
格式:rpm --rebuilddb
rpm --initdb
當RPM資料庫發生損壞,Linux系統無法自動完成修復時,可能將導致無法正常安裝、解除安裝rpm軟體包

在圖形介面中管理RPM包
圖形介面中的“新增/刪除軟體”
依賴於YUM(Yellow dog Updater,Modified)機制
呼叫yum命令工具進行軟體更新

使用“新增/刪除軟體”工具的條件
能夠訪問網際網路中的YUM源伺服器
若使用預設源,需有合法的安裝序列號和服務訂閱號

在區域網內構建本地的YUM源伺服器
參考《Linux實用技術閱讀手冊》第一章

YUM(Yellow dog Updater,Modified,修訂版的黃狗升級器)
使用RHEL5系統光碟中的軟體包可以構建自己的YUM源伺服器,具體請參閱《Linux實用技術閱讀手冊》
講師可在備課過程中預先構建好本地yum伺服器,如果時間允許,這裡可以演示“新增/刪除軟體”工具的操作,也可以適當擴充套件,對yum更新工具命令進行講解

原始碼編譯概述
使用原始碼安裝軟體的優點
獲得最新的軟體版本,及時修復bug
根據使用者需要,靈活定製軟體功能

應用場合舉例
安裝較新版本的應用程式時
自由軟體的最新版本大都以原始碼的形式最先發布
當前安裝的程式無法滿足需要時
編譯安裝可由使用者自行修改、定製功能
需要為應用程式新增新的功能時
使用者可以重新配置、自由修改原始碼,加入新的功能

Tarball 封包:
.tar.gz 和 .tar.bz2 格式居多
軟體素材參考:http://sourceforge.net
完整性校驗
md5sum校驗工具
計算MD5校驗和,並與官方提供的值相比較,判斷是否一致
對於下載回來的軟體包檔案,如果MD5校驗和與官方提供的不一致,則說明該軟體包在網路傳輸過程中可能被非法改動過
對於校驗和不一致的軟體包,應儘量不要使用,以免帶來病毒、木馬等不安全因素

確認原始碼編譯環境
需安裝支援 C/C++程式語言的 編譯器
gcc-4.1.1-52.el5、gcc-c++-4.1.1-52.el5
make-3.81-1.1.i386 ……

原始碼編譯安裝的基本過程
解包 —— tar
解包、釋放出原始碼檔案
配置 —— ./configure
針對當前系統、軟體環境,配置好安裝引數
編譯 —— make
將原始碼檔案變為二進位制的可執行程式
安裝 —— make install
將編譯好的程式檔案複製到系統中
configure 一般是位於軟體包目錄中的可執行指令碼檔案

  1. 解包
    習慣上將軟體包釋放到 /usr/src/ 目錄
    解包後的原始碼檔案位置:/usr/src/軟體名-版本號/

軟體包釋放至哪個目錄並無硬性限制,例如使用者也可以釋放至 /usr/local/src/ 目錄或者其他目錄下,編譯安裝結束後,原始碼包目錄可以選擇刪除
釋放出的軟體原始碼目錄中,configure指令碼檔案將用於下一步的配置工作

  1. 配置
    需將工作目錄切換到軟體原始碼所在目錄
    使用原始碼目錄中的 configure 指令碼
    執行“./configure --help” 可以檢視幫助
    典型的配置選項:
    --prefix=軟體安裝目錄

不同的應用程式其配置引數會存在區別,因此使用“./configure --help”非常重要(“./”表示當前目錄)
使用者應用程式習慣上安裝到“/usr/local/軟體名”資料夾中
編譯過程中如果出現錯誤,通常是由於缺少依賴軟體包所致
根據軟體大小不同,配置過程可能會需要不同的時間

  1. 編譯
    執行 make 命令

  2. 安裝
    執行 make install 命令

這兩個步驟可以合寫為一行:
make && make install

編譯過程(make)通常是原始碼包編譯過程中耗時最長的環節,對於小軟體可能感覺不到
安裝的過程(make install)也會消耗一些時間
“make && make inistall”操作中,“&&”符號表示只有當前一條命令執行成功以後,才會執行後邊的命令

驗證已編譯安裝完成的程式:檢視安裝後的軟體目錄、瞭解軟體程式的使用方法

七、管理使用者和檔案許可權
使用者和組帳號概述
Linux基於使用者身份對資源訪問進行控制
使用者帳號:
超級使用者root
普通使用者
程式使用者
組帳號:
基本組(私有組)
附加組(公共組)
UID和GID:
UID(User Identity,使用者標識號)
GID(Group Identify,組標識號)

超級使用者,即root使用者,類似於Windows系統中的Administrator使用者,非執行管理任務時不建議使用root使用者登入系統
普通使用者帳號一般只在使用者自己的宿主目錄中有完全許可權
程式使用者:用於維持系統或某個程式的正常執行,一般不允許登入到系統。例如:bin、daemon、ftp、mail等
root使用者的UID的固定值為0、root組帳號的GID號為固定值0
1~499的UID、GID預設保留給程式使用者使用,普通使用者/組使用的UID、GID號在500~60000之間

使用者帳號檔案 —— passwd
用於儲存使用者的帳號基本資訊
檔案位置:/etc/passwd
每一行對應一個使用者的帳號記錄
欄位1:使用者帳號的名稱
欄位2:使用者密碼字串或者密碼佔位符“x”
欄位3:使用者帳號的UID號
欄位4:所屬基本組帳號的GID號
欄位5:使用者全名
欄位6:宿主目錄
欄位7:登入Shell資訊
基於系統執行和管理需要,所有使用者都可以訪問passwd檔案中的內容,但是隻有root使用者才能進行更改
在早期的UNIX作業系統中,使用者帳號的密碼資訊是儲存在passwd檔案中的,不法使用者可以很容易的獲取密碼字串並進行暴力破解,因此存在一定的安全隱患
後來經改進後,將密碼轉存入專門的shadow檔案中(見下頁)並嚴格控制全新,而passwd檔案中僅保留密碼佔位符“x”

使用者帳號檔案 —— shadow
用於儲存密碼字串、密碼有效期等資訊
檔案位置:/etc/shadow
每一行對應一個使用者的密碼記錄
欄位1:使用者帳號的名稱
欄位2:加密的密碼字串資訊
欄位3:上次修改密碼的時間
欄位4:密碼的最短有效天數,預設值為0
欄位5:密碼的最長有效天數,預設值為99999
欄位6:提前多少天警告使用者口令將過期,預設值為7
欄位7:在密碼過期之後多少天禁用此使用者
欄位8:帳號失效時間,預設值為空
欄位9:保留欄位(未使用)
預設只有root使用者能夠讀取檔案中的內容,並且不允許root直接編輯該檔案中的內容
上次修改密碼的時間,表示從1970年01月01日(可理解為Unix系統的誕生日)算起到最近一次修改密碼時間隔的天數

新增使用者帳號
useradd命令
格式:useradd [選項]... 使用者名稱
常用命令選項
-u:指定 UID 標記號
-d:指定宿主目錄,預設為 /home/使用者名稱
-e:指定帳號失效時間
-g:指定使用者的基本組名(或UID號)
-G:指定使用者的附加組名(或GID號)
-M:不為使用者建立並初始化宿主目錄
-s:指定使用者的登入Shell

最簡單的用法是,不新增任何選項,只使用使用者名稱作為useradd命令的引數,按系統預設配置建立指定的使用者帳號
演示新增使用者的操作,重點演示 -d、-e、-g、-G、-s 等幾個選項的用法,例如:
——建立名為st02的使用者帳號,並將其UID號指定為504
[root@localhost ~]# useradd -u 504 st02
[root@localhost ~]# tail -1 /etc/passwd
st02❌504:504::/home/st02:/bin/bash
——建立一個考試測試用的帳號exam01,指定屬於users組,該帳號於2009-07-30失效
[root@localhost ~]# useradd -g users -e 2009-07-30 exam01

展示/etc/passwd、/etc/shadow檔案中的變化
說明:使用adduser命令也可以新增使用者帳號,在RHEL5系統中adduser命令實際上是useradd命令的符號連結

使用者帳號的初始配置檔案
檔案來源
新建使用者帳號時,從 /etc/skel 目錄中複製而來
主要的使用者初始配置檔案
~/.bash_profile:使用者每次登入時執行
~/.bashrc:每次進入新的Bash環境時執行
~/.bash_logout:使用者每次退出登入時執行

設定/更改使用者口令
passwd命令
格式:passwd [選項]... 使用者名稱
常用命令選項
-d:清空使用者的密碼,使之無需密碼即可登入
-l:鎖定使用者帳號
-S:檢視使用者帳號的狀態(是否被鎖定)
-u:解鎖使用者帳號

“未設定密碼”的使用者帳號尚未完成初始化,處於不可登入狀態,這與“空密碼”的情況(已經為使用者設定密碼,但密碼字串為空)是不同的
—— “未設定密碼”的使用者將被禁止登入系統,而擁有“空密碼”的使用者是可以在本地終端登入的

普通使用者也可以使用passwd命令,但只能更改自己的密碼,密碼要求有一定的複雜性(如不要直接使用英文單詞,長度保持在6位以上),否則系統可能拒絕進行設定
被鎖定的帳號也將無法登入系統

修改使用者帳號的屬性
usermod命令
格式:usermod [選項]... 使用者名稱
常用命令選項
-l:更改使用者帳號的登入名稱
-L:鎖定使用者賬戶
-U:解鎖使用者賬戶
以下選項與useradd命令中的含義相同
-u、-d、-e、-g、-G、-s

刪除使用者帳號
userdel命令
格式:userdel [-r] 使用者名稱
新增 -r 選項時,表示連使用者的宿主目錄一併刪除
當系統中的某個使用者帳號已經不再需要使用時(如該員工已經從公司離職等情況),可以使用userdel命令將該使用者帳號刪除
使用userdel命令需要指定帳號名稱作為引數,新增“-r”選項時可以將該使用者的宿主目錄一併刪除。

組帳號檔案 —— group、gshadow
與使用者帳號檔案相類似
/etc/group:儲存組帳號基本資訊
/etc/gshadow:儲存組帳號的密碼資訊

與組帳號相關的配置檔案也有2個,分別是/etc/group、/etc/gshadow
/etc/gshadow檔案的應用極少,僅作簡單介紹即可
group檔案內的最後一個欄位中列出屬於該組的使用者成員(一般不包括基本組對應的使用者帳號),多個成員之間以逗號“,”分隔

新增組帳號
groupadd命令
格式:groupadd [-g GID] 組帳號名
使用groupadd命令可以新增一個組帳號,需要指定GID號時,可以使用“-g”選項

新增、刪除組成員
gpasswd命令
用途:設定組帳號密碼(極少用)、新增/刪除組成員
格式:gpasswd [選項]... 組帳號名
常用命令選項
-a:向組內新增一個使用者
-d:從組內刪除一個使用者成員
-M:定義組成員列表,以逗號分隔

刪除組帳號
groupdel命令
格式:groupdel 組帳號名

使用者和組帳號查詢
id命令
用途:查詢使用者身份標識
格式:id [使用者名稱]

groups命令
用途:查詢使用者所屬的組
格式:groups [使用者名稱]

finger命令
用途:查詢使用者帳號的詳細資訊
格式:finger [-l] [使用者名稱]

users、w 、who命令
用途:查詢已登入到主機的使用者資訊

主要有哪兩個使用者帳號檔案,各有什麼作用?
如何鎖定、解鎖使用者帳號?
在新增使用者帳號時,如何設定其失效時間?
使用者初始配置檔案包括哪些,各有什麼作用?
如何設定一個組的多個使用者成員?

【1】/etc/passwd、/etc/shadow
【2】鎖定帳號:usermod -L 使用者名稱、passwd -l 使用者名稱 ; 解鎖帳號: usermod -U 使用者名稱、passwd -u 使用者名稱
【3】useradd -e YYYY-mm-dd 使用者名稱 或者 usermod -e YYYY-mm-dd 使用者名稱
【4】/.bash_profile、/.bashrc、~/.bash_logout
【5】gpasswd -M 使用者1,使用者2,使用者3 組名

檔案/目錄的許可權和歸屬
訪問許可權
讀取:允許檢視檔案內容、顯示目錄列表
寫入:允許修改檔案內容,允許在目錄中新建、移動、刪除檔案或子目錄
可執行:允許執行程式、切換目錄
歸屬(所有權)
屬主:擁有該檔案或目錄的使用者帳號
屬組:擁有該檔案或目錄的組帳號

設定檔案/目錄的許可權
chmod命令
格式1:chmod [ugoa] [+-=] [rwx] 檔案或目錄...
格式2:chmod nnn 檔案或目錄...
常用命令選項
-R:遞迴修改指定目錄下所有檔案、子目錄的許可權

chown命令
格式:chown 屬主 檔案或目錄
chown :屬組 檔案或目錄
chown 屬主:屬組 檔案或目錄
常用命令選項
-R:遞迴修改指定目錄下所有檔案、子目錄的歸屬
需要設定檔案或者目錄的歸屬時,可以通過chown、chgrp命令進行
chown命令既可以修改屬主,也可以修改屬組,而chgrp命令只用於修改屬組資訊(因此並不常用)

使用附加許可權
SET位許可權
主要用途:
為可執行(有 x 許可權的)檔案設定,許可權字元為“s”
其他使用者執行該檔案時,將擁有屬主或屬組使用者的許可權
SET位許可權型別:
SUID:表示對屬主使用者增加SET位許可權
SGID:表示對屬組內的使用者增加SET位許可權

普通使用者並沒有許可權修改“/etc/shadow”檔案,那為什麼可以修改自己的登入密碼呢?
—— 這是因為:passwd命令程式被設定了SUID許可權,普通使用者在執行該命令時臨時獲得相當於屬主使用者(root)的許可權

注意:不要輕易為可執行檔案設定SET位許可權,特別是對於那些屬主、屬組是root的執行程式,使用SET位許可權時更應該慎重。例如,若為vim編輯器程式設定SUID許可權,將導致普通使用者也可以使用vim編輯器修改系統中的任何配置檔案

粘滯位許可權(Sticky)
主要用途:
為公共目錄(例如,許可權為777的)設定,許可權字元為“t”
使用者不能刪除該目錄中其他使用者的檔案
應用示例:/tmp、/var/tmp

設定SET位、粘滯位許可權
使用許可權字元
chmod ug±s 可執行檔案...
chmod o±t 目錄名...
使用許可權數字:
chmod mnnn 可執行檔案...
m為4時,對應SUID,2對應SGID,1對應粘滯位,可疊加

程序管理命令
1、kill(結束程序)
這個命令用於傳送訊號來結束程序。如果一個程序沒有響應殺死命令,這也許就需要強制殺死,使用-9引數來執行。

注意,使用強制殺死的時候一定要小心,因為程序沒有時機清理現場,也許寫入檔案沒有完成。

如果我們不知道程序PID或者打算用名字殺死程序時候,killall就能派上用場。

格式:
kill 殺死執行緒
kill -9 強制殺死執行緒
killall -9 - 強制殺死所有擁有同樣名字的程序

如果你使用kill,你需要知道程序ID號。pkill是類似的命令,但使用模式匹配,如程序名,程序擁有者等。
pkill <程序名>

2、ps(檢視靜態程序執行情況)
ps 是 Linux 中最基礎的瀏覽系統中的程序的命令。
能列出系統中執行的程序,包括程序號、命令、CPU使用量、記憶體使用量等

格式:
ps -a - 列出所有執行中/啟用程序
ps -e 列出程式時,顯示每個程式所使用的環境變數。
ps -f 用ASCII字元顯示樹狀結構,表達程式間的相互關係
ps -ef | grep - 列出需要程序
ps -aux - 顯示程序資訊,包括無終端的(x)和針對使用者(u)的程序:如USER, PID, %CPU, %MEM等

3、top(檢視動態程序執行情況)
top 是一個更加有用的命令,可以監視系統中不同的程序所使用的資源。它提供實時的系統狀態資訊。
顯示程序的資料包括 PID、程序屬主、優先順序、%CPU、%memory等。可以使用這些顯示指示出資源使用量。

檢視資源使用情況命令
1、uptime 檢視cpu負載情況

2、free -m 檢視記憶體使用情況

3、df -hl 檢視磁碟使用情況

檢視網路狀態命令
netstat -ntlp | grep 埠 (檢視某個埠是否佔用)

netstat -anp (檢視網路連線情況)
-a (all)顯示所有選項
-n 拒絕顯示別名,能顯示數字的全部轉化成數字。
-p 顯示建立相關連結的程式名
-r 顯示路由資訊,路由表
-e 顯示擴充套件資訊,例如uid等
-l 或–listening,顯示監控中的伺服器的Socket
-t 或–tcp 顯示TCP 傳輸協議的連線狀況

查詢Linux系統的IP命令
/sbin/ifconfig

重啟
shutdown -r now
shutdown -r +15 “警告:系統將於15分鐘後重啟”
reboot
區別:
Reboot重啟不會給其他使用者提示重啟資訊;
Shutdown 會給出重啟提示資訊,在多使用者登入系統操作時,相對安全。

關機
shutdown -h now
halt
halt -p

su 使用者名稱
切換使用者

lsb_release -a 檢視Linux系統版本

|:管道:將前面命令的螢幕輸出結果作為後面命令的處理物件(輸入)

:重定向輸出,將前面命令的螢幕輸出結果儲存到">"後面的指定檔案中

echo :螢幕輸出內容

col:col命令用於過濾文字中的一些特殊控制字元

service sshd status

service sshd start

service sshd stop

service network restart

檢視是否已安裝SSH
rmp -qa|prep "ssh"

檢視SSH服務是否啟動
Service sshd status

Windows檢視特定埠;netstat –aon|findstr 8080
Windows檢視所有埠;netstat –aon
Windows檢視PID對應的程序名;tasklist |findstr 8080

隱藏檔案:MV 原檔案 .原檔案

防火牆永久
開啟: chkconfig iptables on
關閉: chkconfig iptables off

即刻生效:
開啟: service iptables start
關閉: service iptables stop