问题描述
显然答案在这里: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 文件夹。
最佳思路
上面链接的超级用户问题是以只读模式安装分区和子目录。您只需要对子目录(个人文件夹)进行读写即可。
首先检查你的系统是否可以以读写模式挂载ntfs分区
mount -t ntfs-3g -o rw /dev/sda1 /media/windows
现在测试挂载的文件系统是否可写。如果没有,请在此停止并在本网站中提出另一个问题。
问题是 RO 安装分区的子目录不能位于 RW 中。所以解决办法就是将RW中的windows分区挂载到一个隐藏且无法访问的地方。因此,让我们将其安装在非 root 用户无法访问的 /root/win 上(没有 sudo
)
以 root 用户身份执行以下\n步骤\n1.在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 中的 /media/windows(而不是 /root/win),并立即将其绑定挂载到同一挂载点 (/media/windows),这样任何人(甚至 root)都无法在该分区上写入分区(但在用户文件夹上)。
次佳思路
我怀疑链接的超级用户答案是否有效。 (虽然我不能尝试。)来自 man mount
:
\\n
Note that the filesystem mount options will remain the same as those on the original mount point, and cannot be changed by passing the -o\\n option along with –bind/–rbind. The mount options can be changed by a separate remount command, for example:
\\n
mount --bind olddir newdir
mount -o remount,ro newdir
我还怀疑 --rbind
是否可以成为具有不同文件系统驱动程序(ntfs 与 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 等。
第三种思路
看看这是否有帮助…
如果 sda1
已安装到 /media/windows
,您可以使用以下命令卸载它:
sudo umount /media/windows
接下来在 /media/
中创建目录 windows
:
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
(注意:更改用户的 uid 和 gid 值。要获取用户的 uid 和 gid,可以分别使用命令 id -u username
和 id -g username
。)
现在您可以使用以下命令安装它们:
sudo mount -a
现在转到重新绑定的目录并查看是否可以编辑该文件。你应该完成了。
第四种思路
在编辑 fstab 配置文件之前完成所有测试。
好吧,您可能知道,如果文件系统被标记为脏,ntfs 文件系统会自动以只读方式挂载。在尝试任何答案之前,您首先要做的就是在 Windows 中安装磁盘并运行 chkdsk,然后再尝试再次安装它。
另外,如果在 rw 中挂载仍然失败,您应该尝试使用不同的挂载类型选项进行挂载,例如 sudo mount -t ntfs
或 sudo mount -t ntfs-3g
一旦 fs 安装在 rw 中,您可以执行以下操作:
mount --bind /media/MOUNTPOINT/TARGETFOLDER /home/SHAREDDIRECTORY/
\n mount -o remount,ro /home/SHAREDDIRECTORY/
或者
sudo gksu nautilus
或 sudo gksu dolphin
打开具有 su 权限的资源管理器