我有一个 NTFS 分区,我想自动挂载它,这样我就不必打开 Nautilus 并在设备下单击它。如果我使用 Nautilus 挂载,然后键入
mount
,我会看到以下行:
/media/Data 类型 fuseblk 上的 /dev/sdb1(rw、nosuid、nodev、allow_other、default_permissions、blksize=4096)
我是所有文件的所有者,权限也是我想要的(umask 077
在 .bashrc 中有)。但是,按照安装Windows分区,并将以下行添加到 fstab
UUID=4A92C07A92C06C4F /media/Data ntfs-3g 默认值,windows_names,locale=en_GB.utf8 0 0
驱动器确实会自动挂载,但所有文件权限均为 -rwxrwxrwx,且用户和组均为 root。该mount
命令现在显示
/media/Data 类型 fuseblk 上的 /dev/sdb1 (rw、nosuid、nodev、allow_other、blksize=4096)
如何在 fstab 中指定参数,以便分区以与单击 Nautilus 中的设备下的设备时相同的方式安装?我有 Ubuntu 12.04。
答案1
fuse
与 中的系统范围挂载相比,nautilus 执行的挂载有一个优势:/etc/fstab
它知道哪个用户正在执行挂载。假设您是客户端计算机的唯一用户(这在当今已经足够公平了),您可以使用以下命令获取您的数字 UID 和 GID 以及默认 umask:
$ id
uid=1001(msw) gid=1001(msw) groups=…
$ umask
0002
然后你可以将这些添加到选项组中fstab
defaults,uid=1001,gid=1001,umask=077,windows_names,locale=…
这将是明智的,但不是必须的,以defaults
取代
auto,rw,nosuid,nodev,noexec
nautilus 假定用户安装的分区是“不受信任的”,因此以这种方式标记它们。外部(即 NTFS)分区可能始终应该被怀疑。
添加以回应评论:
这是跨系统语义变得奇怪的领域。mount.ntfs(8) 手册定义了fmask
并dmask
尝试使在 NTFS 文件系统上创建的文件表现更好。我可以ls
在 Windows 下访问不属于我的目录吗?我应该可以吗?您在 Linux 和 Windows 上的 UID 之间有什么关系吗?不知道。
mount.ntfs有一个usermapping=
选项,它取代了 uid、gid、umask、fmask 和 dmask。如果您想要精确控制哪些文件分配了哪些权限,我建议您研究一下。在用户映射挂载下提交太多内容之前,我会检查您是否可以从 Windows 端访问它们。