显然答案就在这里:https://superuser.com/questions/251537/mount-specific-ntfs-directory-on-linux但它没有按预期工作。
我有一个双启动系统,Windows 7 和 Ubuntu 13.04(从 12.10 升级而来),我想访问我的 Windows 7 个人文件夹进行读写。我按照给定的链接进行操作,我的/etc/fstab
文件如下所示:
/dev/sda1 /media/windows ntfs ro,umask=0222,defaults 0 0
/media/windows/Users/MyUser/ /home/myuser/Windows ntfs-3g rbind,user,umask=0222,defaults 0 0
/media/windows/Users/OtherUser/ /home/otheruser/Windows ntfs-3g rbind,user,umask=0222,defaults 0 0
它几乎按预期工作。我的 Windows 分区处于打开状态,/media/windows/
具有只读权限,我的 Windows 个人文件夹处于打开状态~/Windows
。但是,此个人文件夹也是只读的。
注意:我在多会话环境中配置此功能,因此我需要此功能适用于我的会话和其他用户的会话。我需要每个用户都可以从 Linux 访问并写入和读取他们的 Windows 文件夹。
答案1
上面链接的超级用户问题是关于安装分区和子目录只读模式。您只需要子目录(个人文件夹)是读写的。
首先检查你的系统是否可以挂载NTFS分区处于读写模式
mount -t ntfs-3g -o rw /dev/sda1 /media/windows
现在测试挂载的文件系统是否可写。如果不行,请停在这里并在此站点上询问其他问题。
问题是 RO 安装分区的子目录不能位于 RW 中。因此,解决方案是将 Windows 分区安装在 RW 中一个隐藏且无法访问的地方。因此,让我们将其安装在/根/胜利非 root 用户无法访问(没有sudo
)
作为一个根用户执行以下
步骤
1. 在 RW 中安装 Windows 分区
mount -t ntfs-3g -o rw /dev/sda1 /root/win
2. 绑定
mount --bind /root/win/Users/MyUser/ /home/myuser/Windows
3.绑定windows分区的只读实例
mount --bind /root/win /media/windows
mount -o remount,ro /media/windows
现在一切都应该正常了。此外,您可以卸载 Windows 分区,但我警告您,在某些系统中,这将使绑定的分区 (@home) 无法访问。代码是umount /root/win
或者,您也可以将 Windows 分区挂载到 RW 中/媒体/窗口(而不是 /root/win)并立即将其绑定挂载在同一个挂载点(/media/windows),这样没有人(甚至 root)可以在该分区上写入(但可以在用户文件夹上写入)。
答案2
我怀疑链接的超级用户答案是否有效。(虽然我不能尝试。)来自man mount
:
请注意,文件系统挂载选项将与原始挂载点上的选项保持一致,并且无法通过传递 -o 选项和 --bind/--rbind 来更改。挂载选项可以通过单独的 remount 命令更改,例如:
mount --bind olddir newdir
mount -o remount,ro newdir
我还怀疑是否有可能使用--rbind
具有不同文件系统驱动程序(ntfs vs ntfs-3g)的文件系统的一部分。
当您使用rbind
mount 命令时,它会忽略所有选项,因此不会有任何内容变为可读写。而且由于内核 ntfs 驱动程序不支持写入,因此该rw
选项显然也无济于事。请使用 ntfs-3g 驱动程序。
基本上你应该做的是这样的(在终端中):
mount -t ntfs-3g -o ro /dev/sda1 /media/windows
mount --bind /media/windows/Users/MyUser/ /home/myuser/Windows
mount -o remount,rw /home/myuser/Windows
(我觉得那--rbind
也是没有必要的,--bind
应该足够了。)
关于问题下的评论:当然,您不必重新启动系统进行测试,只需使用mount
我上面的命令即可。 (并使用命令卸载umount
。)
确认其按预期工作后,只需修改挂载并添加所需的选项:uid、gid、umask 等。
答案3
看看这是否有帮助...
如果sda1
已经安装到/media/windows
,您可以使用以下命令卸载它:
sudo umount /media/windows
接下来创建目录windows
:/media/
sudo mkdir /media/windows
编辑/etc/fstab
如下:
/dev/sda1 /media/windows ntfs-3g rw,nodev,noexec,auto,nouser,async,locale=en_US.utf8,uid=1000,gid=1000,umask=0002 0 0
/media/windows/Users/MyUser/ /home/myuser/Windows ntfs-3g rbind,user,rw,nodev,noexec,auto,async,uid=1000,gid=1000,umask=0002 0 0
/media/windows/Users/OtherUser/ /home/otheruser/Windows rbind,user,rw,nodev,noexec,auto,async,uid=1001,gid=1001,umask=0002 0 0
(笔记: 改变用户ID和组值与用户相同。要获取用户的 uid 和 gid,您可以使用命令id -u username
和id -g username
resp。)
现在您可以使用以下命令挂载它们:
sudo mount -a
现在转到重新绑定目录,看看是否可以编辑文件。然后就大功告成了。
答案4
为什么不尝试使用读写属性来挂载它:rw
?
/dev/sda1 /media/windows ntfs读写,umask=0222,默认值 0 0