为每个人提供写入权限,挂载NTFS分区。

如何挂载一个NTFS分区,以便我的机器上的所有用户帐户都具有写入权限?我的挂载选项是什么?
nosuid,nodev,nofail,x-gvfs-show,nobootwait,uid=1000,gid=1002,fmask=113,dmask=002

这让我有写入权限,但当其他用户尝试删除文件时,会弹出错误消息。
Cannot move file to trash, do you want to delete immediately? 

据我理解,这是因为他们没有写入权限,而我想要改变这一点。
我创建了一个新的组(gid=1002),并将其分配为两个用户账户的主要组,但这并没有起到帮助作用。我还尝试了不使用fmask、dmask和uid选项进行挂载。

你还在遇到这个问题吗?试试不使用fmaskdmask,而是添加umask=001。这基本上给了每个人访问权限,除了"其他人"的执行权限。 - Alaa Ali
是的,问题仍然存在。我会尝试你的建议。 - daniels
我尝试了你的建议,但它没有起作用。 - daniels
我找到了问题所在。总结一下:那个错误并不意味着有“写入权限”问题,只是表示你无法将文件移动到垃圾箱,而是永久删除。然而,通常情况下你应该具有写入权限。尝试创建或删除文件。我将在大约7小时后发布答案。 - Alaa Ali
是的,两个用户都可以创建新文件。但只有我的账户(uid=1000)可以将文件移动到回收站。另一个用户(uid=1001)不能! - daniels
没错,就是这样。应该这样操作:删除所有的 uidgiddmaskfmaskumask 选项,然后只需加入名为 permissions 的选项。这样你就能和其他用户一样将文件移动到垃圾箱了。 - Alaa Ali
3个回答

根据我的理解,这是因为他们没有写入权限,而我想要改变这一点。
不,这个错误信息并不意味着他们没有写入权限。如果他们没有写入权限,你将无法右击并选择“移至回收站”或“删除”文件,也不能使用键盘上的Del按键。但由于你遇到了这个错误,说明用户确实有访问权限。
经过两小时的搜索,并在我的电脑上重现了这个错误,我找到了以下解释。
权限(所有者、群组所有者、文件和目录的权限)是在挂载时设置的。只有所有者才能将文件移动到回收站。为什么?因为当你将文件移动到NTFS分区的回收站时,会在分区的根目录下创建一个名为.Trash-的文件夹,其中是用户的uid,并且文件夹的所有者将是试图删除的用户。例如,如果用户名是daniels并且uid是1000,则会创建一个名为.Trash-1000的文件夹,而daniels将成为该文件夹的所有者。
所以,如果daniels是该分区的所有者,他将能够正常执行此操作。然而,如果另一个用户(假设称为alaa,uid=1001)尝试删除某些内容,系统会尝试创建一个.owner alaa的.Trash-1001文件夹。但是,在NTFS上,权限在挂载时设置(例如:它被设置为daniels),并且任何文件的“所有者”都无法更改,因此系统无法创建.Trash-1001文件夹,会提示你“无法将文件移动到回收站,是否立即删除?”
为了测试这个问题,试着在分区的根目录下手动创建一个名为.Trash-1001的文件夹(所有者将被设置为分区的所有者)。你会发现,在键盘上按下Del键对任何文件/文件夹都不会有任何反应,而右键单击项目时的选项将从Move to Trash变为Delete。我无法解释为什么会变成Delete,但这只是为了确认问题确实出现在.Trash-1001文件夹中。
在我看来,我认为这是一个错误。
解决方案(软性解决):
从挂载命令中删除所有的uid=gid=dmask=fmask=umask=选项,并添加permissions,所以我猜你的命令应该像这样:
nosuid,nodev,nofail,x-gvfs-show,nobootwait,permissions

我在我的电脑上尝试过这个方法,它有效;使用NTFS硬盘时,两个用户都可以将文件移动到垃圾箱。
以下是演示:
alaa@aa-lu:~$ sudo mount -o rw,permissions /dev/sdc2 /media/he
使用默认用户映射
alaa@aa-lu:~$ ls /media/he -la
总用量 104
drwxrwxrwx 1 root root  8192 Sep 24 21:20 .
drwxr-xr-x 6 root root  4096 Sep 24 21:18 ..
drwxrwxrwx 1 root root  4096 Dec 15  2012 Files on my hard disk
drwxrwxrwx 1 root root  4096 Jul  9 12:18 $RECYCLE.BIN
drwx------ 1 root root     0 Jan 22  2012 System Volume Information
然后,我使用我的用户名alaa删除了一些东西,然后以另一个用户aaa登录并删除了一些东西。两者都能够删除,这就是NTFS分区的情况。 阿拉@aa-lu:〜$ ls /media/he -la 总计 104 drwxrwxrwx 1 root root 8192 Sep 24 21:20 . drwxr-xr-x 6 root root 4096 Sep 24 21:18 .. drwxrwxrwx 1 root root 4096 Dec 15 2012 我硬盘上的文件 drwxrwxrwx 1 root root 4096 Jul 9 12:18 $RECYCLE.BIN drwx------ 1 root root 0 Jan 22 2012 系统卷信息 drwx------ 1 alaa alaa 0 Sep 24 21:20 .Trash-1000 drwx------ 1 aaa aaa 0 Sep 24 21:19 .Trash-1002
我不知道它是如何做到的,但它就是这样。
我找到了这个页面:所有权和权限 | Tuxera,它解释了这个问题,还有一个论坛帖子(http://www.tuxera.com/forum/viewtopic.php?f=2&t=27540),里面有一些有用的信息。不过,很遗憾我还没有阅读它们,所以无法准确解释这个permissions选项的作用。
我在这个部分的标题中说“解决方案(某种程度上)”,是因为现在你不再控制谁是分区的所有者,也不是组所有者,也不是读写权限。但是,当使用permissions选项挂载时,你可以看到一个“使用默认用户映射”,所以据我理解,有一个“用户映射”可以创建并与permissions一起使用,该映射将具有我们想要设置的所有者/权限。我还没有尝试过使用permissionsuid=以及所有其他选项进行挂载(我发布的Tuxera链接应该会解释这一点),但这可能也有效,既可以控制所有者/权限,又可以访问回收站。
当我阅读那些链接后,我会更新我的答案。

哇,不知怎么地我错过了你的回答...尽管一些早期的测试(使用permissions但没有uid=1000进行挂载)没有成功。即使具有ID为1000的用户也无法将文件移到回收站...奇怪。但还是谢谢你,我会再试几次看看能否解决问题。 - daniels

尝试将此添加到您的fstab文件中:
UUID=<YourPartitionUUID>  <YourMountPoint>  ntfs-3g  defaults,uid=1000,gid=46,utf8,dmask=000,fmask=111  0  0

如果你没有安装ntfs-3g, 你可以尝试安装它,或者只使用ntfs。

我尝试了,但没有帮助。我还尝试了各种uidgid的组合。似乎gid根本没有任何效果。只有在挂载选项中设置了uid的用户才能将文件移动到垃圾箱,但其他用户仍然会收到错误消息。 - daniels
我知道,对于像我们这样的非专业用户来说,这可能有点令人沮丧。将dmask和fmask值设置为以上(给予所有人读写权限)应该对您来说没问题。似乎其他部分需要稍微调整一下。也许您可以尝试使用auto,users而不是defaults,以及gid=100而不是gid=46 - Sadi

感谢Alaa Ali的帮助,添加了remount,对我来说效果很好。
使用sudo ntfsfix /dev/sdd2修复Windows未完全关闭的问题。
使用sudo mount -o rw,permissions,remount /dev/sdd2 /home/disk1重新挂载/dev/sdd2到/home/disk1,并设置读写权限。