当前位置: 首页>>技术教程>>正文


在Ubuntu中挂载具有写入权限的Windows文件夹

, , , ,

问题描述

显然答案在这里: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 usernameid -g username。)

现在您可以使用以下命令安装它们:

sudo mount -a

现在转到重新绑定的目录并查看是否可以编辑该文件。你应该完成了。

第四种思路

在编辑 fstab 配置文件之前完成所有测试。

好吧,您可能知道,如果文件系统被标记为脏,ntfs 文件系统会自动以只读方式挂载。在尝试任何答案之前,您首先要做的就是在 Windows 中安装磁盘并运行 chkdsk,然后再尝试再次安装它。

另外,如果在 rw 中挂载仍然失败,您应该尝试使用不同的挂载类型选项进行挂载,例如 sudo mount -t ntfssudo mount -t ntfs-3g

一旦 fs 安装在 rw 中,您可以执行以下操作:

mount --bind /media/MOUNTPOINT/TARGETFOLDER /home/SHAREDDIRECTORY/ \n mount -o remount,ro /home/SHAREDDIRECTORY/

或者

sudo gksu nautilussudo gksu dolphin 打开具有 su 权限的资源管理器

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/14203.html,未经允许,请勿转载。