(一)文件的鍊接
文件共享是指系統允許多個用戶(進程)共同使用某個或某些文件。利用文件共享功能,可以節省大量外存空間和内存空間,因為系統中隻需保存共享文件的一個副本,從而減少了輸入輸出操作,同時為用戶應用帶來很大方便。随着計算機技術的發展,文件共享已不限于單機系統,如今在計算機網絡系統中得到廣泛應用。通常,文件共享方式主要有兩種:路由共享和鍊接共享。
1.路由共享
用戶登錄後,系統自動為其确定當前工作目錄(按照建立該用戶賬号時的設置)。該用戶訪問的所有文件都相對于工作目錄。當所訪問的文件不在工作目錄之下時,授權用戶可以從工作目錄出發,沿目錄樹的路徑(向上或向下)找到所需文件,然後執行允許的操作。
這種文件共享方式往往用于對系統文件的共享。如UNIX/Linux系統中,所有用戶可以查看系統目錄的内容和執行系統命令等。但是,要實現各用戶文件的有選擇的共享就存在困難,而且當文件主删除文件後,其他用戶就無法看到該文件。因而,這種共享是臨時的。
2.鍊接共享
如前所述,UNIX/Linux具有為一個文件起多個名字的功能,稱為鍊接。被鍊接的文件可以存放在相同的目錄下,但是必須有不同的文件名,而不用在硬盤上為同樣的數據重複備份。另外,被鍊接的文件也可以有相同的文件名,但是存放在不同的目錄下,這樣隻要對一個目錄下的該文件進行修改,就可以完成對所有目錄下同名鍊接文件的修改。對于某個文件的各鍊接文件,我們可以給它們指定不同的存取權限,以控制對信息的共享和增強安全性。文件鍊接有兩種形式,即硬鍊接和符号鍊接。
· 硬鍊接
建立硬鍊接時,在另外的目錄或本目錄中增加目标文件的一個目錄項,這樣,一個文件就登記在多個目錄中。如圖5-21所示的m2.c文件就在目錄mub1和liu中都建立了目錄項。
圖5-21 文件鍊接
創建硬鍊接後,已經存在的文件的I節點号(Inode)會被多個目錄文件項使用。
利用命令ls –l可以以長列表格式顯示給定目錄中文件的詳細信息。一個文件的硬鍊接數可以在所顯示信息的第2個字段中看到。例如:
-rw- r-- r-- 2 mengqc group 198 Jul 23 2014 m2.c
表示文件m2.c的硬鍊接數為2。
無額外鍊接的文件的鍊接數為1。在默認情況下,ln命令創建硬鍊接。ln命令會增加鍊接數,rm命令會減少鍊接數。一個文件除非鍊接數為0,否則不會從文件系統中被物理地删除。
對硬鍊接有如下限制:
① 不能對目錄文件做硬鍊接。
② 不能在不同的文件系統之間做硬鍊接。就是說,鍊接文件和被鍊接文件必須位于同一個文件系統中。
· 符号鍊接
符号鍊接也稱為軟鍊接,是将一個路徑名鍊接到一個文件。符号鍊接是一種特别類型的文件。事實上,它隻是一個文本文件(如圖5-21中的abc文件),其中包含它提供鍊接的另一個文件的路徑名,如圖5-21中虛線箭頭所示。另一個文件是實際包含所有數據的文件。所有讀、寫文件内容的命令被用于符号鍊接時,将沿着鍊接方向前進來訪問實際的文件。
與硬鍊接不同的是,符号鍊接确實是一個新文件,當然它具有不同的I節點号;而硬鍊接并沒有建立新文件。
符号鍊接沒有硬鍊接的限制,可以對目錄文件做符号鍊接,也可以在不同文件系統之間做符号鍊接。用ln -s命令建立符号鍊接時,源文件最好用絕對路徑名。這樣可以在任何工作目錄下進行符号鍊接。而當源文件用相對路徑時,如果當前的工作路徑與要創建的符号鍊接文件所在路徑不同,就不能進行鍊接。
符号鍊接的特點如下:
① 删除源文件或目錄時,隻删除了該數據文件,不會删除相關鍊接。一旦以同樣文件名創建了源文件,該鍊接将繼續指向該文件的新數據。
② 在目錄長列表中,符号鍊接作為一種特殊的文件類型顯示出來,其第一個字母是l。
③ 符号鍊接的大小是其鍊接文件的路徑名中的字節數。
④ 當用ls -l 命令列出文件時,可以看到符号鍊接名後有一個箭頭指向源文件或目錄,例如:
lrwxrwxrwx … 14 Jul 20 10:20 /etc/motd->/original_file
其中,表示“文件大小”的數字“14”說明源文件名“/original_file”由14個字符構成。
當然,符号鍊接也帶來需要額外開銷的問題。因為讀取包含路徑的文件需要多次額外的磁盤存取。另外,每個符号鍊接都需要額外的I節點和存放相應文件的盤空間。
(二)文件的保護和保密
計算機系統中的文件既存在保護問題,又存在保密問題。所謂文件保護是指文件免遭文件主或其他用戶由于錯誤的操作而使文件受到破壞。而文件保密是指未經文件主授權的用戶不得訪問該文件。這二者都涉及用戶對文件的訪問權限問題。
· 命名
有些系統采用的保密方式是不允許用戶存取别人建立的文件。就是說,系統不提供諸如利用通配符來查找文件一類的機制,用戶也不能随意搜索目錄。這樣,一個用戶就不能輕而易舉地獲取其他用戶的文件名。因為文件名是由文件主為記憶而獨自選擇的。用戶不知道文件的名稱,也就無法打開使用。
· 口令
另外一種方式是讓每個文件都帶有口令。存取文件時要先對口令,口令對上了,才允許用戶對它進一步操作。這就像用戶進入系統登錄時要驗證口令一樣。如果文件主對口令随機選擇并經常改變,那麼這種方式在限制文件存取方面是相當有效的。隻有那些知道口令的人才能對文件進行存取。
一般說來,每個文件僅有一個口令。因而,用戶一旦獲取了口令,就可以與文件主一樣使用文件,而沒有進一步區分使用等級。為使保護層分得更細,可以使用多次口令。
· 存取控制
這種方式是根據不同的用戶身份,對每個文件為他們規定不同的存取控制權限。各個用戶對一個文件或目錄可能需要不同類型的存取方式。可以對每個文件或目錄設一個存取表,說明用戶名稱和允許他進行存取的類型。當用戶請求一個特定文件時,操作系統查訪存取控制表。如果該用戶列在表中,那麼就允許他進行相應的存取;否則出現保護違約,該用戶對文件的操作就被中止。
在存取控制表中要列出具有同一存取權限的全部用戶的名稱,不僅使表目很長,而且往往難于實現,因為系統中用戶的數目是可變的。為了縮短存取控制表的長度,提高操作效率,很多系統按照用戶間的關系,把他們分為3類對象:文件主、同組用戶和其他用戶。每個文件都有一個文件主,由他創建這個文件。此外,某些用戶可能和文件主關系密切,同屬一個用戶組,可以共享該文件,具有類似的存取權限。例如,在程序設計期間的各個成員,一個班級或者一個部門的成員可定義為一個用戶組。除上述兩種身份之外的所有用戶都屬于其他用戶,可根據需要為他們規定某些存取權限。
例如,在UNIX/Linux系統中,因為文件的使用環境是比較開放的,所以對文件存取權限的規定比較簡單,用9個二進制位表示,分成3個域,每個域3位,它們是:rwx,分别控制讀、寫和執行操作。3個域分别表示文件主、同組用戶和其他用戶所具有的權限。例如:
-rw- r-- r-- 2 mengqc group 198 Jul 23 2014 m2.c
表示對文件m2.c,文件主可以讀寫(rw),同組用戶和其他用戶隻可以讀,但都不可執行。
文件保護既與文件本身有關,又和文件的路徑有關,可以在文件的路徑上提供保護。因而,若一個用戶想存取由路徑名指定的文件,必須對涉及到的目錄和文件都有存取權。在對文件有連續共享的情況下,由于檢索文件的路徑名不同,就可能出現一個用戶對同一文件有不同的存取權限。
· 加密
為了防止破壞或洩密,對一些重要的文件信息還可采用密碼方法存儲。就像發密碼電報那樣,信息在其存儲之前進行加密,在特定用戶讀取後經過解密再進行相應處理。這樣,即使加密後的文件信息被其他用戶不正當地獲取了,由于他們不知道怎樣去解密(很難猜測出加密方法),就無法知道信息的真實内容,從而達到對文件的保密。
在密碼方式中,由系統負責文件寫入時的加密工作及讀出時的解密工作,其中一項關鍵技術是密鑰機制。密鑰就類似打開鎖的鑰匙,一把鑰匙開一把鎖。我們考慮最簡單的加密方式——寫入文件時,先對每個字符的編碼值加上一個數值(即密鑰,例如10);那麼,在讀出文件時,從讀取的每個代碼值減去10,就得到原始的信息。例如,在ASCII碼中,字母a的值是97,字母b的值是98,依次類推。假設原始信息是apple,其編碼值依次為97,112,112,108和101。加密後得到的編碼值依次為107,122,122,118和111。如果直接讀出的話,則對應字符串是kzzvo。很顯然,如果不利用密鑰去解密,就無法知道密文的原意。由于密鑰僅由享有存取權的特定用戶掌握,所以其他用戶就不能簡單破譯截獲的密文。
上述示例僅僅是對密鑰的簡單解釋。通常是利用密鑰生成一串相繼随機數的起始碼。編碼時把生成的随機數順序地加到文件的字節串上;譯碼時再從讀出的文件代碼中依次減去對應的随機數,從而恢複信息的本來面貌。現在,密碼學已經是信息安全領域中一門重要的學科。
密碼技術保密性強,但是編碼和譯碼要花費很多時間,增加了系統開銷。
随着計算機應用的普及,各種軟件越來越豐富。随之而來的一個重要問題就是如何保護軟件産品的版權,其關鍵是防止對文件的随意複制。
上述通過編制一段保護程序、控制用戶對文件操作的方式等,往往被稱為軟保護方式,另外常用的一種方式是利用附加的硬件(如固化模塊)來實現保護,稱之為硬保護。例如,凡涉及到文件讀、寫、複制、轉儲等功能的命令,在實施相應操作之前,先通過一個硬件模塊檢查其合法性,當發現有侵權行為(如想把系統文件拷貝出去),則系統拒絕執行。硬保護方式具有保密性好和速度快的優點,但相應增加了硬件成本。
(三)文件的備份和恢複
不論是硬件還是軟件都有可能出現故障。例如,系統運行過程中由于電源突然掉電、火災或地震等自然災害、以及用戶或管理員的不慎操作等原因,均會使文件和文件系統受到損害以及數據丢失。為此,文件系統必須采取某些安全措施,避免因故障而造成信息被破壞的無法挽回的結局,以保證文件的可靠性。
備份就是把硬盤上的文件在其它外部的存儲介質(如磁帶或軟盤上)做一個副本。類似地,文件系統的備份就是文件系統上所有文件的副本。
1.備份策略
按照備份時将磁盤上的數據拷貝到備份設備所涉及數據的範圍,可采用下述3種方法:
· 完全備份
完全備份也稱為簡單備份,即每隔一定時間就對系統做一次全面的備份,這樣在備份間隔期間出現了數據丢失或破壞,可以使用上一次備份數據将系統恢複到此前的狀态。
這也是最基本的系統備份方式。但是,每次都需要備份所有的系統數據,這樣每次備份的工作量相當大,需要很大的存儲介質空間。因此,不可能太頻繁地進行這種系統備份,隻能每隔一段時間(如一個月)才進行一次完全備份。然而,在這段相對較長的時間間隔内(整個月)一旦發生數據丢失現象,則所有更新的系統數據都無法被恢複。
· 增量備份
在這種備份策略中,首先進行一次完全備份,然後每隔一個較短的時間段進行一次備份,但僅僅備份在這段時間間隔内修改過的數據。然後,當經過一段較長的時間後,再重新進行一次完全備份……依照這樣的周期反複執行。
由于隻在每個備份周期的第一次備份時才進行完全備份,其他備份隻對修改過的文件做備份,因此工作量較小,也能夠進行較為頻繁的備份。例如,可以以一個月為備份周期,每個月進行一次完全備份,每天下班後或是業務量較小時進行當天的增量數據備份。這樣,一旦發生數據丢失或損壞,首先恢複前一個完全備份,然後按照日期依次恢複每天的備份,一直恢複到前一天的狀态為止。所以,這種備份方法比較經濟,也較為高效。
· 更新備份
這種備份方法與增量備份相似。首先每隔一段時間進行一次完全備份,然後每天進行一次更新數據的備份。但不同的是,增量備份是備份當天更改的數據,而更新備份是備份從上次進行完全備份後至今更改的全部數據文件。一旦發生數據丢失,首先可以恢複前一個完全備份,然後再使用前一個更新備份恢複到前一天的狀态。
更新備份的缺點是,每次做小備份工作的任務比增量備份的工作量要大。但是,其好處在于,增量備份每天都保存當天的備份數據,需要過多的存儲量;而更新備份隻需要保存一個完全備份和一個更新備份就行了。另外在進行恢複工作的時候,增量備份要順序進行多次備份的恢複,而更新備份隻需要恢複兩次。因此,更新備份的恢複工作相對較為簡單。
增量備份和更新備份都能夠以比較經濟的方式對系統進行完全備份。二者的策略不同,在它們之間進行選擇不但與系統數據更新的方式有關,也與管理員的習慣相關。通常,如果系統數據更新不是太頻繁的話,可以選擇更新備份的方式。但是,如果系統數據更新太快的話,就備份時間而言,使用更新備份就不太經濟了,這時可以考慮增量備份,以便縮短備份周期;或者視系統數據更新頻度,混合使用更新備份和增量備份兩種方式。
2.備份時機
按備份進行的時間來分,有“定期備份”和“不定期備份”。
· 定期備份
定期備份是根據預先安排的時間表執行正規的備份。備份時間表确定執行備份的日期以及備份的級别等等。當利用備份時間表進行備份時,不需要每次都保留整個文件系統。實際操作中有效的備份方法是把備份工作分成若幹各級别。比如分成0,1,2和3,共4級。0級是最低級的備份,采用完全備份方法,把整個文件系統的全部内容進行拷貝。而1、2、3級備份采用增量備份或更新備份方法,分别把較低一級的最後一次備份以來做過修改的文件和新創建的文件進行備份。整個備份的内容是金字塔形。
如果系統中有很多的用戶和大量的每天都做修改的文件,就應建立一個備份時間表,執行正規的定期備份。通常,應該選擇在系統比較空閑時進行,以免影響系統的正常工作,并且此時系統中的數據更新頻度較低。可以選擇在半夜零點之後進行備份。
· 不定期備份
不定期備份是對文件系統或目錄進行的完整的無規律的備份。不定期備份不是僅拷貝修改過的文件,而是拷貝整個文件系統或目錄。這樣一來,就會需要更多的存儲介質。
不定期備份不使用備份時間表,可以根據系統中數據進入和修改的情況,随時進行備份。
3.備份文件的恢複
如果由于某種原因造成系統中文件或文件系統的損壞,那麼就可以利用此前做的文件備份,從中恢複原先保存的文件或文件系統。首先,必須确定待恢複的文件所在的位置,然後執行數據I/O命令,如UNIX/Linux系統的tar -xp或cpio -im命令。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!