挂载具有写入权限的 NTFS 分区,供所有人使用

dan*_*els 5 fstab mount ntfs 12.10

如何挂载 NTFS 分区以便我机器上的所有用户帐户都具有写访问权限?我的安装选项是

nosuid,nodev,nofail,x-gvfs-show,nobootwait,uid=1000,gid=1002,fmask=113,dmask=002
Run Code Online (Sandbox Code Playgroud)

这给了我写权限,但是当其他用户尝试删除文件时,会弹出错误消息

Cannot move file to trash, do you want to delete immediately? 
Run Code Online (Sandbox Code Playgroud)

据我了解,这是因为他们没有写访问权限,而这正是我想要更改的。

我创建了一个新组(使用gid=1002)并将其作为主要组分配给两个用户帐户,但这没有帮助。我还尝试在没有fmask,dmaskuid选项的情况下进行安装。

Ala*_*Ali 5

据我了解,这是因为他们没有写访问权限,而这正是我想要更改的。

不,此错误消息并不意味着他们没有写访问权限。如果他们没有写入权限,您将无法右键单击并“移至废纸篓”或“删除”文件,或使用Del键盘按钮。但是由于您收到此错误,这意味着用户确实有权访问。

经过两个小时的搜索,并在我的电脑上重现了这个错误,这就是我发现的。

解释

权限(所有者、组所有者、文件和目录权限)在挂载时设置。只有所有者才能将文件移至回收站。为什么?因为当你将文件移动到 NTFS 分区的垃圾箱时,会在该分区.Trash-<uid>的根目录中创建一个名为的文件夹,其中<uid>uid用户的文件夹,该文件夹的所有者将是尝试删除的用户。例如,如果用户名是danielsuid为1000,一个称为文件夹.Trash-1000被创建,并且daniels将是所有者。

因此,如果daniels是分区的所有者,他将能够正常执行此操作。但是,如果另一个用户(假设称为alaa、 和uid=1001)尝试删除某些内容,系统会尝试创建一个.Trash-1001文件夹,其所有者为alaa。但是,在NTFS上,权限是在挂载时设置的(例如:设置为daniels),并且任何文件的“所有者”都无法更改,因此系统无法创建.Trash-1001文件夹,提示您Cannot move file to trash, do you want to delete immediately?

要对此进行测试,请尝试在命名分区的根目录中手动创建一个文件夹.Trash-1001(所有者将设置为分区的所有者)。您会发现Del在任何文件/文件夹上敲击键盘都不会执行任何操作,并且当您右键单击某个项目时,该选项将从Move to Trash变为Delete。我无法解释为什么它会更改为Delete,但这只是为了确定问题确实出在.Trash-1001文件夹中。

在我看来,我将此归类为错误。

解决方案(软...)

删除你的所有uid=gid=dmask=fmask=,并umask=从选项你mount命令,并添加permissions,所以我想你行应该是这样的:

nosuid,nodev,nofail,x-gvfs-show,nobootwait,permissions
Run Code Online (Sandbox Code Playgroud)

我在我的电脑上试过这个,它有效;使用 NTFS 硬盘时,两个用户都可以移至垃圾箱。

这是一个演示:

alaa@aa-lu:~$ sudo mount -o rw,permissions /dev/sdc2 /media/he
使用默认用户映射
alaa@aa-lu:~$ ls /media/he -la
共 104
drwxrwxrwx 1 根 8192 9 月 24 日 21:20。
drwxr-xr-x 6 根 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 系统卷信息

然后我使用我的用户名删除了一些东西alaa,然后以另一个用户身份登录aaa并删除了一些东西。它们都可以删除,这就是 NTFS 分区的样子:

alaa@aa-lu:~$ ls /media/he -la
共 104
drwxrwxrwx 1 根 8192 9 月 24 日 21:20。
drwxr-xr-x 6 根 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,并且该映射将具有所有者/我们要设置的权限。我也没有尝试过使用permissionswithuid=和所有其他选项进行安装(我发布的 Tuxera 链接应该解释这一点),但这也可能有效,通过控制所有者/权限并同时允许访问垃圾箱。

当我阅读这些链接时,我会更新我的答案。