问题描述
我目前正在使用 /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
我按照我期望的方式设置了所有权限,并且 chown
和 chmod
实际上更改了文件的设置(至少根据 ls -l
)=D
但是我的系统仍然以一种奇怪的方式运行。 adb
脚本文件的权限如上所示,但我和 Eclipse 都无法运行它而不会出现 “Permission denied” 错误。但据我所见,该文件设置了所有必需的标志( o=rwx
应该足够了,对吧?)。为什么它不起作用?
更新 3
好的,我在 Ubuntu 端完成了所有工作,有以下选项:
nls=iso8859-1,permissions,users,auto,exec
但是,当我尝试从 Windows 访问分区上的文件时,安全设置都搞砸了。在所有文件(我检查过的少数文件中)上,一个名为 Account Unknown(long GUID)
的新帐户已添加到用户列表中,并拥有完全权限。大多数其他用户的权利都减少了,所以我没有权利做我期望的事情。值得注意的是 “Everyone” 似乎不再有权“遍历文件夹/执行”。
只需选择分区并允许每个人在根文件夹上执行任何操作,然后告诉它递归地执行此操作,这可能就可以解决,但我宁愿不这样做,因为我担心这需要几天才能完成……
最佳办法
在选项列中添加 permissions
和 auto
(可能还有 user
或 users
)
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) 的 uid
和 gid
选项(或使用用户映射功能)
第三种办法
当我将 fstab 的行更改为
UUID=761C84B31C846FC3 /media/d ntfs defaults,umask=022,uid=1000 0 0