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

Car*_*zón 17 permissions windows mount directory ntfs

显然答案在这里: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
Run Code Online (Sandbox Code Playgroud)

它几乎按预期工作。我的 Windows 分区/media/windows/以只读权限打开,我的 Windows 个人文件夹位于~/Windows. 但是,此个人文件夹也是只读的。

注意我在多会话环境中配置它,所以我需要它为我的会话和其他用户的会话工作。我需要每个用户都可以访问并能够从 Linux 写入和读取他们的 Windows 文件夹。

tot*_*tti 9

上面链接的超级用户问题是在只读模式下挂载分区和子目录。您只需要可读写的子目录(个人文件夹)。

首先检查你的系统是否可以以读写方式挂载ntfs分区

mount -t ntfs-3g  -o rw /dev/sda1 /media/windows
Run Code Online (Sandbox Code Playgroud)

现在测试挂载的 fs 是否可写。如果不是停在这里并在本网站上提出另一个问题。

问题是 RO 挂载分区的子目录不能在 RW 中。所以解决方案是将 RW 中的 windows 分区挂载到一个隐藏且无法访问的地方。因此,让我们将它挂载到非 root 用户无法访问的/root/win上(没有sudo

root用户身份执行以下
步骤
1. 在 RW 中挂载 windows 分区

mount -t ntfs-3g -o rw /dev/sda1 /root/win  
Run Code Online (Sandbox Code Playgroud)

2.绑定

mount --bind /root/win/Users/MyUser/  /home/myuser/Windows  
Run Code Online (Sandbox Code Playgroud)

3.绑定一个只读的windows分区实例

mount --bind /root/win /media/windows  
mount -o remount,ro /media/windows
Run Code Online (Sandbox Code Playgroud)

现在一切正常。此外,您可以卸载 Windows 分区,但我警告您在某些系统中它会使绑定的 (@home) 无法访问。代码是umount /root/win

或者,您可以在/media/windows(而不是 /root/win)的RW 中挂载 windows 分区,并立即将其绑定挂载在同一挂载点 (/media/windows) 上,这样任何人(甚至是 root)都不能写入分区(但在用户文件夹上)。


fal*_*ner 5

我怀疑链接的超级用户答案是否有效。(虽然我不能尝试。)来自man mount

请注意,文件系统挂载选项将与原始挂载点上的相同,并且无法通过将 -o 选项与 --bind/--rbind 一起传递来更改。挂载选项可以通过单独的 remount 命令更改,例如:

mount --bind olddir newdir
mount -o remount,ro newdir
Run Code Online (Sandbox Code Playgroud)

我也怀疑--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
Run Code Online (Sandbox Code Playgroud)

(我认为那--rbind也是不必要的,--bind应该足够了。)

关于问题下的评论:当然您不必重新启动系统进行测试,只需mount像我上面那样使用命令即可。(并使用umount命令卸载。)

在确认这按预期工作后,您只需修改挂载并添加所需的选项:uid、gid、umask 等。


小智 2

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

/dev/sda1 /media/windows ntfs rw ,umask=0222,默认 0 0


use*_*176 1

我建议使用 sudo chmod.666 ~/Windows

https://help.ubuntu.com/community/FilePermissions