每個Linux系統(tǒng)都至少有一個人負責系統(tǒng)的維護和操作,這就是系統(tǒng)管理員。對于PC機用戶來說,可以身兼數(shù)職,既是用戶,又是系統(tǒng)管理員。系統(tǒng)管理員的職責就是保證系統(tǒng)平穩(wěn)的操作和執(zhí)行各種需要特權的任務。具體說來,系統(tǒng)管理員要做以下幾方面的工作:
設置整個計算機系統(tǒng),包括硬件和軟件,如安裝硬件設備、安裝操作系統(tǒng)和軟件包、為用戶建立賬戶等。
做適當?shù)膫浞荩ㄏ到y(tǒng)中常規(guī)文件拷貝)和需要時的恢復。
處理由于計算機有限資源的使用(如磁盤空間、進程數(shù)目等)而遇到的問題。
排除由于連接問題而造成的系統(tǒng)通信(網(wǎng)絡)阻塞。
進行操作系統(tǒng)的升級和維護。
為用戶提供常規(guī)支持。
依據(jù)系統(tǒng)的規(guī)模和用戶數(shù)目的多少,系統(tǒng)管理的工作可多可少,可以是日常隨時要做的工作,也可能是每天一次甚至每月一次的維護工作。如果系統(tǒng)較小,則維護工作就可以不斷地進行。系統(tǒng)管理員必須認真負責地工作,他手中握有控制系統(tǒng)運行的特權,若粗心應付,必然影響系統(tǒng)的性能,甚至使系統(tǒng)崩潰。
用戶和工作組管理
所有新用戶要想進入Linux系統(tǒng),必須由系統(tǒng)管理員預先在該系統(tǒng)中建立一個賬戶。用戶賬戶可幫助系統(tǒng)管理員記載使用系統(tǒng)的人們,并控制他們對系統(tǒng)資源的存取。賬戶管理也有助于組織用戶文件和控制其它用戶對它們的訪問。這樣,管理和維護用戶的賬號、口令及權限也就成為系統(tǒng)管理員日常工作的一個重要組成部分。
用戶賬號
用戶在使用Linux時,必須確保自己是系統(tǒng)授權的合法用戶。對于用戶的賬號、口令、訪問權限的管理是Linux系統(tǒng)管理員日常工作中的一個重要組成部分。
在Unix/Linux系統(tǒng)中,用戶賬號的概念具有多種意義,其中最主要的是基于身份鑒別和安全的原因。系統(tǒng)必須對使用機器的人加以區(qū)別,賬號概念給系統(tǒng)提供了一種區(qū)別用戶的方法。系統(tǒng)中每個用戶有一個個人賬號,每個賬號有著不同的用戶名和口令。用戶可以為自己的文件設置保護,允許或限制別人訪問它們。
除了一般個人賬號之外,系統(tǒng)上還必須存在能夠管理系統(tǒng)的高級用戶,如root賬號就是系統(tǒng)管理員用于維護系統(tǒng)的缺省賬號。另外,系統(tǒng)中還存在一些不能與人交互的特殊賬號,如bin、sync等。
1.passwd文件)
通常在Linux系統(tǒng)中,用戶的關鍵信息被存放在系統(tǒng)的/etc/passwd文件中,系統(tǒng)的每一個合法用戶賬號對應于該文件中的一行記錄。這行記錄定義了每個用戶賬號的屬性。下面是一個passwd文件的示例(部分摘錄):
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
......
desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin
mengqc:x:500:500:mengqc:/home/mengqc:/bin/bash
在該文件中,每一行用戶記錄的各個數(shù)據(jù)段用“:”分隔,分別定義了用戶的各方面屬性。各個字段的順序和含義如下:
注冊名:口令:用戶標識號:組標識號:用戶名:用戶主目錄:命令解釋程序
(1)注冊名(login_name):用于區(qū)分不同的用戶。在同一系統(tǒng)中注冊名是惟一的。在很多系統(tǒng)上,該字段被限制在8個字符(字母或數(shù)字)的長度之內;并且要注意,通常在Linux系統(tǒng)中對字母大小寫是敏感的。這與MS DOS/Windows是不一樣的。
(2)口令(passwd):系統(tǒng)用口令來驗證用戶的合法性。超級用戶root或某些高級用戶可以使用系統(tǒng)命令passwd來更改系統(tǒng)中所有用戶的口令,普通用戶也可以在登錄系統(tǒng)后使用passwd命令來更改自己的口令。
現(xiàn)在的Unix/Linux系統(tǒng)中,口令不再直接保存在passwd文件中,通常將passwd文件中的口令字段使用一個“x”來代替,將 /etc/shadow作為真正的口令文件,用于保存包括個人口令在內的數(shù)據(jù)。當然shadow文件是不能被普通用戶讀取的,只有超級用戶才有權讀取。
此外,需要注意的是,如果passwd字段中的第一個字符是“*”的話,那么,就表示該賬號被查封了,系統(tǒng)不允許持有該賬號的用戶登錄。
(3)用戶標識號(UID):UID是一個數(shù)值,是Linux系統(tǒng)中惟一的用戶標識,用于區(qū)別不同的用戶。在系統(tǒng)內部管理進程和文件保護時使用UID字段。在Linux系統(tǒng)中,注冊名和UID都可以用于標識用戶,只不過對于系統(tǒng)來說UID更為重要;而對于用戶來說注冊名使用起來更方便。在某些特定目的下,系統(tǒng)中可以存在多個擁有不同注冊名、但UID相同的用戶,事實上,這些使用不同注冊名的用戶實際上是同一個用戶。
(4)組標識號(GID):這是當前用戶的缺省工作組標識。具有相似屬性的多個用戶可以被分配到同一個組內,每個組都有自己的組名,且以自己的組標識號相區(qū)分。像UID一樣,用戶的組標識號也存放在passwd文件中。在現(xiàn)代的Unix/Linux中,每個用戶可以同時屬于多個組。除了在passwd文件中指定其歸屬的基本組之外,還在/etc/group文件中指明一個組所包含用戶。
(5)用戶名(user_name):包含有關用戶的一些信息,如用戶的真實姓名、辦公室地址、聯(lián)系電話等。在Linux系統(tǒng)中,mail和finger等程序利用這些信息來標識系統(tǒng)的用戶。
(6)用戶主目錄(home_directory):該字段定義了個人用戶的主目錄,當用戶登錄后,他的Shell將把該目錄作為用戶的工作目錄。在 Unix/Linux系統(tǒng)中,超級用戶root的工作目錄為/root;而其它個人用戶在/home目錄下均有自己獨立的工作環(huán)境,系統(tǒng)在該目錄下為每個用戶配置了自己的主目錄。個人用戶的文件都放置在各自的主目錄下。
(7)命令解釋程序(Shell):Shell是當用戶登錄系統(tǒng)時運行的程序名稱,通常是一個Shell程序的全路徑名,如/bin/bash。
當用戶登錄后,將啟動這個程序來接收用戶的輸入,并執(zhí)行相應的命令。從Linux核心的角度看來,Shell就是用戶和核心交流的一種中間層面,用于將用戶輸入的命令串解釋為核心所能理解的系統(tǒng)調用或中斷子例程,同時又將核心的工作結果解釋為用戶能理解的可視化輸出結果。所以,對用戶而言,Shell被稱為命令解釋程序;而對于核心而言,Shell又被稱為外殼程序。
需要注意的是,系統(tǒng)管理員通常沒有必要直接修改passwd文件,Linux提供一些賬號管理工具幫助系統(tǒng)管理員來創(chuàng)建和維護用戶賬號。
2.shadow文件
目前,在大多數(shù)Unix/Linux系統(tǒng)中,利用/etc/shadow文件存放用戶賬號的加密口令信息和口令的有效期信息。下面示例是shadow文件中的幾條記錄(與上面的passwd文件相對應):
root:$1$Vfcp2rdI$R0bDID/CvD3FfTeTtnk7u.:12489:0:99999:7:::
bin:*:12489:0:99999:7:::
daemon:*:12489:0:99999:7:::
......
desktop:!!:12489:0:99999:7:::
mengqc:$1$pNPtXOsd$gk5mQEfx5hJfPzpmgQ78k/:12489:0:99999:7:::
在Linux系統(tǒng)的shadow文件中,為每個用戶提供一條記錄,各個字段用“:”隔開,這9個字段按先后順序分別是:
◆注冊名;
◆密文口令;
◆上次更改口令時間距1970年1月1日的天數(shù);
◆口令更改后,不可以更改的天數(shù);
◆口令更改后,必須再次更改的天數(shù)(即口令的有效期);
◆口令失效前警告用戶的天數(shù);
◆口令失效后距賬號被查封的天數(shù);
◆賬號被查封時間距1970年1月1日的天數(shù);
◆保留字段。
Unix/Linux修改口令的機制很簡單:用戶修改口令時使用passwd命令,該命令通常位于/usr/bin。普通用戶只能修改自己的口令,而且必須回答老的口令;root可以修改系統(tǒng)中任何用戶的口令,并且此時系統(tǒng)不會詢問老的用戶口令。
建立和刪除賬號
對系統(tǒng)而言,創(chuàng)建一個用戶賬號需要完成以下幾個步驟:
第一步,添加一個記錄到/etc/passwd文件;第二步,創(chuàng)建用戶的主目錄;第三步,在用戶的主目錄中設置用戶的默認配置文件(如.bashrc)。
在幾乎所有的Linux系統(tǒng)中都提供了useradd或adduser命令,它們能完成以上這一系列工作。通常這兩個命令沒有區(qū)別。另外,root用戶可以使用KDE桌面系統(tǒng)為新用戶建立賬號和口令。其過程是“控制面板”→“用戶和組群”→“添加新用戶”,按照屏幕上的提示要求輸入相應的參數(shù),包括用戶名、描述信息(可選)、密碼及確認,然后設置用戶-組的關系。
要刪除已經存在的用戶賬號,必須從/etc/passwd文件中刪除此用戶的記錄項,從/etc/group文件中刪除提及的此用戶,并且刪除用戶的主目錄及其它由該用戶創(chuàng)建或屬于此用戶的文件。這些工作可以使用userdel命令來完成,也可以使用桌面系統(tǒng)“控制面板”→“用戶和組群”,在“本地用戶和組”的窗口中選定要刪除的用戶,然后單擊“刪除”小圖標,并予以“確定”。
某些時候,需要臨時使某個賬號失效,例如用戶沒有付費,或者是系統(tǒng)管理員懷疑黑客得到了某個賬戶的口令,解除限制后,該賬號仍舊可以登錄,這就是所謂的查封賬號。當需要查封某個賬號時,可以將用戶記錄從/etc/passwd文件中去掉,但是保留該用戶的主目錄和其它文件;或者在/etc/passwd (或/etc/shadow)文件中,在相關用戶記錄的passwd字段的首字符前加上符號“*”,例如,希望查封前面提到過的用戶賬號mengqc,則在/etc/shadow文件中將該用戶記錄修改如下:
mengqc:*$1$pNPtXOsd$gk5mQEfx5hJfPzpmgQ78k/:12489:0:99999:7:::
這樣,就限制了該用戶賬號的登錄。
但是要注意,這樣做會使得用戶弄不清發(fā)生了什么事情。為了避免引起不必要的誤會,管理員還可以使用另一種方法來查封用戶:將用戶賬號的Shell設置成一個特定的、只打印出一條信息的程序。用這種方法,任何想登錄此賬號的人將無法登錄,并能得知具體原因。該信息還可以告訴用戶應與系統(tǒng)管理員聯(lián)系,以處理相關問題。
下面就是這樣一個用于取代用戶Shell程序的“tail scripts”示例程序:
#!/usr/bin/tail +2
This account has been closed due to a security breach.
Please call 36 and wait for the men in black to arrive.
上面代碼中前2個字符(#!)告訴核心,本行的其它部分是解釋本文件要運行的命令。這樣,tail命令將在屏幕上顯示除第一行外的所有東西。通常這種tail scripts被存放在獨立于用戶目錄的路徑中,以免和用戶命令產生混淆。
工作組管理
利用工作組可以方便地把相關用戶賬號邏輯地組織在一起。在組的支持下,允許用戶在組內共享文件。Linux系統(tǒng)中每一個文件都有一個用戶和一個組的屬主,也就是說系統(tǒng)中任何一個文件都歸屬于某個組中的一個用戶。使用“ls -l”的命令可以看到文件所屬的用戶和組,例如/home/mengqc目錄下存在文件ex1,運行“ls -l”將輸出如下結果:
$ ls -l ex1
-rwxr-x--- 1 mengqc mengqc 31 3月27 09:18 ex1
每個用戶至少屬于一個組,這種從屬關系對應于系統(tǒng)/etc/group文件中的GID字段,但是一個用戶可以從屬于多個組。類似于/etc/passwd文件,系統(tǒng)中的每個組都對應/etc/group文件中一行記錄。記錄的各字段屬性依次定義如下:
組名:口令:組標識號:用戶列表
其中,各個字段的含義如下:
◆組名(group_name):顧名思義,組名就是工作組的名字。
◆口令(passwd):組的口令,但口令字段不常用,允許不在這個組中的其它用戶用newgrp命令來訪問屬于這個組的資源。
◆組標識號(GID):GID是系統(tǒng)用來區(qū)分不同組的標識號,它在系統(tǒng)中是惟一的。在/etc/passwd文件中,用戶的組標識號字段就是用這個數(shù)字來指定用戶的缺省組。
◆用戶列表(user_list):用戶列表是用“,”分隔的用戶注冊名集合,列出了這個組的所有成員。但是需要注意的是,這些被列出的用戶在 /etc/passwd文件中對應的GID字段(即用戶的缺省組)與當前/etc/group文件中相應的GID字段是不同的。也就是說,組的默認用戶不必列在該字段中。
下面是從一個/etc/group文件中摘錄的部分記錄項:
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
......
desktop:x:80:
mengqc:x:500:
在Linux系統(tǒng)中,root和bin都是管理組。系統(tǒng)中很多文件都屬于這兩個組。mengqc是一個普通的用戶組。
在實際的應用中,口令字段是完全沒有必要的。事實上,很多系統(tǒng)沒有提供設置組口令的工具。這是因為要使一個用戶成為多個組的成員,只需要把用戶注冊名加入到這些組的用戶列表字段中。
用戶可以使用groups命令列出當前用戶所屬的所有組的名稱。
當用戶登錄時,被自動賦予/etc/passwd文件中的GID屬性,也自動成為/etc/group文件中列出該用戶組的成員。
對于工作組的設置主要包括以下幾項工作:
◆創(chuàng)建和刪除工作組;
◆修改組的屬性;
◆調整用戶所屬組;
◆組權限的設定。
添加組的命令是groupadd,刪除組的命令是groupdel,修改組屬性的命令是groupmod,也可以利用桌面系統(tǒng)實現(xiàn)上述功能。#p#副標題#e#
設置用戶登錄環(huán)境
以上是用戶基本屬性的設置。但是,用戶在使用Linux系統(tǒng)的時候,還需要相關的工作環(huán)境。為此,管理員應為用戶設置登錄環(huán)境。
當用戶登錄Linux系統(tǒng)后,通常接觸的第一個軟件環(huán)境就是bash命令解釋程序,這是除了系統(tǒng)核心之外最重要的軟件環(huán)境。在Linux系統(tǒng)中,軟件環(huán)境的配置信息通常都存放在一些配置文件中。
以下是一些較為重要的Shell環(huán)境配置文件:
◆/etc/bashrc 包含系統(tǒng)定義的命令別名和bash的環(huán)境變量定義。
◆/etc/profile 包含系統(tǒng)的環(huán)境定義,并指定啟動時必須運行的程序。
◆/etc/inputrc 包含系統(tǒng)的鍵盤設定,以及針對不同終端程序的鍵位配置信息。
◆$HOME/.bashrc 包含為用戶定義的命令別名和bash的環(huán)境變量定義。
◆$HOME/bash_profile 包含為用戶定義的環(huán)境變量,并指定用戶登錄時需要啟動的程序。
◆$HOME/.inputrc 包含用戶的鍵盤設定,以及針對用戶終端的鍵位配置信息。
這些文件都是采用Shell語言編寫的系統(tǒng)腳本文件,通常用戶目錄下的配置文件與/etc目錄中相對應的文件大致相同。
用戶磁盤空間限制
在Linux系統(tǒng)中,系統(tǒng)管理員可以控制用戶對硬盤的使用。也就是說,能夠限定用戶使用的硬盤空間的大小,其好處是可以將整個硬盤資源公平合理地進行分配,從而不會出現(xiàn)某個用戶或某些用戶占用過多的硬盤空間,而導致其它用戶工作不便的現(xiàn)象。
Linux系統(tǒng)是通過quota(磁盤限額)機制來實現(xiàn)對用戶使用硬盤資源的控制。quota可以從兩個方面來限制用戶使用硬盤資源:
◆用戶所能夠支配的索引節(jié)點數(shù);
◆用戶可以存取的硬盤分區(qū)數(shù)。
quota機制的功能是強制用戶在大部分時間內保持在各自的硬盤使用限制下,取消用戶在系統(tǒng)上無限制地使用硬盤空間的權力。
該機制是以用戶和文件系統(tǒng)為基礎的。如果用戶在一個以上的文件系統(tǒng)上創(chuàng)建文件,那么必須在每個文件系統(tǒng)上分別設置quota。
通常quota的配置過程如下:
(1)首先應該確保在Linux核心中提供對quota的支持。也就是說在配置核心時,對于以下核心開關選項:
quota support(CONFIG_QUOTA)
應該設置為“Y”,使核心提供對quota機制的支持。
(2)安裝與quota相關的軟件包。通常的Linux系統(tǒng)(例如,紅旗Linux 服務器版)在系統(tǒng)安裝時會缺省地安裝相關的軟件包,包的命名方式一般為quota-x.xx-x.i386.rpm。如果系統(tǒng)沒有安裝過該軟件包,可以使用以下命令將該包安裝上:
rpm -ivh quota*.rpm
(3)修改用戶的系統(tǒng)初啟腳本文件,使之能夠檢查quota并在系統(tǒng)初啟時開啟quota功能。以下是一個初啟腳本文件示例:
#檢查quota程序并且開啟quota磁盤限額功能
if [ -x /sbin/quotacheck ]
then
echo "Cheching quotas......"
/sbin/quotacheck -avug
echo "[Done]"
fi
if [ -x /sbin/quotaon ]
then
echo "Turning on quota......"
/sbin/quotaon -avug
fi
上面這段腳本可以添加到文件/etc/rc.d/rc.sysinit或/etc/rc.d/rc.local中。但是需要注意,必須在加載用戶 /etc/fstab中指定的文件系統(tǒng)后,才能啟動quota;否則quota將不會運行。這是因為quota是依賴于文件系統(tǒng)的,只有為用戶加載文件系統(tǒng)后,才能為用戶設置quota。
(4)修改初啟時文件系統(tǒng)的支持
前面介紹對quota初啟腳本的編寫時曾提到過,在使用腳本文件開啟quota功能之前,必須在加載/etc/fstab文件中指定了文件系統(tǒng)。這是因為為了在系統(tǒng)每次初啟時使文件系統(tǒng)上的硬盤限額是有效的,/etc/fstab文件也需要進行相應的修改。
在/etc/fstab文件中,沒有啟用quota的分區(qū)一般如下所示:
/dev/hda1 / ext2 defaults 1 1
/dev/hdb2 /work ext2 defaults 1 2
如果要在文件系統(tǒng)中加入用戶quota功能,則應在包含“defaults”選項的后面加上“usrquota”。例如,我們要為/dev/hdb2上的文件系統(tǒng)設置quota,則修改如下:
/dev/hdb2 /work ext2 defaults,usrquota 1 2
如果用戶需要啟動文件系統(tǒng)中對用戶組quota的支持,則需要在包含“defaults”選項的后面加上“grpquota”:
/dev/hdb2 /work ext2 defaults,grpquota 1 2
如果需要同時支持用戶quota與組quota,則修改如下:
/dev/hdb2 /work ext2 defaults,usrquota,grpquota 1 2
(5)建立quota.user和quota.group文件
在上面(3)所述腳本中,命令“quotacheck -avug”的作用是檢查需要打開磁盤限額的目錄下的所有子目錄,并建立quota.user和quota.group配置文件。這兩個文件用于記錄 quota的配置信息,以及當前quota目錄下硬盤的使用情況。第一次執(zhí)行這樣的檢查過程可能會比較慢。
如果是第一次安裝quota,則必須先定位到要設定quota的目錄中,上面的示例目錄是/work,在該目錄中執(zhí)行“quotacheck-avug” 命令,讓系統(tǒng)自動生成quota.user和quota.group文件。這兩個文件的內容相對較為簡單,讀者可一目了然。
文件系統(tǒng)及其維護
Linux系統(tǒng)對于它能夠識別的所有文件系統(tǒng)類型提供了一個通用界面,所以對用戶來說,文件存儲的精確格式和方式并不重要。Linux可以支持的主要文件系統(tǒng)類型有ext2和ext3文件系統(tǒng),用于存儲Linux文件;MS DOS文件系統(tǒng),允許Linux訪問MS DOS/Win9x分區(qū)和軟盤上的文件;其它文件系統(tǒng)包括CD ROM使用的ISO 9660文件系統(tǒng)等。
作為系統(tǒng)管理員,應該掌握以下這樣一些知識和技能:
◆清楚Linux上文件系統(tǒng)的組織方式,以及文件的存儲原理;
◆熟悉關于分區(qū)和文件系統(tǒng)的配置文件;
◆在軟盤上創(chuàng)建文件系統(tǒng),以及在硬盤上添加新的文件系統(tǒng);
◆使用各種工具檢查和修復文件系統(tǒng);
◆此外還應該熟悉訪問文件系統(tǒng)上文件的各種命令。
如前所述,文件系統(tǒng)是操作系統(tǒng)用于在磁盤上組織文件的機制,其載體是軟盤或硬盤分區(qū)。一個軟盤或硬盤分區(qū)在作為文件系統(tǒng)使用時必須要初始化,并將如何組織文件的數(shù)據(jù)結構寫到這些介質上,這個過程就是建立文件系統(tǒng)過程。通常一個操作系統(tǒng)的大部分程序都是基于該操作系統(tǒng)環(huán)境下文件系統(tǒng)的,當轉移到別的文件系統(tǒng)上就不能正常工作。
在Linux中,每個文件系統(tǒng)占據(jù)硬盤的一個獨立分區(qū)。Linux系統(tǒng)可以擁有多個文件系統(tǒng)。因此,在安裝Linux系統(tǒng)之前,至少需要準備好一個文件系統(tǒng),用來存放Linux本身。一般來說,建議在安裝Linux系統(tǒng)時,最好為其提供多個文件系統(tǒng),因為這樣能夠提供較好的系統(tǒng)安全性。
也就是說,當系統(tǒng)某個分區(qū)上的文件系統(tǒng)被損壞了,Linux其它分區(qū)上的文件系統(tǒng)不會受到影響。相反,如果把所有文件都存放在根文件系統(tǒng)下,那么,當該文件系統(tǒng)損壞時,所有的Linux文件都將丟失。
此外,使用多文件系統(tǒng)的另一個原因是,需要在多個硬盤上分配存儲空間。就是說,可以將多個硬盤上的空間劃分為多個分區(qū)供Linux使用,以便充分利用系統(tǒng)的硬盤空間。
建立文件系統(tǒng)
當硬盤完成分區(qū)后,應該在該分區(qū)上建立文件系統(tǒng)。這一步工作是通過mkfs工具來完成的。實際上,對每種文件系統(tǒng)Linux都提供一個相應的工具來做這個工作。mkfs使用參數(shù)-t fstype來指定所要建立的文件系統(tǒng)類型。通常創(chuàng)建文件系統(tǒng)的操作會將原來該分區(qū)上的數(shù)據(jù)清除掉,并且該過程是不可逆的。
mkfs命令的一般格式如下:
mkfs [-t fstype] [-cv] device_or _mount_point [blocks]
其中,-t fstype選項用于指定所需創(chuàng)建的文件系統(tǒng)類型。缺省情況下,是ext2文件系統(tǒng)。如果要建立MS DOS文件系統(tǒng),應使用參數(shù)msdos。選項-c用于查找分區(qū)中的壞塊,并初始化壞塊列表。通常初次安裝系統(tǒng)時,建議使用該選項。
例如,如果需要在分區(qū)/dev/hda1上建立ext2文件系統(tǒng),并檢查壞塊,應該使用以下命令:
# mkfs -c /dev/hda1
使用文件系統(tǒng)
創(chuàng)建文件系統(tǒng)后,需要使用命令mount將該文件系統(tǒng)安裝到主文件系統(tǒng)中。命令mount有三個主要參數(shù):
(1)需要安裝的文件系統(tǒng)類型,用-t fstype選項來指定,這與mkfs中的-t選項是一樣的。
(2)所需訪問的文件系統(tǒng)所在分區(qū)名,通常是位于目錄/dev中的特別設備文件;如果需要安裝網(wǎng)絡文件系統(tǒng)時,就使用該服務器上輸出的目錄名。
(3)安裝新文件系統(tǒng)的路徑名,也就是放置新文件系統(tǒng)的安裝點(Mount Point)。通常這是一個空目錄名,并且是專門為安裝新文件系統(tǒng)而準備的。在Linux系統(tǒng)下,目錄/mnt是常用的文件系統(tǒng)安裝目錄,缺省情況下, CD ROM和軟盤驅動器都分別安裝在其子目錄下。當然,文件系統(tǒng)也可以被安裝到其它空目錄中。需要注意的是,不要將一個文件系統(tǒng)安裝到一個非空的目錄中。如果那樣做,該目錄中原有的內容會被新安裝的文件系統(tǒng)內容所遮蓋。
例如,需要將MS DOS文件系統(tǒng)分區(qū)/dev/hda1安裝到系統(tǒng)的空目錄/dos中,應該使用以下命令:
# mount -t msdos /dev/hda1 /dos
安裝所需的文件系統(tǒng)后,可以使用不帶參數(shù)的mount命令來查看當前安裝的文件系統(tǒng)。文件系統(tǒng)的安裝情況記錄在文件/etc/mtab中。每次使用mount或umount(卸裝文件系統(tǒng))命令都會修改該文件,從而使該文件的內容與系統(tǒng)中文件系統(tǒng)的實際安裝情況保持一致。
Linux使用了一個/etc/fstab文件,該文件列出在系統(tǒng)初啟時需要自動安裝的所有分區(qū)。此外,該文件也可以向mount命令傳遞參數(shù)。 Linux系統(tǒng)在初啟時會執(zhí)行腳本/etc/rc.d/rs.sysinit,該腳本使用fsck命令檢查所需安裝Linux分區(qū),在沒有發(fā)現(xiàn)錯誤后,將讀取/etc/fstab文件中的內容,并根據(jù)該文件中指定的參數(shù),自動安裝該文件中指定的文件系統(tǒng)。
在關閉系統(tǒng)之前,為了保證文件系統(tǒng)的完整性,所有安裝的文件系統(tǒng)都必須被卸載。通常在/etc/fstab文件中定義的文件系統(tǒng)都能夠自動卸載。但是,對于手工mount的文件系統(tǒng),在關閉系統(tǒng)之前必須手工卸載該文件系統(tǒng)。有時候也需要在系統(tǒng)工作過程中手工卸載某個文件系統(tǒng)。手工卸載文件系統(tǒng)必須使用 umount命令。umount命令將分區(qū)名或分區(qū)的安裝點作為參數(shù),格式如下:
umount <分區(qū)名或分區(qū)的安裝點>
例如,需要將已經安裝到/mnt/floppy目錄下的軟盤卸載,可以使用以下命令:
# umount /mnt/floppy
要注意,對于正在使用的文件系統(tǒng),不能使用umount命令卸載。另外,為了安全起見,在Linux系統(tǒng)中通常只能由系統(tǒng)管理員root來完成硬盤分區(qū)、格式化分區(qū)、安裝文件系統(tǒng)或卸載文件系統(tǒng)等工作。
維護文件系統(tǒng)
1.修復損壞的文件系統(tǒng)
當Linux文件系統(tǒng)由于人為因素或是系統(tǒng)本身的原因(如用戶不小心冷啟動系統(tǒng)、磁盤關鍵磁道出錯或機器關閉前沒有來得及把cache中的數(shù)據(jù)寫入磁盤等)而受到損壞時,都會影響到文件系統(tǒng)的完整性和正確性。這時,就需要系統(tǒng)管理員進行維護。
對Linux系統(tǒng)中常用文件系統(tǒng)的檢查是通過fsck工具來完成的。fsck命令的一般格式如下:
fsck [options] file_system [...]
在通常情況下,可以不為fsck指定任何選項。例如,要檢查/dev/hda1分區(qū)上的文件系統(tǒng),可以用以下命令:
# fsck /dev/hda1
應該在沒有mount該文件系統(tǒng)時才使用fsck命令檢查文件系統(tǒng),這樣能保證在檢查時該文件系統(tǒng)上沒有文件被使用。如果需要檢查根文件系統(tǒng),應該利用啟動軟盤引導,而且運行fsck時應指定根文件系統(tǒng)所對應的設備文件名。對于普通用戶來說,為了安全起見,不要使用fsck來檢查除ext2之外的文件系統(tǒng)。
fsck在發(fā)現(xiàn)文件系統(tǒng)有錯誤時可以修復它。如果需要fsck修復文件系統(tǒng),必須在命令行中使用選項-A和-P。當修復文件系統(tǒng)后,應該重新啟動計算機,以便系統(tǒng)讀取正確的文件系統(tǒng)信息。
fsck對文件系統(tǒng)的檢查順序是從超級塊開始,然后是已經分配的磁盤塊、目錄結構、鏈接數(shù),以及空閑塊鏈接表和文件的I節(jié)點等。用戶一般不需要手工運行fsck,因為引導Linux系統(tǒng)時,如果發(fā)現(xiàn)需要安裝的文件系統(tǒng)有錯,會自動調用fsck。
2.避免可能導致系統(tǒng)崩潰的文件系統(tǒng)的錯誤
為了避免因為文件系統(tǒng)錯誤而導致系統(tǒng)崩潰的情況,可以考慮采取以下的措施和注意事項:
(1)在正確安裝Linux系統(tǒng)后,制作系統(tǒng)備份;
(2)創(chuàng)建對應當前Linux核心的啟動盤;
(3)在軟盤上做一些重要文件的備份;
(4)對關鍵服務器最好使用UPS,預防突然掉電;
(5)定期使用fsck或badblocks檢查磁盤,一旦發(fā)現(xiàn)錯誤,必須要做備份;
(6)一般情況下,不要以root身份登錄到Linux系統(tǒng);
(7)不要在完成任務后直接關閉系統(tǒng)的電源開關,最好使用shutdown命令;
(8)不要讓無用的程序或數(shù)據(jù)占滿硬盤空間。
這樣可以將因文件系統(tǒng)錯誤而導致的損失降到最小。
3.其它一些管理文件系統(tǒng)的命令
du//統(tǒng)計當前目錄下子目錄的磁盤使用情況,主要是統(tǒng)計其子目錄和所有子目錄下文件的大小
df//統(tǒng)計文件系統(tǒng)中空閑的磁盤空間,缺省情況下顯示所有安裝文件系統(tǒng)的磁盤使用信息
in//用來在目錄或文件間建立鏈接
find//用于查找Linux系統(tǒng)上的文件或目錄
tar//是一個文件管理工具,用于將文件歸檔,或者從歸檔中恢復文件
gzip//GNU文件壓縮工具,用于壓縮Linux文件,通常與tar一起使用
文件系統(tǒng)的后備
系統(tǒng)管理員的主要任務之一是確保系統(tǒng)中所存信息的持續(xù)完整性。維護完整性的一種方法是定期后備系統(tǒng)中的數(shù)據(jù)。
系統(tǒng)后備(備份)是保護用戶不受數(shù)據(jù)損壞或丟失之苦的一種非常重要的手段。如果系統(tǒng)的硬件出現(xiàn)了問題,或者是用戶不小心刪除了重要的文件,都有可能造成數(shù)據(jù)損壞或丟失,尤其在服務器應用環(huán)境中所造成的損失更是難以預計。經常進行數(shù)據(jù)備份可以使偶然破壞造成的損失減小到最低程度,而且能夠保證系統(tǒng)在最短的時間內從錯誤狀態(tài)中恢復。
在Linux系統(tǒng)中,造成數(shù)據(jù)丟失或數(shù)據(jù)損壞的原因有多種:第一種原因是用戶誤操作,強行刪除或覆蓋了一些重要的文件;第二種原因是硬件發(fā)生故障,導致數(shù)據(jù)的丟失;第三種原因是因為軟件本身存在故障,而造成數(shù)據(jù)丟失。系統(tǒng)中數(shù)據(jù)的丟失和損壞輕則破壞用戶關鍵數(shù)據(jù),重則導致系統(tǒng)不能正常工作。所以,定期進行系統(tǒng)和用戶數(shù)據(jù)的備份是系統(tǒng)管理員的基本職責。
對于備份來說,管理員需要考慮備份介質的選擇、備份策略的選擇、備份工具的選擇。目前,比較常用的備份介質有軟盤、磁帶、光盤和硬盤等,通常有完全備份、增量備份和更新備份三種備份策略。
#p#副標題#e#
備份策略
1.完全備份
也稱為簡單備份,即每隔一定時間就對系統(tǒng)做一次全面的備份,這樣在備份間隔期間出現(xiàn)了數(shù)據(jù)丟失或破壞,可以使用上一次的備份數(shù)據(jù)將系統(tǒng)恢復到上一次備份時的狀態(tài)。但是,這樣每次備份的工作量相當大,需要很大的存儲介質空間。
因此,不可能太頻繁地進行這種系統(tǒng)備份,只能每隔一段較長的時間(例如一個月)才進行一次完全備份。然而,在這段相對較長的時間間隔內(整個月) 一旦發(fā)生數(shù)據(jù)丟失現(xiàn)象,則所有更新的系統(tǒng)數(shù)據(jù)都無法被恢復。
2.增量備份
在這種備份策略中,首先進行一次完全備份,然后每隔一個較短的時間段進行一次備份,但僅僅備份在這段時間間隔內修改過的數(shù)據(jù)。然后,當經過一段較長的時間后,再重新進行一次完全備份,依照這樣的周期反復執(zhí)行。增量備份的工作量較小,也能夠進行較為頻繁的備份。例如,可以以一個月為備份周期,每個月進行一次完全備份,每天下班后或是業(yè)務量較小時進行當天的增量數(shù)據(jù)備份。
3.更新備份
這種備份方法與增量備份相似。首先每隔一段時間進行一次完全備份,然后每天進行一次更新數(shù)據(jù)的備份。但不同的是,增量備份是備份當天更改的數(shù)據(jù),而更新備份是備份從上次進行完全備份后至今更改的全部數(shù)據(jù)文件。一旦發(fā)生數(shù)據(jù)丟失,首先可以恢復前一個完全備份,然后再使用前一個更新備份恢復到前一天的狀態(tài)。
更新備份的缺點是,每次作小備份工作的任務比增量備份的工作量要大。但是,其好處在于,增量備份每天都保存當天的備份數(shù)據(jù),需要過多的存儲量;而更新備份只需要保存一個完全備份和一個更新備份就行了。另外在進行恢復工作的時候,增量備份要順序進行多次備份的恢復,而更新備份只需要恢復兩次。因此,更新備份的恢復工作相對較為簡單。
備份時機
備份需要定期進行,通常應該選擇在系統(tǒng)比較空閑時進行,以免影響系統(tǒng)的正常工作,并且此時系統(tǒng)中數(shù)據(jù)更新頻度較低,一般選擇在半夜零點之后進行備份??梢钥紤]寫一個腳本并且加入到系統(tǒng)的cron自動任務中去(有關cron的詳情,請利用man命令參考cron的手冊頁)。不過需要注意的是,對于系統(tǒng)備份應該根據(jù)具體的系統(tǒng)數(shù)據(jù)更新情況和用戶使用系統(tǒng)的情況,決定具體的系統(tǒng)備份方案。
備份工具
選定了備份策略后,可以使用tar、cpio、dump等備份工具軟件將數(shù)據(jù)進行備份。對于一般的備份,使用tar就足夠了。通常用tar備份的命令格式如下所示:
tar cvfpsz <生成的備份文件> <所需備份的目錄>
用于備份時,可以將tar命令和其它命令聯(lián)合使用。例如,需要查找過去7天更新過的文件,并使用tar的-T參數(shù)指定需要備份的文件,進行所需備份:
# find / -mtime -7 -print >/tmp/filelist
# tar -c -T /tmp/filelist -f /dev/nrsa0
此外,也可以使用類似于tar的cpio命令進行備份。cpio對數(shù)據(jù)的壓縮要比tar命令更有效,因為它是為備份任何文件集而設計的,而tar命令主要是為備份子目錄設計的;cpio能夠處理跨多個磁帶的備份,并且能夠跳過磁道上的壞區(qū)繼續(xù)工作,而tar不能。
恢復后備文件
一般說來,在備份文件系統(tǒng)的時候,只要備份/etc、/root、/var、/home、/usr/local和X11R6目錄下的內容即可。此外,如果用戶還自定義了一些文件和子目錄的話,也需要做備份。
以后當系統(tǒng)出現(xiàn)某些故障時,就需要恢復先前保存的后備文件。對備份文件進行恢復是一件很容易的事情。首先,必須確定待恢復的文件所在的位置。接著使用 tar -xp或cpio -im命令就行了。tar的-p及cpio中的-m選項用來確保所有的文件屬性與文件一起被恢復。因為這些命令較為簡單,這里就不一一舉例了。要注意的是,當使用cpio恢復目錄時,-d選項將用來創(chuàng)建子目錄;而tar命令則自動完成創(chuàng)建子目錄的工作。
系統(tǒng)安全管理
Linux系統(tǒng)安全管理包括多個要素,例如,普通用戶的系統(tǒng)安全、超級用戶的系統(tǒng)安全、文件系統(tǒng)的安全、進程安全,以及網(wǎng)絡安全等。只有以上各個要素協(xié)調配合,才能真正地保證系統(tǒng)不易受到致命的打擊。
安全管理的目標和要素
安全管理的目標包括防止非法操作、防止未獲得授權的人進入系統(tǒng)或無合法權限的人員越權操作;數(shù)據(jù)保護,防止已授權或未授權的用戶存取對方重要的個人信息;正確管理用戶,一個系統(tǒng)不應被一個惡意的、試圖使用過多資源的用戶損害;保證系統(tǒng)的完整性,保證系統(tǒng)的完整性;記賬,通過確認用戶身份和記錄下用戶所做的操作,并根據(jù)這些記錄查出哪些操作比較可疑,以及哪些用戶對系統(tǒng)進行了破壞,從而采取相應的防范措施;系統(tǒng)保護,阻止任何用戶凍結系統(tǒng)資源,如果某個用戶占用某一系統(tǒng)資源的時間過長,必須有相應的措施剝奪其使用權;否則會影響其它用戶使用,甚至導致系統(tǒng)崩潰。
Linux系統(tǒng)安全包括三個要素,即物理安全管理、普通用戶安全管理和超級用戶安全管理。
1.物理安全
一般來說,物理安全應該包括以下幾個方面:
(1)保證放置計算機機房的安全,必要時應添加報警系統(tǒng)。同時應提供軟件備份方案,把備份好的軟件放置在另一個安全地點。
(2)保證所有的通信設施(包括有線通信線、電話線、局域網(wǎng)、遠程網(wǎng)等)都不會被非法人員監(jiān)聽。
(3)鑰匙或信用卡識別設備、用戶口令鑰匙分配、文件保護、備份或恢復方案等關鍵文檔資料要保存在安全的位置。
2.普通用戶安全管理
Linux系統(tǒng)管理員的職責之一是保證用戶資料安全,其中一部分工作是由用戶的管理部門來完成的。但作為系統(tǒng)管理員,有責任發(fā)現(xiàn)和報告系統(tǒng)的安全問題。
系統(tǒng)管理員可以定期隨機抽選一用戶,將該用戶的安全檢查結果發(fā)送給他及其管理部門;此外,用戶的管理部門應該強化安全意識,制定完善的安全管理規(guī)劃。
3.超級用戶安全管理
超級用戶可以對系統(tǒng)中任何文件和目錄進行讀寫,超級用戶口令一旦丟失,系統(tǒng)維護工作就很難進行,系統(tǒng)也就無安全性可言。
超級用戶在安全管理方面需要注意的地方包括:
(1)在一般情況下最好不使用root賬號,應使用su命令進入普通用戶賬號。
(2)超級用戶不要運行其它用戶的程序。
(3)經常改變root口令。
(4)精心地設置口令時效。
(5)不要把當前工作目錄排在PATH路徑表的前面,以避免“特洛依木馬”的入侵。
(6)不要未退出系統(tǒng)就離開終端。
(7)建議將登錄名root改成其它名稱。
(8)注意檢查不尋常的系統(tǒng)使用情況。
(9)保持系統(tǒng)文件安全的完整性。
(10)將磁盤的備份存放在安全的地方。
(11)確保所有登錄賬號都有用戶口令。
(12)啟動記賬系統(tǒng)。
用戶口令的管理
計算機安全包括物理安全和邏輯安全。通過加強機房管理、保證通信線路安全、建立完整的備份制度等措施,一般情況下都能保證物理安全。另外,建立和完善邏輯安全同樣是一個很重要的問題,其中包括用戶口令的管理、用戶賬號的管理、文件和目錄權限的管理及維護系統(tǒng)日志。
1.用戶口令的管理
用戶口令的管理包括設置好的用戶口令、采用正確的用戶口令管理策略、設置用戶口令的時效機制、執(zhí)行安全的用戶口令操作。
一個好的用戶口令至少有6字符,口令中不要包含個人信息,例如生日、名字、門牌號碼等。用戶口令中最好有一些非字母(即數(shù)字、標點等)字符,最好應便于記憶。
用戶口令的安全性隨著時間的推移而變弱,所以,經常改變用戶口令有利于系統(tǒng)安全。系統(tǒng)管理員可以通過修改/etc/shadow文件實現(xiàn)。
多數(shù)情況下用戶口令丟失都與用戶誤操作有關。為保證用戶口令安全必須注意以下幾點:
(1)不要將用戶口令寫下來;
(2)用戶在輸入口令時,應避免被別人看到;
(3)保證用戶一人一個口令,避免多人使用同一個賬號;
(4)不要重復使用同一口令;
(5)不要在不同系統(tǒng)上使用同一口令;
(6)不要通過網(wǎng)絡或Modem來傳送口令。
2.用戶賬號的管理
用戶賬號的管理包括如何保證系統(tǒng)中每個用戶賬號的安全、如何管理這些賬號,以及如何處理對系統(tǒng)安全有威脅的賬號。
保證系統(tǒng)有一個安全的/etc/passwd文件是十分必要的,維護該文件時應注意以下問題:
(1)盡量避免直接修改/etc/passwd文件。
(2)在用戶可以容忍的情況下,盡量使用比較復雜的用戶賬號名。
(3)盡量將passwd文件中UID號為0的人數(shù)限制在一到兩個人內。如果發(fā)現(xiàn)存在管理員以外的UID為0時,就表示系統(tǒng)被攻破。以下命令可以顯示passwd文件中ID為0的用戶:
# grep '[^:]*[^*]*:0*' /etc/passwd
(4)保證passwd文件中沒有口令相同的用戶賬號。下面的命令用來查詢該文件中是否有ID=110的用戶:
# grep 110 /etc/passwd
(5)保證passwd文件中每個用戶的口令字段不為空,可以使用下面的命令:
# grep '[^:]*[^::]:*' /etc/passwd
(6)注意系統(tǒng)特殊用戶使用的Shell字段,保證他們使用專用程序,而非一般用戶的Shell。
(7)除非在必要的情況下,最好不要使用組口令。
(8)對于新用戶最好先為之提供rsh(Restricted Shell),讓他們在受限的環(huán)境中使用系統(tǒng)。
(9)當一個賬號長時間不用時,可通過記賬機制發(fā)現(xiàn)該賬號,并將該賬號查封。
3.安全問題
文件和目錄權限的管理涉及重要目錄的安全問題,包括以下目錄:
/bin、/boot、/dev、/etc和$HOME。
/bin目錄保存引導系統(tǒng)所需的全部可執(zhí)行程序及常用的Linux命令。該目錄只允許超級用戶進行修改。同時,應把目錄設置在PATH環(huán)境變量的最前面。例如:
PATH=/bin:/usr/bin:/usr/local/bin:/home/mengqc/bin
如果設置在最后,用戶mengqc可以在自己的目錄下放置一個名為su的特洛伊木馬程序。超級用戶執(zhí)行su命令時,mengqc就可以獲取超級用戶口令。
/boot用來存放Linux初啟時所需的一些數(shù)據(jù)和文件。如該目錄被破壞,系統(tǒng)就不能啟動。
/dev目錄包含有鏈接硬件設備的文件,它的存取權限應當是775,并且應屬root所有。設備文件使用權限設置不當,能給系統(tǒng)安全帶來影響。例如/dev/mem是系統(tǒng)內存,用cat命令就可以在終端上顯示系統(tǒng)內存中的內容。
/etc目錄下的passwd、group、shadow 、inittab、cshrc和xinitrc等文件是系統(tǒng)正常工作時所用的。大多數(shù)情況下,/etc中的文件是黑客首選的攻擊目標。
$HOME目錄是各個用戶的主目錄,一般位于/home目錄下。該目錄的名稱一般與用戶的登錄名相同。超級用戶的主目錄在/root下。
如果沒有正確設置用戶主目錄的權限,就會給該用戶帶來危險。例如,假設其他人可以寫一個用戶的主目錄,那么,可以通過修改該用戶主目錄中的.bash_profile文件來獲取與該用戶相同的身份。
4.對系統(tǒng)日志進行日常維護
系統(tǒng)管理員另一個復雜的任務是對系統(tǒng)日志進行日常維護。系統(tǒng)日志記錄提供了對系統(tǒng)活動的詳細審計信息,這些日志用于評估、審查系統(tǒng)的運行環(huán)境和各種操作。對于一般情況,日志記錄包括記錄用戶登錄時間、登錄地點、進行什么操作等內容。使用得當?shù)脑挘罩居涗浤芟蚬芾韱T提供有關危害安全的侵害或入侵企圖的信息。
這些審計信息通常由守護程序自動產生,是系統(tǒng)默認設置的一部分,能幫管理員尋找系統(tǒng)存在的問題,對系統(tǒng)維護十分有用。還有一些日志需要管理員設置才能生效。大部分日志存放在/var/log目錄中。
系統(tǒng)性能優(yōu)化
對系統(tǒng)性能的優(yōu)化主要包括以下幾個方面的內容:
◆對于磁盤I/O性能的優(yōu)化;
◆對文件系統(tǒng)的有機調整;
◆進程的執(zhí)行調度;
◆系統(tǒng)守護進程任務的管理。
使用工具iostat監(jiān)測磁盤I/O的性能 iostat檢查各個磁盤的輸入和輸出,并產生各個磁盤的數(shù)據(jù)吞吐量、傳輸請求的統(tǒng)計數(shù)據(jù)。下面是一個使用iostat命令的示例:
# iostat -d 2
該命令將以2秒為時間間隔,產生對系統(tǒng)磁盤使用情況的統(tǒng)計輸出。使用該工具得到各個硬盤的繁忙情況,就能根據(jù)數(shù)據(jù)吞吐量得出系統(tǒng)磁盤的性能。此時,系統(tǒng)管理員應該得出以下結論:
(1)當前磁盤的I/O性能是否已經影響到整個系統(tǒng)的性能,比如說,經常出現(xiàn)CPU等待I/O操作而出現(xiàn)CPU idle狀態(tài)。
(2)用戶的工作是否已經受到影響,例如,當使用NFS服務時,文件服務器是否經常不能及時處理用戶請求。
(3)對于硬盤系統(tǒng),當前的I/O是否集中在某一個或某幾個磁盤上,造成任務請求不均衡。
對于這些問題,系統(tǒng)管理員應該有針對性地采用以下措施:
◆采用RAID技術提高硬盤I/O性能;
◆采用高性能硬盤來解決I/O瓶頸;
◆采用更先進、更快速的硬盤接口技術;
◆對文件系統(tǒng)進行調整,對執(zhí)行進程進行調度。
對進程進行調度
進程在其運行過程中需要占有系統(tǒng)資源,如果用戶執(zhí)行的進程耗用資源過多,將有可能造成系統(tǒng)性能的瓶頸現(xiàn)象。這時,就需要對這樣的進程進行調度。一種情況是與用戶協(xié)商,將這個進程從系統(tǒng)中刪除,這時需要系統(tǒng)管理員使用kill命令;另一種情況是需要對該進程的優(yōu)先級別或調度時間進行調整,可以通過nice命令及at命令等完成。
要想讓系統(tǒng)很好服務,必須管理好系統(tǒng)。作為系統(tǒng)管理員權力至上,職責也重大。以上介紹了系統(tǒng)管理的基本知識,然而,要想讓系統(tǒng)始終處于良好工作狀態(tài),除了深入掌握管理知識外,還需在實踐中不斷積累經驗。


