当前位置: 首页>>技术教程>>正文


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

, , ,

问题描述

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

/dev/sda3        /media/data           ntfs      nls=iso8859-1,umask=000

在我的 Ubuntu 11.10 安装中,所有文件和文件夹似乎都归 root 所有 – 而且由于 NTFS 并不真正支持相同的权限管理系统,因此在挂载完成后我无法更改它。无论我做什么,NTFS 分区上的任何位置的 ls -l 都会列出 root:root 拥有的每个文件和文件夹。

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

mv: preserving times for `[path to new file]`: Operation not permitted

或者,类似地

mv: preserving permissions for ...

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


更新:

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

nls=iso8859-1,permissions,users,umask=000,uid=tomas,gid=tomas

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

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

-rwxrwxrwx 1 tomas tomas 159620 2011-11-29 14:50 adb*

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

为什么上面的文件,对任何人都有执行权限,除了 root 之外的任何人都不能执行?如何更改挂载文件系统的方式?


更新 2:

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

nls=iso8859-1,permissions,users,auto

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

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


更新 3

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

nls=iso8859-1,permissions,users,auto,exec

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

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

最佳办法

在选项列中添加 permissionsauto (可能还有 userusers )

nls=iso8859-1,permissions,users,auto
  • permissions :(NTFS-3G 选项)对创建的文件设置标准权限并使用标准访问控制。

  • auto :将在引导时从 mount -a 挂载

  • user : 允许普通用户挂载文件系统

  • users : 允许每个用户挂载和卸载文件系统

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

sudo chown -R thomas:thomas /media/data 

我在 /etc/fstab 中的行

/dev/sda5 /media/ntfs ntfs-3g users,permissions,auto 0 0

挂载和列出权限

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

更改所有权并列出新权限

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

默认情况下,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

现在我们得到

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

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

bodhi@ufbt:~$ /media/ntfs/file
It works

次佳办法

使用 mount.ntfs (8)uidgid 选项(或使用用户映射功能)

第三种办法

当我将 fstab 的行更改为

UUID=761C84B31C846FC3 /media/d        ntfs    defaults,umask=022,uid=1000 0       0

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/13035.html,未经允许,请勿转载。