在 Ubuntu 中安装具有写入权限的 Windows 文件夹

在 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 文件夹。

答案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)的文件系统的一部分。

当您使用rbindmount 命令时,它会忽略所有选项,因此不会有任何内容变为可读写。而且由于内核 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 usernameid -g usernameresp。)

现在您可以使用以下命令挂载它们:

sudo mount -a

现在转到重新绑定目录,看看是否可以编辑文件。然后就大功告成了。

答案4

为什么不尝试使用读写属性来挂载它:rw

/dev/sda1 /media/windows ntfs读写,umask=0222,默认值 0 0

相关内容