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


17

显然答案是在这里: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文件夹。


有什么方法可以更改和测试配置,而不必重新启动整个系统。到目前为止,我已经尝试过将umask(更改为0002),添加uid和gid参数等,但没有得到任何积极的结果,但是每次更改都需要关闭系统。
卡洛斯·尤金尼奥·汤普森

我已经将100英镑的奖金授予了totti这个想法,或者将其安装在下面/root/(正在运行)。我当前的解决方案使用了falconer,ajTapa,totti和yilmi提供的提示,它们都没有按原始问题中的预期运行(保护不够),但是运行正常(用户可以通过rw访问其数据)。所有这些提到的答案都被赞成。
卡洛斯·尤金尼奥·汤普森

Answers:


6

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

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

mount -t ntfs-3g  -o rw /dev/sda1 /media/windows

现在测试安装的fs是否可写。如果还不止于此,请在此站点中提问。

问题是RO挂载分区的子目录不能位于RW中。因此,解决方案是将Windows分区安装在RW中的隐藏且不可访问的位置。因此,让我们将其挂载到非root用户无法访问的/ root / win上(不带sudo

root用户身份执行以下
步骤
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分区挂载在/ media / windows的 RW中(而不是/ root / win),然后立即将其绑定到同一挂载点(/ media / windows),这样,没有人(甚至是root)也可以在分区(但在用户文件夹上)。


它行得通吗?什么问题
totti 2013年

第一部分,在/ media / windows中安装rw似乎可以正常工作,尽管它没有报告w权限,而我实际上可以触摸和编辑文件。
卡洛斯·尤金尼奥·汤普森

重新安装时,出现以下错误:Remounting is not supported at present. You have to umount volume and then mount it once again.
Carlos Eugenio ThompsonPinzón2013年

我认为这是您系统的问题。我已经在ubuntu 12.10中成功测试了此功能。我什至在ubuntu 10.04中也从未见过这样的错误。您可以在实时系统中尝试它(因为您似乎已更新了操作系统)。
totti 2013年

也感谢我的+1,以提供一个优雅的解决方案和一个非常清晰的解释。我特别喜欢挂载用户文件夹的技巧,这样一个用户(甚至根用户)就可以在用户文件夹之外的其他设备上进行写操作。这确实是最好的解决方案,因为除了Windows 8.1实例(系统文件所属的操作系统实例)以外,没有其他操作系统实例可以访问这些系统文件。但是,共享数据则是另一回事。
比尔猿

5

我怀疑链接的超级用户答案是否有效。(尽管我无法尝试。)来自man mount

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

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等。


好了,我可以使用进行测试mount,但是当我找到有效的配置时,我会希望通过/etc/fstab或通过任何其他方式自动进行配置。(关于Ob问题:如何将mount命令转换为fstab参数?)
Carlos Eugenio ThompsonPinzón2013年

@CarlosEugenioThompsonPinzón这fstab只是一个文件,mount在启动时会被命令顺序解析。但是我认为Ubuntu不使用mount而是mountall在启动时使用,它可能无法按顺序在fstab中运行命令。所以是的,仅将这些命令参数设置为fstab可能不起作用。但是,您始终可以将工作安装命令简单地放入启动脚本(例如/etc/rc.local)中,或从中执行新手工作。在您的情况下,更重要的是找到一个可行的安装方案,使其在启动时自动安装是一件容易的事。
falconer 2013年

@CarlosEugenioThompsonPinzón糟糕,我错过了您发表的最后一个评论。那么mount命令如何转换为fstab?您可以在man mount此处查找它。简短的故事:第一个字段:要安装的设备,第二个字段:安装点,第三个字段:fs-type(更确切地说是fs驱动程序),第四个字段:安装选项,其他字段现在不那么重要。因此,从mount命令开始,我们在后面编写的字符串-t进入第三个字段,我们在后面编写的字符串-o进入第四个字段。
falconer 2013年

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

注意:更改用户的uidgid值。要获取用户的uid和gid,可以使用命令id -u usernameid -g usernameresp。)

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

sudo mount -a

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


好的,我具有root的rw权限/media/windows(未在中报告ls,但我可以编辑文件),但是我需要在本地目录sudo中才能修改文件。
卡洛斯·尤金尼奥·汤普森

...,现在所有挂载的目录都属于我(用户1000),从/media/windows/home/someotheruser/Windows
卡洛斯·尤金尼奥·汤普森

我想现在您和其他用户可以分别制作和保存作品了。用户$ HOME中的安装点...如果其余用户仍然无法访问RW,请将它们添加到您的组中(可能是gid 1000)
2013年

目前,我有一个所有本地用户都连接到的组,并且正在向该组授予写权限。这解决了“每个用户都可以读写自己的数据”,但是整个分区和其他用户的数据均不受保护。
卡洛斯·尤金尼奥·汤普森

3

在编辑fstab配置文件之前,请执行所有测试。

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

另外,如果在rw中安装仍然失败,则应尝试使用其他安装类型选项进行安装,例如sudo mount -t ntfssudo mount -t ntfs-3g

将fs安装到rw中后,您可以执行以下操作:

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

要么

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


谢谢你的帮助chkdsk。实际上,NTFS分区中存在一些损坏,现在我可以使用写入已装入的驱动器sudo
卡洛斯·尤金尼奥·汤普森

2

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

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


我将进行检查,但是我宁愿整个分区都是只读的,而只有某些特定的文件夹为可读写的。
卡洛斯·尤金尼奥·汤普森

没用 分区和文件夹仍然是只读的。唯一的区别是chmod和chown不会报告一个只读错误:它们只是不工作。
卡洛斯·尤金尼奥·汤普森

2

不过,我不太确定,请您试试。安装驱动器后,在终端上发出以下命令

sudo gksu nautilus

输入管理密码,然后在打开的图形窗口中,单击驱动器并更改读/写权限。

让我知道这个是否奏效。对于具有root特权的图形界面使用nautilus,可以使用帮助。


这将允许访问文件,并且也可以将其复制掉,但是只读权限可能不会更改,因为非unix文件系统被挂载为只读...
Wilf 2013年


0

将Windows以读写方式挂载的最简单方法是简单地重新启动Windows或完全关闭它。当使用“快速关闭”时,NTFS分区进入休眠状态。此链接将更详细地介绍此原理

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.