如何在/ etc / fstab中正确挂载NTFS分区?


72

在无监督的自动播客下载充满整个分区之后,出现了令人讨厌的一幕(第二秒钟,您会以为我会学到),我终于搬到~/Music了自己的分区。我正在使用的分区已经格式化为NTFS(这是个天才之处:三年前,当我买到这台计算机时,我实际上是为它设置了20G音乐分区,因为我以前曾遇到过此问题,但实际上我从未组织我自己来存储音乐,这就是我的背景故事,这是我现在需要的:

我有两个要在启动时开始挂载的分区:

/dev/sda3   /mnt/devel  ext4    defaults    0   2
/dev/sda2   /mnt/excess ntfs    defaults    0   2

ext4分区可以很好地挂载(由我拥有,只能由我写),但是ntfs可以由root拥有,并具有对所有人的读写权限。我不确定如何解决此问题。关于ntfs是否有些古怪,还是我在其他地方做了导致此问题的事情?

drwxr-xr-x  7 amanda amanda 4096 2012-03-14 19:07 devel
drwxrwxrwx  1 root   root   4096 2012-03-14 22:38 excess

提供选项“ noatime”或“ relatime”,建议将其用于永久性ntfs挂载(请参见man mount.ntfs)。我也有ext3 / 4和ntfs的硬盘繁忙问题!

Answers:


89

为NTFS和VFAT文件系统权限必须与设置dmaskfmaskumask选项。dmask控制目录的权限,fmask控制文件的权限,并同时umask控制两者。由于这些选项设置了masks,因此它们应该是所需权限的补充。例如,所有者的rwx和其他所有者的rx是022,而不是755。

要设置所有者,请分别对用户和组使用uidgid选项。您可以使用命令找到您的UID id -u。要找到您的GID,请使用id -g。这些值通常都是1000。

ntfs的一组常见安装选项是uid=1000,gid=1000,dmask=027,fmask=137。这会将您设置为驱动器的所有者,并将权限设置为drwxr-x---

这是我的/ etc / fstab工作的两行

UUID=EEA2B69CA2B668AB        /WIN_C     ntfs-3g   defaults,nls=utf8,umask=000,dmask=027,fmask=137,uid=1000,gid=1000,windows_names 0 0 
UUID=65AEC0E830EA0497        /WIN_D     ntfs-3g   rw 0 0

如果重新启动后没有看到可见的错误,并且分区保持只读状态,或者出现类似以下的错误:

Error mounting /dev/sda6 at /media/WindowsDrive: 
Command-line `mount -t "ntfs" -o "uhelper=udisks2,nodev,nosuid,uid=1000,gid=1000,dmask=0077,fmask=0177" "/dev/sda6" "/media/rolindroy/Media Center"' exited with non-zero exit status 14: The disk contains an unclean file system (0, 0). 
Metadata kept in Windows cache, refused to mount. 
Failed to mount '/dev/sda6': Operation not permitted The NTFS partition is in an unsafe state. 
Please resume and shutdown Windows fully (no hibernation or fast restarting), or mount the volume read-only with the 'ro' mount option

这是因为Windows 8和10提供了“快速启动”选项,该选项取决于“不完全”关闭。您可以按照“电源选项”下的以下步骤禁用快速启动。



这的确是上述许多原因的根源。我还提供了一些有关* mask选项如何工作的详细说明。
bessman 2012年

3
您能否提供一个更完整的示例,以显示从/etc/fstab
puk 2013年

3
@puk,我有UUID=3030BD846F74E514 /media/iam/ntfspartition ntfs-3g uid=1000,gid=1000,dmask=022,fmask=133 0 0,正如我在askubuntu.com/a/507326/221448(我也提到过bind)中所包含的那样
Brady Trainor 2014年

1
@ScottFuid=0,gid=0
wjandrea

34

如果使用权限选项挂载ntfs分区,则chmod / chown将起作用

/dev/sda2   /mnt/excess ntfs-3g    permissions,locale=en_US.utf8    0   2

那你可以

sudo chown your_user:your_user /mnt/excess

然后比uid,dmask,fmask更容易。


sudo chown命令有任何不利/副作用吗?它到底是做什么的?
ReneSac 2015年

5
chown命令将安装点(/ mnt / excess)的所有者更改为所需的用户。根据我的经验(至少在每次重新启动后),每次装入分区时都必须重复执行此步骤……因此,做正确的事情,设置uid / gid / umask ...我一直认为fmask和dmask是可选-例如当您需要不同的文件和目录权限时。
–thecarpy

7

我遇到了一些麻烦,因为当我重新启动时,磁盘名称更改了...(sda0到sdb2

我通过在fstab中通过UUID挂载来解决问题,您可以通过输入以下内容查看硬盘驱动器的UUID: sudo blkid

备份fstab文件:

sudo cp /etc/fstab /etc/fstab.orig

确保三重检查>>,如果放置>,则覆盖fstab!

sudo blkid >> /etc/fstab

如果仍然搞砸了,可以将fstab替换为原始文件:

sudo cp /etc/fstab.orig /etc/fstab

接下来制作一个文件夹:

sudo mkdir /media/mydrivename

配置fstab:

sudo vim /etc/fstab

不要忘了在行的开头用b来注释blkid的输出!

将其添加到fstab文件中,您可以在使用上述命令插入的底部的块中找到UUID。media / mydrivename是分区应该挂载的位置。

UUID=xxxxxxxxxxxxxxxxx   /media/mydrivename ntfs    permissions,locale=en_US.utf8    0   2

这是我的fstab文件:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda2 during installation
UUID=5d4940cf-5cf5-443a-be11-1f7e551962d1 /               ext4    errors=remount-ro 0       1
# swap was on /dev/sda1 during installation
UUID=84b7e5e9-08c3-4641-b28b-99e0255e604d none            swap    sw              0       0

# 500 GB Webserver harddisk from lr-serv-01
UUID=BA9A48D39A488E37 /media/hdd1 ntfs permissions,locale=en_US.utf8 0 2

# 2 TB Movie share harddisk from lr-serv-01
UUID=7EB09666B09624A5 /media/hdd2 ntfs permissions,locale-en_US.utf8 0 2

#/dev/sda1: UUID="10EC004DEC003010" TYPE="ntfs" 
#/dev/sda2: LABEL="system" UUID="88A4FE47A4FE3772" TYPE="ntfs" 
#/dev/sda3: LABEL="storage_01" UUID="BA9A48D39A488E37" TYPE="ntfs" 
#/dev/sdb1: LABEL="storage_02" UUID="7EB09666B09624A5" TYPE="ntfs" 
#/dev/sdc1: UUID="84b7e5e9-08c3-4641-b28b-99e0255e604d" TYPE="swap" 
#/dev/sdc2: UUID="5d4940cf-5cf5-443a-be11-1f7e551962d1" TYPE="ext4" 
#/dev/sdd1: LABEL="storage_spotnet" UUID="EC6E8F416E8F0394" TYPE="ntfs" 
#/dev/sdd2: LABEL="storage_backup_pcs" UUID="6C2699D026999BA0" TYPE="ntfs" 
#/dev/sdd5: LABEL="storage_series" UUID="7670ABF770ABBC6D" TYPE="ntfs" 
#/dev/sdd6: LABEL="storage_winmx" UUID="564AB81B4AB7F5B9" TYPE="ntfs" 

通过键入以下内容重新引导系统:

sudo reboot

要检查分区是否已安装,您可以键入df -k

赋予自己所有权:

sudo chown -R USERNAME:USERNAME /media/mydrivename

在Ubuntu Server 14.04.01上做到了

希望这个答案可以帮助某人;-)


2
虽然这听起来像是一般性的建议,但我会发现,仅从输出中复制UUID sudo blkid而不是将整个内容转储到/etc/fstab并暂时破坏它会更优雅。另一种方法是从GParted中分区的属性对话框中获取UUID。
David Foerster,2014年

当我在服务器上执行此操作时,我真的看不到复制它的方法……我所拥有的只是键盘和bash。
rotgers 2014年

大多数终端仿真器都允许您复制内容(假设您使用的是远程访问,或者使用诸如screentmux代替原始虚拟终端的终端仿真器)。
David Foerster,2014年

不好的假设哈哈,我没有使用终端仿真器。但是,我在回答中添加了一些内容,以便在有人破坏的情况下复制fstab文件。:)
rotgers 2014年

我从使用UUID切换为LABEL,因为由于某些原因,当我调整分区时UUID发生了变化,但标签名称却没有。另外,我发现使用LABEL =“ some-name”而不是UUID =“ long random string”可以更容易地查看fstab中的情况。
椭圆视图


4

可能不是一个好的解决方案,但是您始终可以将用户ID映射到自己的ID或组ID:

这里只是一个例子,我的用户名是1000

/dev/sda5 /mnt/excess ntfs defaults,uid=1000,rw 0 0

在这种情况下,用户ID为1000的所有已挂载文件


1
那行得通,但是无论是否带有“ rw”选项,它仍然可以在权限下安装drwxrwxrwx
Amanda 2012年

这对我有用。对于权限,我添加了fstab file_mode = 0770,dir_mode = 0770
Rui F Ribeiro

2

请注意,如果您使用标签挂载ntfs驱动器,并希望能够更改该驱动器上目录或文件的权限,则以下操作会很好(编辑/ etc / fstab,例如sudo nano / etc / fstab,然后添加) :

LABEL=Portable_HD_2TB      /media/mintbox2/Portable_HD_2TB ntfs    permissions,defaults        0       2

而下面将允许您更改目录或文件的权限:

LABEL=Portable_HD_2TB      /media/mintbox2/Portable_HD_2TB ntfs    defaults        0       2

1

我使用以下内容,这些内容我发现正确地赋予了我安装的权限(双引导系统设置中的NTFS驱动器):

编辑/etc/fstab

您可以在中找到UUID /dev/disk/by-uuid/(通常映射到/dev/sd*

替换<your uuid>为您的UUID

UUID=<your uuid> /mnt/e ntfs auto,users,uid=1000,gid=1000,dmask=027,fmask=137 0 0

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.