Ref 参考
Introduction to fstab - https://help.ubuntu.com/community/Fstab
What is fmask umask and dmask? - https://ubuntuforums.org/archive/index.php/t-1453342.html
fstab - https://wiki.archlinux.org/title/fstab
简介
最近我将我的操作系统从 Windows 切换到 fedora,我一直习惯于系统盘与资源盘数据分离,所以如何在 Linux 正确挂载资源盘是我开箱新系统需要做的事情。
开始
不难地,我们随便在互联网上搜一下就知道应该修改 /ets/fstab
,这也是系统启动时根据该配置文件挂载硬盘所在的地方。
具体的,在这里的格式为:
[Device] [Mount Point] [File System Type] [Options] [Dump] [Pass]
fields | description |
---|---|
<device> | The device/partition (by /dev location or UUID) that contain a file system. |
<mount point> | The directory on your root file system (aka mount point) from which it will be possible to access the content of the device/partition (note: swap has no mount point). Mount points should not have spaces in the names. |
<file system type> | Type of file system (see LinuxFilesystemsExplained). |
<options> | Mount options of access to the device/partition (see the man page for mount). |
<dump> | Enable or disable backing up of the device/partition (the command dump). This field is usually set to 0, which disables it. |
<pass num> | Controls the order in which fsck checks the device/partition for errors at boot time. The root device should be 1. Other partitions should be 2, or 0 to disable checking. |
查找硬盘 ID
首先地,我们要找到需要挂载的硬盘的 ID ,通过以下命令找到本地所有的硬盘,如果找不到该硬盘,你可以打开 Files 中的 Other Locations,找到指定的硬盘及其名称。
$ lsblk -o +uuid,name
记住该 UUID,接着打开 /ets/fstab
,在最后添加如下:
UUID=97751EDFDE265857 /mnt/mount ntfs-3g defaults,users,uid=1000,gid=1000,fmask=113,dmask=002,utf8 0 0
UUID
UUID
如上所述得到;
硬盘挂载点
/mnt/mount
是所需要挂载硬盘所在的路径,一般来说可以根据所存储的硬盘用途存放在 /mnt
或 /media
甚至是 $USER
目录下;
挂载硬盘格式
ntfs-3g
一般是根据硬盘的类型选定的,由于该硬盘开始应用时是在 Windows 下使用,并格式化为 NTFS 格式,所以这里使用 ntfs
or ntfs-3g
,区别于 ntfs
,ntfs-3g
拥有 rw 权限。
挂载权限
uid
以及 gid
可以通过键入 id 命令查询,可以获取到当前用户的 uid 以及 gid。这个不是必须的,但是为了其他用户组可以正常使用该硬盘下的文件(例如 docker,一般 docker 都加入到用户组中),我更喜欢把该硬盘直接挂载到当前用户组。
fmask
及 dmask
。这两者是 umask
的具体实现,分别代表文件的掩码 (file mask) 以及文件夹的掩码 (directory mask)
如果你想具体了解如何计算,我更推荐阅读 What is fmask umask and dmask? 因为我不在本机直接运行 Samba 服务,而是通过 docker 部署 Samba,我可以通过这个 docker 服务控制其他用户访问路径的权限,所以对于该资源盘,我的理解是可以设置所有用户访问资源盘。
type | File | Folder |
---|---|---|
perm | 777 | 777 |
mask | 113 | 002 |
access perm | 664 | 775 |
因此,在我的例子中 fmask=113,dmask=002,
。
All Last
此刻你的资源盘应该正常挂载了,需要重启让系统执行一次 /ets/fstab
,当然的,你可以先期通过 mount
命令加上正确的参数,检查挂载结果符合预期之后再修改 /etc/fstab
。