启动时挂载 NTFS 分区,以非 root 用户为所有者

Tom*_*han 33 permissions fstab mount ntfs

我目前正在使用 /etc/fstab 中的以下行在启动时挂载 NTFS 分区:

/dev/sda3        /media/data           ntfs      nls=iso8859-1,umask=000
Run Code Online (Sandbox Code Playgroud)

对于我的 Ubuntu 11.10 安装,看起来好像所有文件和文件夹都归root- 而且由于 NTFS 无论如何都不真正支持相同的权限管理系统,因此在安装完成后我无法更改它。无论我做什么,ls -lNTFS 分区上的任何地方都会列出root:root.

但是,这给我带来了一些问题。最值得注意的是,在我的帐户下运行的一些应用程序(称为tomas)抱怨访问权限。此外,每当我尝试将 ( cp) 或 ( mv) 文件从我的 ext3 分区之一复制到 NTFS 分区时,我都会收到错误消息说

mv: preserving times for `[path to new file]`: Operation not permitted
Run Code Online (Sandbox Code Playgroud)

或者,类似地

mv: preserving permissions for ...
Run Code Online (Sandbox Code Playgroud)

以我的名字而不是 root 来安装分区会有帮助吗?如果是这样,我如何在 fstab 中完成它?


更新:

我现在已经根据建议更改了选项,并得出以下结论:

nls=iso8859-1,permissions,users,umask=000,uid=tomas,gid=tomas
Run Code Online (Sandbox Code Playgroud)

ls -l现在显示我所有的文件而不是root所有的文件,看来我之前遇到的一些问题已经解决了。然而,并非全部。

当我启动 Eclipse 时,我收到一个错误,提示无法运行与 android-sdk 相关的文件:权限被拒绝。ls -l告诉我有关该文件的以下信息:

-rwxrwxrwx 1 tomas tomas 159620 2011-11-29 14:50 adb*
Run Code Online (Sandbox Code Playgroud)

这看起来像我想要的那样。但是如果我尝试运行它(./adb在终端中),我也会收到权限被拒绝的错误。但是如果我用 运行它sudo,它就可以工作(我相信 - 至少它不会给我一条错误消息,但它根本不会给我任何输出,我认为它不应该......)

为什么上述文件对任何人都具有执行权限,但仍然不能被其他人执行root?如何更改挂载文件系统的方式?


更新 2:

好的,我现在已经走得更远了。通过使用这些选项进行安装

nls=iso8859-1,permissions,users,auto
Run Code Online (Sandbox Code Playgroud)

我按照我期望的方式设置了所有权限,chown并且chmod实际上更改了文件的设置(至少根据ls -l)=D

但是我的系统仍然以一种奇怪的方式运行。adb脚本文件的权限如上所示,但我和 Eclipse 都无法在没有“权限被拒绝”错误的情况下运行它。但据我所知,该文件设置了所有必需的标志(o=rwx应该足够了,对吧?)。为什么不起作用?


更新 3

好的,我在 Ubuntu 端完成了所有工作,有以下选项:

nls=iso8859-1,permissions,users,auto,exec
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试从 Windows 访问分区上的文件时,安全设置全都搞砸了。在所有文件(我检查过的那些文件中)上,一个名为的新帐户Account Unknown(long GUID)已添加到用户列表中,并且拥有完全权限。大多数其他用户的权限减少了,因此我无权做我期望的事情。值得注意的是,“每个人”似乎不再有权“遍历文件夹/执行”。

可能可以通过选择分区并允许每个人在根文件夹上执行任何操作来解决,然后告诉它递归执行,但我宁愿不这样做,因为我担心这需要几天时间才能完成...

Pan*_*her 32

在选项栏中添加permissionsauto(可能userusers

nls=iso8859-1,permissions,users,auto
Run Code Online (Sandbox Code Playgroud)
  • permissions:(NTFS-3G 选项)对创建的文件设置标准权限并使用标准访问控制。
  • auto: 将在启动和从 mount -a
  • user: 允许普通用户挂载文件系统
  • users: 允许每个用户挂载和卸载文件系统

然后更改文件系统的所有权:

sudo chown -R thomas:thomas /media/data 
Run Code Online (Sandbox Code Playgroud)

我的线路 /etc/fstab

/dev/sda5 /media/ntfs ntfs-3g users,permissions,auto 0 0
Run Code Online (Sandbox Code Playgroud)

挂载和列出权限

sudo mount /media/ntfs
Using default user mapping

bodhi@ufbt:~$ ls -l /media

drwxr-xr-x 1 root root 4096 2012-01-04 17:08 ntfs
Run Code Online (Sandbox Code Playgroud)

更改所有权并列出新权限

bodhi@ufbt:~$ sudo chown bodhi:bodhi /media/ntfs

bodhi@ufbt:~$ ls -l /media

drwxr-xr-x 1 bodhi bodhi 4096 2012-01-04 17:10 ntfs
Run Code Online (Sandbox Code Playgroud)

默认情况下,ntfs-3g 挂载分区 noexec、nosuid 和 nodev。

  • noexec: 不允许在挂载的文件系统上直接执行任何二进制文件。
  • nosuid: 不允许 set-user-identifier 或 set-group-identifier 位生效。
  • nodev: 不要解释文件系统上的字符或块特殊设备。

要覆盖它并允许执行文件,请使用 exec

/dev/sda5 /media/ntfs ntfs-3g exec,permissions,auto 0 0
Run Code Online (Sandbox Code Playgroud)

现在我们得到

bodhi@ufbt:~$ ls -l /media/ntfs

-rwx------ 1 bodhi bodhi 28 2012-01-04 17:16 file

bodhi@ufbt:~$ /media/ntfs/file
It works
Run Code Online (Sandbox Code Playgroud)

  • 嗯...我必须暂时取消标记:事实证明,这在从 Windows 读取文件时弄乱了权限... (2认同)