【转】Linux中Mount和unmount
一個文件系統可以使用之前,必須mount。 操作系統然后做一些記錄以確認正常。因為UNIX所有的文件在一個目錄樹中, mount操作的結果使新的文件系統的內容好象在某個已經mount的文件系統的 一個已經存在的子目錄中。
例如,圖4.3顯示3個單獨的文件系統,每個有其自己的根目錄。 當后2個文件系統被mount到第一個文件系統的/home和/usr, 我們得到一個目錄樹,如圖 4.4.
圖4.3:3個單獨的文件系統。
圖4.4:/home和/usr已經mount上。
上面的mount可能使用如下命令:
$mount /dev/hda2 /home$mount /dev/hda3 /usr$
mount命令使用2個參數。 第一個是與包括文件系統的磁盤或分區相關的設備文件。第二個是要mount到的目錄。 mount以后,這2個文件系統的內容好象是/home和/usr目錄。 這樣就可以說:/dev/hda2被mount到/home,/usr也同樣。 要看每個文件系統,就看其被安裝的目錄,好象它就是在那里。 注意設備文件的區別,/dev/hda2, 和安裝到的目錄/home。 設備文件給出硬盤原始內容的存取,安裝到的目錄給出磁盤上文件的存取。安裝到的目錄叫安裝點。
Linux支持許多文件系統。mount會試著猜測文件系統種類。也可以使用-tfstype選項直接定義種類;這有時是必要的,因為自檢測mount并非總能成功。例如要mount一個MSDOS軟盤,可以用如下命令:
$mount -t msdos /dev/fd0 /floppy$
安裝點目錄不必是空的,但必須存在。其中的所有文件當文件系統mount后將不可用名字存取(已經打開的文件將繼續可存取。有其他目錄硬 連接的文件可以通過那些名字存取)。這沒有壞處,反而可能更有用。 例如,有人喜歡將/tmp和/var/tmp作為同義, 將/tmp作為/var/tmp的符號連接。 系統啟動時,在/usr文件系統被mount之前,使用駐留在根文件系統的/var/tmp目錄。當/usr被mount上以后, 根文件系統上的/var/tmp將不可用,如果根文件系統上不存在/var/tmp,那么在mount上/var之前 將不可能使用暫存文件。
如果不打算在一個文件系統上寫任何東西,可以使用mount的-r開關 做一個只讀mount。這將使核心停止任何對此文件系統的寫要求,也將停止核心的對i節點的文件存取時間的更新。 只讀mount對不可寫介質是必要的,例如CDROM。
細心的讀者可能已經注意到一個小的邏輯問題。第一個文件系統(叫根文件系統,因為它包含根目錄)如何mount, 因為很明顯,它不能mount到另一個文件系統? Well, the answer is that it is done by magic.The root filesystem is magically mounted at boot time, and one can rely on it to always be mounted-- 如果根文件系統不能mount,系統將不能啟動。 The name of the filesystem that is magically mounted as root 被編譯進核心,或用LILO或rdev設置。
根文件系統通常先被只讀mount。然后啟動手稿運行fsck校驗它的有效性,如果沒有問題,將re-mount它,使之可寫。fsck不能運行于一個已mount的文件系統,因為fsck運行時,任何文件系統的改變將導致錯誤。 因為根文件系統在被檢查時是只讀,fsck可以無慮地修復任何問題,因為re-mount操作將刷新文件系統在內存中的所有數據。
在有其他文件系統的許多系統中,啟動時要自動mount,可以在/etc/fstab文件中定義: 文件格式細節請參考fstab的手冊頁。 mount特別的文件系統的特別細節依賴于許多因素,可以根據需要由每個管理員設置。 When the chapter on booting is finished, you may read all about it there.
當一個文件系統不需要再mount著,可以用umount.umount加一個參數unmount它,參數可以是設備文件或安裝點。 例如,要unmount上面例子中的目錄,可以用:
$umount /dev/hda2$umount /usr$
要了解使用這個命令的更多的說明,參閱手冊。注意:記住unmount已經mount的軟盤,而不能僅僅將軟盤彈出軟驅!由于磁盤緩沖,在你unmount軟盤之前無須回寫, 因此過早取出軟盤將導致內容不正確。只從軟盤上讀還不要緊,如果寫,就可能發生災難性的損失。
mount和umount需要超級擁護特權,即只有root用戶可以做。 原因是:如果任何用戶都可以mount軟盤到任何目錄,那么很容易用軟盤做,比如,用特洛伊木馬替換/bin/sh, 或者其他常用的程序。但是允許用戶使用軟盤經常又是必要的,有幾種方法:
給用戶root口令,很明顯這對安全不利,但是最簡單的方法。 如果沒有安全要求,這個方法很好,比如在非網絡的、個人系統上。
使用一個程序比如sudo允許擁護使用mount。 這同樣對安全不利,但沒有直接給任何人超級用戶特權。
讓用戶使用mtools, 這是一個利用MSDOS文件系統的軟件包,無須mount。 如果是MSDOS軟盤這樣做很好,否則不好。
在/etc/fstab中用合適的選項列出軟驅設備和允許的安裝點。
最后一個選擇可以在/etc/fstab文件中加類似下面的一行來完成:
/dev/fd0 /floppy msdos user,noauto 0 0
各列分別是:要mount的設備文件,要安裝到的目錄,文件系統類型,選項,備份頻率(用于dump) 和fsck次序(定義啟動時文件系統被檢查的次序,0表示不檢查)。
noauto選項使系統啟動是不自動mount(即, it stopsmount -afrom mounting it)。user允許任何用戶mount這個文件系統,并且,由于安全原因,不允許執行程序(normal or setuid) and interpretation of device files from the mounted filesystem。 這樣,任何用戶都可以用如下命令mount一個msdos文件系統的軟盤:
$mount /floppy$
軟盤可以用相關的umount被unmount。
如果想提供多種軟盤的存取,需要給出多個安裝點。對每個安裝點的設置可以不同。 例如,提供MSDOS和ext2文件系統的存取,可以在/etc/fstab文件中加如下行:
/dev/fd0 /dosfloppy msdos user,noauto 0 0 /dev/fd0 /ext2floppy ext2 user,noauto 0 0
對于MSDOS文件系統(不僅是軟盤),可能需要用uid,gid,和umask文件系統選項來限制 存取權限,請看mount手冊頁。如果不小心,mount一個MS-DOS文件系統將給予任何用戶至少是讀權限,這 可不是一個好主意。
總結
以上是生活随笔為你收集整理的【转】Linux中Mount和unmount的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 社会广告的现状和发展前景如何
- 下一篇: 晚秋的歌词(晚秋歌词表达什么意思)