挂载Windows分区的最佳实践


13

我在笔记本电脑上运行Windows和Debian的双启动。我主要使用Linux,但有时需要访问Windows分区中的文件。我的Windows分区在启动时按以下方式安装。

>cat /etc/fstab |grep Win7
LABEL=Windows7_OS /mnt/Win7 auto nosuid,nodev,nofail,x-gvfs-show 0 0

基本上Windows分区中的每个文件都由root:root拥有,并具有777权限。然后每当我将文件转换到工作的(Linux)分区时,我的分区下都会有一个777文件,该文件归我所有(而终端中的cp会提供755文件,但如果通过gnome完成操作,则该文件将获得777许可) 。

这是安装分区的最佳实践吗?还是我应该以非root用户身份挂载它,而是所有文件/目录的所有者,并且在引导时进行挂载时能够以某种方式将所有目录设置为755,并将文件设置为644?如果是这样,怎么办?


2
小花絮(uooc ...):grep Win7 /etc/fstab
Olivier Dulac

Answers:


17

您可以使用fmaskdmask安装选项*更改ntfs文件系统上的权限映射。

要显示文件rw-r--r--(644)和目录rwxr-xr-x(755),请使用fmask=0133,dmask=0022。如果需要用户的写权限,则可以将其与uid=gid=选项结合使用以选择文件所有者和组。

* fmask并且dmask似乎也适用于内核(只读)驱动程序,即使未在mount手册页中对其进行记录。它们是ntfs-3g的已记录选项。


我的默认umask已经是0022。但是,当我使用Win7终端到我的家来制作文件时,文件仍然是
777。– albertma789

2
答案中的fmask和dmask是安装选项。当您在fstab中更改它们并重新安装文件系统时,Windows文件系统中的文件/目录将显示为具有644/755权限,而不是777/777。
sebasth

5
LABEL=Windows7_OS /media/Win7 auto nosuid,nodev,nofail,x-gvfs-show,x-gvfs-name=Windows,uid=1000,gid=1000,fmask=0133,dmask=0022 0 0奇迹般有效。正是我需要的!
albertma789 '17

是否可以为特定文件系统(FAT32 / NTFS)而非特定驱动器设置此类默认值?使用闪存驱动器和其他可移动媒体时,最好使用此功能。
JAB


7

首先,这不是应该使用/ mnt的方式。那是为了在文件系统上临时执行管理任务,而不是每次系统启动时都执行。

由于Windows分区不影响Linux系统的运行,因此将其挂载在/ media下是有意义的。您可能还需要考虑将其挂载在根目录/下,作为/ Windows,以避免将/ media用作可移动介质。

至于权限,我将使用一个称为Windows的组

groupadd -g 1001 Windows

并使用以下选项为其提供所需的权限:

gid=1001,umask=022

如果要使用cp并维护单独文件系统之间的权限,请使用带有-p或-a标志的cp。


我的默认umask已经是0022。但是,当我使用Win7终端从Mv到家中制作文件时,该文件仍然是777。建议将其挂载到/ media上!
albertma789 '17

在文件系统之间复制文件时,除非保留它们,否则将使用该文件系统的默认权限。请参阅我更新的答案。
jdwolf

虽然我同意/mnt对于挂载点不是最佳选择,但/media对于可移动媒体(例如DVD和USB驱动器)来说并不是最佳选择。我不确定应该发生挂载的地方有一个好的答案:unix.stackexchange.com/questions/29134/…–
StrongBad

@StrongBad文件系统层次结构标准不是那么标准,特别是在目录上,因为旧的Unix已有。例如,FHS 2.3并未反映/ run的当前实践。查看FHS 3.0 refspecs.linuxfoundation.org/FHS_3.0/fhs/ch03s11.html,它进一步指示不要为此使用/ mnt,但是其原理比“技术上来说,Windows并非可移动媒体”要清晰得多。在/ root上挂载自己的目录没有任何问题。
jdwolf

4

使用安装选项uidgidfmask并且dmask可以使整个NTFS文件系统的普通用户帐户和/或一个组访问。但这不是全部:不管是关于NTFS文件系统,它就像在Windows中一直以完全管理员身份运行,或者像在Linux中以root用户身份执行所有操作。在ntfs-3gNTFS文件系统驱动程序可以做的更好。

如果使用ntfs-3g,则可以使用该ntfsusermap命令为NTFS文件系统创建用户映射文件。该命令将帮助您识别Windows用户名及其对应的Windows SID,并将它们与Linux用户和组ID关联。

这样,您可以将Windows用户帐户的SID与Linux UID关联。这样,一旦将NTFS文件系统挂载到位置并将用户映射文件安装到位<NTFS filesystem root>/.NTFS-3G/UserMapping,就可以使用常规Linux用户帐户来访问NTFS文件系统,就像访问Windows用户帐户一样。对于Windows中需要管理员权限的事情,在Linux中仍需要root用户。

这样,您将可以方便地访问Windows分区上的文件,但是仍然可以防止\Windows使用错误键入的命令弄乱目录,除非您以root身份运行。

您可能还希望windows_names在NTFS分区上使用mount选项,以防止意外创建Windows无法访问的文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.