23.1 自动挂载文件系统
在现代操作系统中,可移动存储介质的自动挂载是提升用户体验的关键功能。FreeBSD 作为类 Unix 操作系统,提供了多种自动挂载技术方案。automount 是一个轻量级的第三方自动挂载工具,而 DSBMD(Desktop Scriptable Media Manager Daemon)是 FreeBSD 的介质和文件系统类型检测守护进程,采用客户端-服务器架构,提供更精细的权限控制。本章重点介绍这两种主流实现方式,系统地阐述其安装、配置与权限控制等核心技术环节。
automount 自动挂载
注意
automount对普通用户的权限控制能力有限,主要以 root 身份执行挂载操作;若需要更精细的权限控制机制,建议使用 DSBMD。
automount 是一个基于 FreeBSD 的第三方自动挂载工具,通过监控设备插入事件实现文件系统的自动挂载。它支持的文件系统包括 NTFS、FAT、exFAT、EXT2、EXT3、EXT4、UFS、HFS、XFS 和 ISO9660。
安装 automount
可以通过两种方式安装 automount:
使用 pkg 包管理器进行二进制安装:
# pkg install automount或通过 Ports 系统进行源代码编译安装:
# cd /usr/ports/filesystems/automount/
# make install clean安装完成后,automount 会自动监控设备插入事件并执行挂载操作,默认挂载点位于 /media 目录。
DSBMD 自动挂载
DSBMD(Desktop Scriptable Media Manager Daemon)是 FreeBSD 的介质和文件系统类型检测守护进程,采用客户端-服务器架构设计,允许客户端以受控方式挂载存储设备。其配置为开箱即用状态,默认即可实现基本功能。
安装 DSBMD
DSBMD 系统包含守护进程和客户端两部分,可以通过以下方式安装:
使用 pkg 包管理器安装:
或者使用 Ports 系统编译安装:
客户端可根据实际需求选择安装其中之一;在桌面环境下,推荐使用 dsbmc 图形界面客户端以获得更便捷的操作体验。
配置 DSBMD
技术要点
DSBMD 系统分为守护进程和客户端两个组成部分。客户端向 DSBMD 发起挂载、卸载或弹出介质的请求,亦可设置 CD/DVD 的读取速率;守护进程负责接收并执行这些请求。守护进程作为系统特权进程拥有执行所有操作的权限,而客户端作为普通用户进程受限于系统权限设置。对于权限不足的用户,其挂载请求将由守护进程依据配置文件中的用户和组设定进行权限验证后决定是否允许执行。
守护进程配置文件路径为 /usr/local/etc/dsbmd.conf。
默认情况下,属于 wheel 和 operator 用户组的成员被允许挂载设备;若需授权其他用户挂载权限,可修改配置文件中的相关配置项。
启用守护进程需要执行以下命令:
Qt 客户端
dsbmc 客户端仅在运行时才会向守护进程发送请求,因此需在桌面环境中启动该客户端程序。
启动 dsbmc 后,可在系统托盘区域观察到其图标。

打开主窗口,依次点击 preferences→general settings,勾选 automatically mount devices 以启用自动挂载功能。


插入 U 盘等可移动介质后,系统桌面将显示挂载提示信息:

默认情况下,挂载点位于 /media 目录下,且挂载点的属主为发起挂载请求的客户端用户。

Xfce 自动启动配置
在 Xfce 桌面环境中,可以配置 dsbmc 自动启动。点击 设置 → 会话和启动,按如下方式配置:

命令行客户端
启动 dsbmc-cli 命令行客户端:
常用参数包括:
-e:弹出设备-m:挂载设备-u:卸载设备
可在 shell 启动配置文件或桌面启动文件(例如 ~/.xinitrc、~/.xprofile)中添加以下命令:
该配置将以后台方式启动 dsbmc-cli 并启用自动连接;-a 参数用于启用自动连接模式,使客户端持续监控设备事件并自动执行相应操作,此方式无图形界面提示。
守护进程配置详解
默认配置通常可满足基本使用需求;若需进行更细致的挂载控制,则需修改守护进程的配置文件,其路径为 /usr/local/etc/dsbmd.conf。
usermount 配置项说明
usermount 配置项控制是否允许以普通用户身份挂载设备:
配置文件默认启用了 usermount 选项,但要使其生效,还需在系统内核参数中启用 vfs.usermount,可在 /etc/sysctl.conf 文件中添加:
该配置允许普通用户执行文件系统挂载操作。
启用
usermount时,挂载程序将以普通用户身份执行,且挂载点归该用户所有;未启用usermount时,挂载程序以root特权用户身份执行。无论是否启用
usermount,挂载点的属主均为发起请求的客户端用户。
允许自动挂载的用户授权
默认情况下,允许 operator 和 wheel 用户组的成员连接:
通过修改 allow_users 和 allow_groups 配置项可以管理自动挂载功能的授权用户。
修改挂载点及其下文件目录访问权限(以 NTFS 为例)
以挂载 NTFS 文件系统为例,可以修改文件访问权限为 640(rw-r-----),目录访问权限为 750(rwxr-x---)。
NTFS 的挂载配置包含两种命令形式:启用 usermount 时使用 ntfs_mount_cmd_usr,否则使用 ntfs_mount_cmd。示例如下:
这里为 ntfs-3g 指定了挂载选项中的文件权限掩码 fmask=137 和目录权限掩码 dmask=027,用于控制挂载后文件和目录的权限设置。

相关文件结构
课后习题
在 FreeBSD 系统上配置 DSBMD,创建一个非 wheel 和 operator 组的测试用户,修改 dsbmd.conf 授权该用户挂载设备,并验证其是否能正常挂载和卸载 USB 设备。
修改 dsbmd.conf 中的 ntfs_mount_cmd 配置项,将挂载权限从默认值修改为更严格的设置,能够面向大多数用户。
最后更新于