天天看點

解決Ubuntu 20.04挂載NTFS檔案系統不能寫入(隻讀權限)的問題設定開機自動挂載NTFS檔案系統解決NTFS檔案系統不能寫入的問題

設定開機自動挂載NTFS檔案系統

  1. 檢視分區:

    sudo fdisk --list

  2. 打開/etc/fstab:

    sudo gedit /etc/fstab

    ,以我自己的情況為例,添加以下内容并儲存:

    /dev/sda1 /media/D ntfs-3g user,auto,rw,dev,exec,suid,async,utf8,dmask=000,fmask=111 0 0

    該指令共有6個參數,以空格分割,其中:
    • /dev/sda1

      表示你要挂載的分區,根據你檢視分區的結果填寫。
    • /media/D

      表示挂載點,根據你自身需求填寫。
    • ntfs-3g

      表示待挂載分區使用的檔案系統。分為以下幾種情況:
      • NTFS:填寫

        ntfs-3g

        ntfs

        (在Ubuntu 20.04中ntfs是連結到ntfs-3g的)。
      • FAT32或FAT16或FAT:填寫

        vfat

        .
      • 自動檢測檔案系統:填寫

        auto

        .
    • usr ... fmask=111

      為一個參數,各項之間用

      ,

      分割,用于設定挂載分區的特性:
      • auto

        noauto

        : 這是控制裝置是否自動挂載的選項。auto是預設選擇的選項,這樣,裝置會在啟動或者你使用mount -a指令時按照fstab的内容自動挂載。如果你不希望這樣,就使用noauto選項,如果這樣的話,你就隻能明确地通過手工來挂載裝置。
      • user

        nouser

        :這是一個非常有用的選項,user選項允許普通使用者也能挂載裝置,而nouser則隻允許root使用者挂載。nouser是預設選項,這也是讓很多 Linux新手頭疼的東西,因為他們發現沒有辦法正常挂載光驅,Windows分區等。如果你作為普通身份使用者遇到類似問題,或者别的其他問題,就請把 user屬性增加到fstab中。
      • exec

        noexec

        : exec允許你執行對應分區中的可執行二進制程式,同理,noexec的作用剛好相反。如果你擁有一個分區,分區上有一些可執行程式,而恰好你又不願意,或者不能在你的系統中執行他們,就可以使用noexec屬性。這種情況多發生于挂載Windows分區時。exec是預設選項,理由很簡單,如果 noexec變成了你/根分區的預設選項的話……
      • rw

        ro

        :讓該分區以可擦寫或者是隻讀的型态挂載上來,如果你想要分享的資料是不給使用者随意變更的, 這裡也能夠配置為隻讀。則不論在此檔案系統的檔案是否配置 w 權限,都無法寫入!
      • sync

        async

        :對于該檔案系統的輸入輸出應該以什麼方式完成。sync的意思就是同步完成,通俗點講,就是當你拷貝一個東西到裝置或者分區中時,所有的寫入變化将在你輸入cp指令後立即生效,這個東西應該立馬就開始往裝置或者分區裡面拷貝了。而如果是async,也就是輸入輸出異步完成的話,當你拷貝一個東西到裝置或者分區中時,可能在你敲擊cp指令後很久,實際的寫入操作才會執行,換句話說,就是進行了緩沖處理。有時候這種機制蠻不錯的,因為sync會影響你系統的運作速度,但是這也會帶來一些問題。想一想,當你希望将一個檔案拷貝到u盤上時,你執行了cp 指令,卻忘記執行umount指令(它會強行将緩沖區内容寫入),那麼你拷貝的檔案實際上并沒有在u盤上面。如果你是使用的mv指令,而你又很快将u盤拔出……恭喜你,檔案會從這個星球上消失的。是以,雖然async是預設屬性,但是對于u盤,移動硬碟這種可移動儲存設備,最好還是讓他們使用sync選項。
      • suid

        nosuid

        :該檔案系統是否允許 SUID 的存在?如果不是運作檔案放置目錄,也可以配置為 nosuid 來取消這個功能!
      • defaults

        :同時具有 rw, suid, dev, exec, auto, nouser, async 等參數。 基本上,預設情況使用 defaults 配置即可!

        以上其實是 mount 指令的參數,在 Ubuntu 20.04 中配合ntfs-3g指令的參數,還有下述選項:

      • umask

        :這個是用來指定挂載windows分區後檔案的預設權限(事實上,是預設沒有的權限,即umask參數指出的值挂載後的檔案将不具有),因為Windows分區裡面的檔案是沒有權限這個概念的,是以要手動指定預設權限,于是,指定umask為000,就是不排除任何,即具有所有權限。
      • fmask

        :針對檔案進行設定,意義和用法同umask.
      • dmask

        :針對檔案夾進行設定,意義和用法同umask.
    • 訓示能否被 dump 備份指令作用。dump 是一個用來做為備份的指令, 我們可以透過 fstab 指定哪個檔案系統必須要進行 dump 備份! 0 代表不要做 dump 備份, 1 代表要每天進行 dump 的動作。 2 也代表其他不定日期的 dump 備份動作, 通常這個數值不是 0 就是 1.
    • 訓示是否以 fsck 檢驗扇區。啟動的過程中,系統預設會以 fsck 檢驗我們的 filesystem 是否完整 (clean)。 不過,某些 filesystem 是不需要檢驗的,例如記憶體置換空間 (swap) ,或者是特殊檔案系統例如 /proc 與 /sys 等等。是以,在這個字段中,我們可以配置是否要以 fsck 檢驗該 filesystem 喔。 0 是不要檢驗, 1 表示最早檢驗(一般隻有根目錄會配置為 1), 2 也是要檢驗,不過 1 會比較早被檢驗啦! 一般來說,根目錄配置為 1 ,其他的要檢驗的 filesystem 都配置為 2 就好了。

解決NTFS檔案系統不能寫入的問題

如果經過以上設定,挂載的NTFS檔案系統依然是隻讀權限,不能寫入,最有可能的情況是:

  1. Windows系統開啟了快速啟動。這種情況一般出現在Ubuntu與Win10共存的計算機上,需要在Win10的電源管理中關閉快速啟動。
  2. 在啟動Ubuntu系統之前,與之共存的Windows系統執行過強制關機。這種情況需要在Ubuntu系統中修複檔案系統:

    sudo ntfsfix /dev/***

    ,/dev/***表示待挂載的受到Windows強制關機影響的NTFS檔案系統。

    其實無論是Windows開啟了快速啟動還是執行了強制關機,其本質都是待挂載的NTFS檔案系統中存放了Widnows未釋放緩存,導緻Ubuntu無法寫入。隻要掌握了這個原則,其它類似的情況就好解決了。

參考文獻

Linux檔案之/etc/fstab

ubuntu開機自動挂載的ntfs硬碟的權限問題

鳥哥的Linux私房菜 第八章、Linux 磁盤與檔案系統管理