Linux 开机自动挂载 NTFS 分区为可写

升级到 OpenSUSE 13.2 之后,原来配置为可自动挂载并进行写入操作的 Windows NTFS 分区现在不会自动挂载了,在磁盘管理中配置了自动挂载且不勾选“Mount Read-Only”居然也无法直接写入。又折腾了好久才根据坎离枫整理的博文搞明白了。

要在 Windows + Linux 双系统中的 Linux 系统里使用 Windows 分区,需要先将 Windows 分区挂载到 Linux 系统中。挂载可以在需要的时候通过命令行操作,也可以在管理控制中心,如 OpenSUSE 的 YaST Control Center 中设定每次开机的时候自动挂载。

下面假设要将 Windows 中的 C 和 D 两个分区,都是 NTFS 格式,分别挂载到 Linux 系统(这里以 OpenSUSE 13.2 为例)中的 /winc/wind 两个目录。并假设当前 Linux 普通用户为 linuxuser。

0. 准备工作

准备工作很简单,就是保证 Linux 中有我们需要挂载到的这两个目录,并让 linuxuser 拥有可读写权限。

创建目录,

# sudo mkdir /winc
# sudo mkdir /wind

更改所有者为 linuxuser,用户组为 users,

# chown linuxuser:users /winc
# chown linuxuser:users /wind

还要知道 Windows 中那两个分区在 Linux 中的位置(访问路径),这里是用它们的设备路径,分别为,

/dev/sda1
/dev/sda5

如果不知道,可以通过命令行指令查看(需要 root 权限),

# sudo fdisk -l

Disk /dev/sda: ...

Device Boot Start End Sectors Size Id Type

/dev/sda1 ... HPFS/NTFS/exFAT
/dev/sda2 * ... Extended
/dev/sda5 ... HPFS/NTFS/exFAT
/dev/sda6 ...
/dev/sda7 ...
/dev/sda8 ...

这里略去了一些不必要的信息。

1. 命令行操作 + 开机自动挂载

同样需要 root 权限。

挂载,

mount /dev/sda1 /winc
mount /dev/sda5 /wind

这样直接就是可写入的了。但是每次关机就没有了。

取消挂载,

umount /winc
umount /wind

如果要设为开机自动挂载,则需要将相应需要自动挂载的分区的挂载信息写入到 /etc/fstab 文件中。

  1. 直接命令行修改 /etc/fstab 文件,其中的任一行关于 NTFS 分区的挂载内容形如,
    <partition>  <mount point>  ntfs-3g  <options>  0 0

     

  2. 将要自动挂载的分区信息按照格式添加到该文件结尾,例如,
    /dev/sda5 /wind ntfs-3g user,users,gid=users,fmask=002,dmask=002,locale=en_US.UTF-8 0 0
    /dev/sda1 /winc ntfs-3g user,users,gid=users,fmask=133,dmask=022,locale=en_US.UTF-8 0 0

    这里分区是用 /dev/sdaN 标记的,也可以是 UUID 标记的。

  3. 保存后重启生效。

下面的图形界面操作效果是一样的。

2. 图形界面操作 + 开机自动挂载

这里先介绍一般的自动挂载,然后摘录常用的两个挂载选项组合:挂载为 root 用户所有但普通用户可读写;挂载为某个普通用户所有。

一般挂载

还是图形界面看着顺眼,并且设置开机自动挂载也方便。同样需要 root 权限。

  1. YaST –> System –> Partitioner,单击 yes 确认警告;
  2. 右键单击某 Windows NTFS 分区,比如 C 分区(/dev/sda1),选编辑(Edit);
  3. 在 Mount partition 中 Mount Point 里输入 /winc;
  4. 单击下面的 Fstab Options 打开设置页,只勾选一个 Mountable by User 就可以了,
    OpenSUSE YaST Partitioner Fstab Options

    OpenSUSE YaST Partitioner Fstab Options

    与前面命令行不同的就在于这一步,因为这里已经就是针对某个分区了,所以只需要在上图最下面的空格里填入选项信息就可以了额。例如,

    user,users,gid=users,fmask=002,dmask=002,locale=en_US.UTF-8
  5. 单击 OK 保存 Fstab Options 设置;
  6. 单击 Finish 保存 /dev/sda1 的设置。

同样可以对 D 分区进行设置。

挂载为 root 用户所有但普通用户可读写

但是仅仅按照上面的设置是无法对这些分区进行 写入 操作的,尽管没有勾选上面的“Mount Read-Only”那一项。如果要使之可写入,还需要修改上图中下面那一行里面的 Arbitrary Option Value(其实就是 ntfs-3g 的选项参数),

users,gid=users,fmask=133,dmask=022,locale=en_US.UTF-8

关键就是其中的 fmask(文件权限)和 dmask(目录权限),改为,

users,gid=users,fmask=002,dmask=002,locale=en_US.UTF-8

其中 locale 是用来设置成中文环境以显示中文的,可以改为 locale=zh_CN.UTF-8

这里的设置需要重启电脑才能生效。

建议为了 Windows 系统的安全和稳定,不要对系统盘执行可写入设置。

挂载为普通用户所有

某些时候可能希望能够将挂载后的分区的文件或文件夹的属主改为某个用户,也就是应用 chmod 或者 chown 操作。而实际上 NTFS 也是支持类似 Linux 文件系统中的这个属性的。只是需要在挂载的时候添加 permissions 选项。此时,上面的 ntfs-3g 选项参数组合可以改为,

permissions,user,users,gid=users,fmask=133,dmask=022,locale=en_US.UTF-8 0 0

然后就可以在挂载后将其所有者改成需要的用户,

sudo chown your_user:your_user /wind

当然也可以直接在挂载的时候直接将这个分区的属主设置为 your_user。此时,需要在挂载选项中设置 uid 和 gid。要查询当前用户的 uid,可以在命令行输入,

# id -u
1000

一般 power user 的 id 就是 1000 吧。gid 在 openSUSE 中默认是 users

然后将挂载选项修改为,

rw,uid=1000,gid=users,dmask=027,fmask=137,locale=en_US.UTF-8 0 0

这样重新启动后,查看该文件夹的属性应该就能看到其属主为当前用户了。

3. 附注

典型 ntfs-3g 选项:

  • users – 假如 ntfs-3g 可执行文件设置了 SUID root(命令:chmod u+s /bin/ntfs-3g),则允许任何人挂载/卸载 NTFS 分区。注意要用 users 而不是 user
  • noauto – 启动时不要自动挂载分区
  • uid – 指定 NTFS 分区中文件和目录的拥有者(用十进制数表示)
  • gid – 指定 NTFS 分区中文件和目录的用户组(用十进制数表示)
  • fmask – 文件权限(八进制数掩码)
  • dmask – 目录权限(八进制数掩码)
  • locale – 通常用来让使用国际化字符集的文件可见

掩码:

  • 可通过 umask 设置
  • 掩码 002 对应的文件/文件夹属性就是 775(002 = 777 – 002),775 权限对应为 ug : rwx,o : rx
    • u/g/o = user/group/everybody
    • r/w/x = read/write/execute
      • Read 4 – 允许读文件
      • Write 2 – 允许写/修改文件
      • eXecute 1 – 读/写/删除/修改/目录
    • 简单点的关系就是 002+775=777,权限最大值就是 777,表示任何人都可执行 1、写 2、读 4,1+2+4=7
  • 113 对应的就是 664

参考:

  • http://blog.csdn.net/huanyouchen/article/details/8100812
  • http://blog.chinaunix.net/uid-333424-id-2416469.html
  • https://wiki.archlinux.org/index.php/NTFS-3G
  • http://askubuntu.com/questions/11840/how-do-i-use-chmod-on-an-ntfs-or-fat32-partition
  • ntfs-3g 高级选项:http://www.tuxera.com/community/ntfs-3g-advanced/ownership-and-permissions/
  • http://askubuntu.com/questions/113733/how-do-i-correctly-mount-a-ntfs-partition-in-etc-fstab

©

本文发表于水景一页。永久链接:<https://cnzhx.net/blog/linux-auto-mount-ntfs-as-writable/>。转载请保留此信息及相应链接。

4 条关于 “Linux 开机自动挂载 NTFS 分区为可写” 的评论

  1. 写的很详细,不错,刚装的fedora23无法自动挂载,现在可以了

  2. 你好,按照你的方修改 。/etc/fstab/ 文件后再次开机就进入了 emergency mode 删除添加内容后才可以正常开机引导,请问是什么问题呢?系统是fedora 23

时间过去太久,评论已关闭。
如果您有话要说,请到讨论区留言并给出此文章链接。
谢谢您的理解 :-)