]ubuntu開機自動掛載的ntfs硬盤的權限問題


在linux操作系統中, 掛載是一個非常重要的功能,使用非常頻繁。 它指將一個設備(通常是存儲設備)掛接到一個已存在的目錄上。 (這個目錄可以不為空,但掛載后這個目錄下以前的內容將不可用。) 需要理解的是, linux操作系統將所有的設備都看作文件, 它將整個計算機的資源都整合成一個大的文件目錄。 我們要訪問存儲設備中的文件,必須將文件所在的分區掛載到一個已存在的目錄上, 然后通過訪問這個目錄來訪問存儲設備。
掛載條件:
  1、掛載點必須是一個目錄。
  2、一個分區掛載在一個已存在的目錄上,這個目錄可以不為空,但掛載后這個目錄下以前的內容將不可用。對於其他操作系統建立的文件系統的掛載也是這樣。

Ctrl + Alt + T 打開終端,輸入以下命令: sudo fdisk -l
查看硬盤的分區情況,如下(本人的,僅作為實例)
Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x624aa2e0

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        2612    20980858+   7  HPFS/NTFS
/dev/sda2            2613        7834    41945715    7  HPFS/NTFS
/dev/sda3            7835       12795    39849232+   7  HPFS/NTFS
/dev/sda4           12796       38913   209792835    7  HPFS/NTFS
使用  sudo gedit /etc/fstab 打開fstab文件,編輯fatab文件,加入相關代碼。
Ubuntu自動掛載的Windows分區無法正常顯示中文,在etc/fstab里面加上utf8就可以了,例如:
代碼:
/dev/sda3       /media/program     ntfs    defaults,utf8        0       0


但是掛載的分區默認是沒有寫權限的,必須有root權限才能寫,如何更改這個設置呢?
用man mount查看手冊頁,發現里面有幾個有用的選項:
umask, fmask, dmask, uid, gid
首先看umask, 這個是用來指定掛載windows分區后文件的默認權限(事實上,是默認沒有的權限,即umask參數指出的值掛載后的文件將不具有),
因為Windows分區里面的文件是沒有權限這個概念的,所以要手動指定默認權限,於是,指定umask為000,就是不排除任何,即具有所有權限,例如:

代碼:
/dev/hda1       /media/hda1     ntfs    defaults,utf8,umask=000        0       0


就可以了,但是這樣即使一個文本文件也具有可執行權限,在文件管理器里面雙擊也要選擇是查看還是執行,很不方便,於是想屏蔽掉可執行權限:

代碼:
/dev/hda1       /media/hda1     ntfs    defaults,utf8,umask=111        0       0


這樣問題又來了,對於目錄來說,可執行權限又有另外的意義,沒有該權限根本無法進入該目錄(但是可以讀,即列出目錄下的文件列表,也可以寫,
即可以在該目錄下增加和刪除文件,和重命名文件。哈哈!Linux的文件權限真是奇怪呀),於是就使用fmask和dmask參數,他們分別是對應文件和
目錄的"umask",於是,將目錄設為可執行,文件不可執行(一般Windows分區下都不會有可以直接在Linux下執行的文件吧?):

代碼:
dmask=022,fmask=133


關於權限的8進制表示就不需要多說了吧?
上邊的意思是
對目錄:
所有用戶可執行(進入),其他人可讀可執行(進入),只有自己可寫(修改、添加、刪除里面的文件(名))
對文件:
所有用戶可讀,自己可寫,其他人不可寫。
之后在uid和gid為自己的就好了,可以用

代碼:
id username


來查看username的gid和uid,例如:

代碼:
id pluskid
uid=1000(pluskid) gid=1000(pluskid) groups=4(adm),20(dialout),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),104(lpadmin),105(scanner),106(admin),1000(pluskid)


如果不設的話,上面的“自己可寫”那個“自己”就不是你羅。
於是,最后就變成了這樣:

代碼:
/dev/sda3      /media/program    ntfs    defaults,utf8,uid=1000,gid=1000,dmask=022,fmask=133     0       0


就OK了!
最后,提醒大家,不要改錯了,改到非Windows分區上了,我實驗的時候就不小心改到root分區了,提供了不能識別的參數,用於 Windows分區的參數ext3分區當然不能識別羅,於是root分區在出現錯誤的情況下被掛載成只讀了,連root也無法修改里面的文件,而 fstab又是放在root分區的,就是個悲劇。(能用livecd修復一下)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM