本篇内容并非原创,来自 http://qingyang.me/2012/ubuntu-1204-automatically-mount-other-partitions-on-system-startup/
以及 http://qingyang.me/2012/how-to-solve-the-problems-of-hard-disk-permissions/ 这两篇文章,这是对这两篇文章进行了一点整合,加上自己实践过程中额外得到的一些经验说明。
需求是这样的,我的电脑是Ubuntu 12.04 + Win7 双系统,平时我都是引导到Ubuntu系统,win主要做些文档Word啊,PPT之类的工作,或者下载迅雷聊个QQ啥的,为什么不搞wine这是题外话了(我不喜欢~ = =)。在Ubuntu 下面我经常用Rhythembox放音乐,但是这些mp3文件呢都是放在win的分区下,每次要播放歌曲之前需要点一下分区mount上才能播放,于是一不做二不休,就开机加载win分区吧。问了谷老师,找到上面的2篇博客。
首先第一步,搞清楚那些分区是win的分区,需要来加载
sudo fdisk -l
看到那些 带着NTFS字样的盘符了有没有?那些就是我们要的了
关于Linux开机mount,那必须要提到文件 /etc/fstab, 我们可以打开这些文件看一下
sudo vim /etc/fstab
那这个文件在我的电脑上是这样的
文件一共是6个字段,每个字段的意思是这样滴(可以通过man fstab查看)
1. fs_spec: 要挂载的块设备或者远程文件系统的描述。一般是 '/dev/cdrom' 或者 '/dev/sda7' 这样,如果是远程文件系统,那么就是 <host>:<dir> 比如 'com.yg:/home',也可以是设备的Label(e2label) 或者 uuid,比如当前文件中的uuid
2.fs_file: 当前文件系统的挂载点,不过多解释了。如果是swap 分区,那就是none
3.fd_vfstype: 文件系统类型,具体支持的文件系统类型可以通过如下命令查看:
sudo more /proc/filesystems
4.fs_mntops: mount的参数,具体参数请男人mount,本文接下去会介绍用到的参数
5.fs_freq: 这个和dump的时候有关,如果dump 的时候需要把该设备也备份的话那么设置为1,如果要忽略则为0
6. fs_passno: 决定了启动时fsck的时候,这个设备的检查顺序,一般是根目录所在设备为1,然后其他设备任意不重复的数字,检查的顺序从1-N逐渐递增,如果你有设备分别在2块物理磁盘上面的话。那么就可以为在不同磁盘上的2个设备,设置同样的passno,获得检查时候的并行性。
再回到我们的问题,比如你的NTFS设备为 /dev/sda4,那么就要在/etc/fstab最后增加如下一行:
/dev/sda4 /media/Music ntfs defaults,utf8 0 0
把这块设备挂在到/media/Music下面,当然这名字随便你取,指定文件系统格式为ntfs,mount选项为defaults(man mount可以查看具体权限),设置字符集为utf-8,不dump,不fsck。这样就能开机加载这块设备了。
但是这样在实际使用时候就会发现,这个设备的权限都是root的,一般人访问不了,那么就要利用mount的以下几个选项:
1.uid, gid:指定挂载设备的拥有者,uid,gid可以通过
id username
进行查看,如果你登录用户是Ubuntu第一个自己建立的用户,那就uid=1000,gid=1000,错不了~~
2.umask,fmask,dmask:NTFS文件他们可没有权限,所有的权限都是mount的时候Linux通过VFS给加上去的,那Linux怎么知道我要的这些文件是啥权限?就是通过umask, fmask, dmask!umask就是新建文件或新建目录时候Linux给啥权限,但是要和777减一下,比如umask=022,那么创建文件时候权限就是755,啥意思?(问鸟哥的linux私房菜吧~),fmask是指挂载时候文件权限,dmask是挂载时候目录权限。一般我们设置成 dmask=022,fmask=133,那就是所有者能在查看文件夹,在文件夹下面增加删除文件,然后不给执行任何文件,保障资料的安全性。当然就你自己用用,你dmask=000,fmask=000也无所谓。
综合上面,我们要在/etc/fstab中增加的完整一行就是:
/dev/sda4 /media/Music ntfs defaults,utf8,uid=1000,gid=1000.umask=022,dmask=022,fmask=133 0 0