Linux———-Mount和unmount

來源:互聯網
上載者:User
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 會試著猜測檔案系統種類。也可以使用-t fstype 選項直接定義種類;這有時是必要的,因為自檢測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 stops mount -a  from 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檔案系統將給予任何使用者至少是讀許可權,這可不是一個好主意。  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.