> For the complete documentation index, see [llms.txt](https://book.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://book.bsdcn.org/man/man8/mount.8.md).

# mount.8

`mount` — 挂载文件系统

## 名称

`mount`

## 概要

`mount` \[--libxo] \[-adflpruvw] \[-F fstab] \[-o options] \[-t \[no]type\[,type ...]]

`mount` \[--libxo] \[-dfpruvw] special | node

`mount` \[--libxo] \[-dfpruvw] \[-o options] \[-t \[no]type\[,type ...]] special node

## 描述

`mount` 工具调用 nmount(2) 系统调用，准备并将 `special` 设备或远程节点（rhost:path）嫁接到文件系统树的 `node` 点上。如果未提供 `special` 或 `node`，则从fstab(5)文件中获取适当的信息。

系统维护当前已挂载文件系统的列表。如果未给 `mount` 提供参数，则打印此列表。

选项如下：

**`--libxo`** 通过 libxo(3) 以多种人类可读和机器可读格式生成输出。有关命令行参数的详细信息，请参见 xo\_options(7)。

**`-a`** 挂载fstab(5)中描述的所有文件系统。例外是标记为“`noauto`”的文件系统、标记为“`late`”的文件系统（除非指定了 `-l` 选项）、被 `-t` 标志排除的文件系统（见下文），或已经挂载的文件系统（根文件系统除外，它总是被重新挂载以保留传统的单用户模式行为）。

**`-d`** 导致除实际系统调用之外的所有操作都执行。此选项与 `-v` 标志结合使用，可用于确定 `mount` 命令正在尝试做什么。

**`-F`** *fstab* 指定要使用的 `fstab` 文件。

**`-f`** 强制在尝试将文件系统挂载状态从读写降级为只读时撤销写访问。还强制以读写方式挂载不干净的文件系统（危险；请谨慎使用）。

**`-L`** 与 `-a` 选项结合使用时，仅挂载标记为“`late`”的文件系统。

**`-l`** 与 `-a` 选项结合使用时，也挂载标记为“`late`”的文件系统。

**`-n`** 为了与其他一些实现兼容，此标志目前是无操作的。

**`-o`** 选项通过 `-o` 标志后跟逗号分隔的选项字符串指定。如果指定了冲突的选项，则最右侧的选项生效。可用选项如下：

**`acls`** 启用 POSIX.1e 访问控制列表（ACL），可通过 setfacl(1) 和 getfacl(1) 命令自定义。此标志与 `nfsv4acls` 标志互斥。

**`async`** 对文件系统的所有 I/O 都应异步进行。这是一个危险的标志，因为它不保证磁盘上的文件系统结构保持一致。因此，应谨慎使用 `async` 标志，并且仅当存在某种数据恢复机制时才使用。

**`atime`** 从文件读取时更新文件访问时间。这是默认行为。

**`automounted`** 此标志表示文件系统由 automountd(8) 挂载。自动挂载的文件系统由autounmountd(8)自动卸载。

**`autoro`** 以读写方式挂载文件系统。如果失败且错误表明媒体可能是只读的，则自动尝试以只读方式挂载文件系统。

**`current`** 与 `-u` 标志一起使用时，与指定当前对已挂载文件系统生效的选项相同。

**`emptydir`** 要求挂载点目录为空。

**`force`** 与 `-f` 相同；强制在尝试将文件系统挂载状态从读写降级为只读时撤销写访问。还强制以读写方式挂载不干净的文件系统（危险；请谨慎使用）。

**`fstab`** 与 `-u` 标志一起使用时，与指定fstab(5)文件中为该文件系统列出的所有选项相同。

**`late`** 当 `mount` 以 `-a` 标志但不带 `-l` 标志运行时，应跳过此文件系统。

**`mountprog`**=<*program*> 强制 `mount` 使用指定的程序挂载文件系统，而不是直接调用 nmount(2)。例如：

```sh
mount -t foofs -o mountprog=/mydir/fooprog /dev/cd0 /mnt
```

**`multilabel`** 在指定文件系统上启用多标签强制访问控制（MAC）。如果文件系统支持多标签操作，则为文件系统中的每个对象维护单独的标签，而不是对所有对象使用单个标签。是tunefs(8)中 `-l` 标志的替代方案。有关更多信息，请参见mac(4)，它会导致在挂载时自动设置 multilabel 挂载标志。

**`nfsv4acls`** 启用 NFSv4 ACL，可通过 setfacl(1) 和 getfacl(1) 命令自定义。此标志与 `acls` 标志互斥。

**`noasync`** 元数据 I/O 应同步进行，而数据 I/O 应异步进行。这是默认行为。

**`noatime`** 从文件读取时不更新文件访问时间。此选项在文件数量庞大且性能比更新文件访问时间（这几乎从不重要）更关键的文件系统上很有用。此选项目前仅在本地文件系统上受支持。

**`noauto`** 当 `mount` 以 `-a` 标志运行时，应跳过此文件系统。

**`noclusterr`** 禁用读群集。

**`noclusterw`** 禁用写群集。

**`nocover`** 如果请求的挂载点已经是挂载点的根，则不挂载。

**`noexec`** 不允许在已挂载的文件系统上执行任何二进制文件。此选项对于具有包含非自身架构二进制文件的文件系统的服务器很有用。注意：此选项并非设计为安全功能，不保证它能防止恶意代码执行；例如，仍可能执行驻留在 `noexec` 挂载分区上的脚本。

**`nosuid`** 不允许 set-user-identifier 或 set-group-identifier 位生效。注意：如果系统上安装了公开可用的 suid 或 sgid 包装器，则此选项无价值。当用户没有超级用户权限时自动设置。

**`nosymfollow`** 不在已挂载的文件系统上跟随符号链接。此选项旨在用于从不受信任的外部存储系统或公共可写 /tmp 文件系统挂载文件系统时使用。你仍然可以创建或删除符号链接，或读取符号链接的值。

**`ro`** 以只读方式挂载文件系统，即使超级用户也不能写入。等同于 `-r`。

**`rw`** 以读写方式挂载文件系统。

**`snapshot`** 对指定文件系统进行快照。使用此选项时，所有其他选项都被忽略。此选项需要 `-u` 标志。快照文件必须在被快照的文件系统中创建。每个文件系统最多可创建 20 个快照。活动快照记录在超级块中，因此它们在卸载和重新挂载操作以及系统重新启动后仍然存在。完成快照后，可以使用rm(1)命令删除它。快照可以按任何顺序删除，但是你可能无法收回快照中包含的所有空间，因为另一个快照可能占用了它正在释放的一些块。请注意，快照上设置了 schg 标志，以确保即使是 root 用户也不能写入它们。unlink 命令对快照文件做了例外处理，允许即使设置了 schg 标志也可以删除它们，因此在删除快照文件之前不必清除 schg 标志。一旦拍摄了快照，你可以用它做三件有趣的事情：

* 在快照文件上运行 fsck(8)。假设文件系统在挂载时是干净的，你应该总是从运行 fsck 快照中得到干净（且不变的）结果。这本质上是后台 fsck 进程所做的事情。
* 在快照上运行 dump(8)。你将获得与快照时间戳时的文件系统一致的转储。
* 将快照作为文件系统的冻结映像挂载。要挂载快照 **`/var/snapshot/snap1`**：

```sh
mdconfig -a -t vnode -f /var/snapshot/snap1 -u 4
mount -r /dev/md4 /mnt
```

你现在可以在 **`/mnt`** 处浏览你冻结的 **`/var`** 文件系统。一切都将处于拍摄快照时的状态。唯一的例外是任何早期的快照将显示为零长度文件。完成挂载的快照后：

```sh
umount /mnt
mdconfig -d -u 4
```

**`suiddir`** 已挂载文件系统上的目录将通过设置任何新文件的所有者与目录所有者相同来响应 SUID 位的设置。新目录将从其父目录继承该位。从文件中删除执行位，并且不会授予 root。此功能设计用于通过 ftp、SAMBA 或 netatalk 为 PC 用户服务的文件服务器。它为 shell 用户提供了安全漏洞，因此不应在 shell 机器上使用，尤其是在主目录上。此选项需要内核中的 SUIDDIR 选项才能工作。仅 UFS 文件系统支持此选项。有关更多信息，请参见 chmod(2)。

**`sync`** 对文件系统的所有 I/O 都应同步进行。

**`update`** 与 `-u` 相同；表示应更改已挂载文件系统的状态。

**`union`** 使挂载点处的命名空间显示为已挂载文件系统根和现有目录的联合。首先在已挂载的文件系统中进行查找。如果由于文件不存在而导致这些操作失败，则访问底层目录。所有创建操作都在已挂载的文件系统中进行。

**`untrusted`** 文件系统不受信任，内核在使用文件系统元数据之前应对其进行更广泛的检查。此选项旨在用于从不受信任的媒体（如 USB 内存条或其他外部提供的媒体）挂载文件系统时使用。

任何特定于非内部已知类型（见 `-t` 选项）的文件系统类型的附加选项可以作为逗号分隔列表传递；这些选项以前导“-”（连字符）区分。例如，`mount` 命令：

```sh
mount -t cd9660 -o -e /dev/cd0 /cdrom
```

导致 `mount` 执行等同于：

```sh
/sbin/mount_cd9660 -e /dev/cd0 /cdrom
```

接受值的选项使用 -option=value 语法指定：

```sh
mount -t msdosfs -o -u=fred,-g=wheel /dev/da0s1 /mnt
```

等同于

```sh
/sbin/mount_msdosfs -u fred -g wheel /dev/da0s1 /mnt
```

特定于非内部已知文件系统类型（见下面 `-t` 选项的描述）的附加选项可能在相关的 `/sbin/mount_`**XXX** 工具的手册页中描述。

**`-p`** 以fstab(5)格式打印挂载信息。也隐含 `-v` 选项。

**`-r`** 文件系统以只读方式挂载。以只读方式挂载文件系统（即使超级用户也不能写入）。与 `-o` 选项的 `ro` 参数相同。

**`-t`** \[`no`]`type`\[,`type ...`] `-t` 后面的参数用于指示文件系统类型。`ufs` 类型是默认值。`-t` 选项可用于指示操作应仅在指定类型的文件系统上执行。可以在逗号分隔的列表中指定多个类型。文件系统类型列表可以加前缀 `no` 来指定不应执行操作的文件系统类型。例如，`mount` 命令：

```sh
mount -a -t nonfs,nullfs
```

挂载除 NFS 和 NULLFS 类型之外的所有文件系统。

`mount` 的默认行为是将 `-t` 选项直接传递给 nmount(2) 系统调用中的 `fstype` 选项。但是，对于以下文件系统类型：`cd9660`、`mfs`、`msdosfs`、`nfs`、`nullfs`、`smbfs`、`udf` 和 `unionfs`，`mount` 不会直接调用 nmount(2)，而是尝试执行 `/sbin/mount_`*type* 中的程序，其中 *type* 替换为文件系统类型名称。例如，`nfs` 文件系统由程序 `/sbin/mount_nfs` 挂载。如果尚未存在，则大多数文件系统将由内核动态加载，前提是内核模块可用。

**`-u`** `-u` 标志表示应更改已挂载文件系统的状态。可以更改上述讨论的任何选项（`-o` 选项）；也可以将文件系统从只读更改为读写或反之。如果文件系统上有任何文件当前以写入方式打开，则尝试从读写更改为只读将失败，除非还指定了 `-f` 标志。选项集的确定方法是：应用 `-o` 参数中指定的选项，最后应用 `-r` 或 `-w` 选项。

**`-v`** 详细模式。如果单独使用 `-v`，显示所有文件系统，包括那些以 `MNT_IGNORE` 标志挂载的文件系统，并显示每个文件系统的附加信息（包括 root 运行时的 fsid）。

**`-w`** 文件系统对象可读写。

## 环境变量

**`PATH_FSTAB`** 如果设置了环境变量 `PATH_FSTAB`，则所有操作都针对指定文件执行。如果进程环境或内存地址空间被视为“tainted”，则不会遵守 `PATH_FSTAB`。（有关更多信息，请参见 issetugid(2)。）

## 文件

**`/etc/fstab`** 文件系统表

## 实例

以读写权限重新挂载根文件系统：

```sh
mount -uw /
```

## 诊断

各种错误，大多数都是自解释的。

```sh
XXXXX file system is not available
```

内核不支持相应的文件系统类型。请注意，对特定文件系统的支持可能以静态（内核编译时）或动态（由kldload(8)作为内核模块加载）方式提供。

## 参见

getfacl(1), [lsvfs(1)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man1/lsvfs.1.md), setfacl(1), nmount(2), symlink(2), acl(3), getmntinfo(3), libxo(3), xo\_options(7), [cd9660(4)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man4/cd9660.4.md), [devfs(4)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man4/devfs.4.md), [ext2fs(4)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man4/ext2fs.4.md), [ffs(4)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man4/ffs.4.md), [mac(4)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man4/mac.4.md), [p9fs(4)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man4/p9fs.4.md), [procfs(4)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man4/procfs.4.md), [tarfs(4)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man4/tarfs.4.md), [tmpfs(4)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man4/tmpfs.4.md), [fstab(5)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man5/fstab.5.md), symlink(7), automount(8), [fstyp(8)](/man/man8/fstyp.8.md), [kldload(8)](/man/man8/kldload.8.md), [mount\_cd9660(8)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man8/mount_cd9660.8.md), [mount\_msdosfs(8)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man8/mount_msdosfs.8.md), mount\_nfs(8), mount\_nullfs(8), mount\_smbfs(8), mount\_udf(8), mount\_unionfs(8), quotacheck(8), [umount(8)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man8/umount.8.md), [zfs(8)](https://github.com/FreeBSD-Ask/freebsd-man-sc/blob/main/man8/zfs.8.md), zpool(8)

## 历史

`mount` 工具出现在 Version 1 AT\&T UNIX 中。

## 注意事项

成功 `mount` 后，原始挂载点上的权限决定了是否可以从已挂载的文件系统访问 `..`。挂载点允许所有用户在两个方向上跨越挂载点遍历的最低权限是 0111（所有人都可执行）。

使用 `mount` 比使用特定于文件系统的 `mount_`**XXX** 命令更受推荐。特别是，只有当文件系统通过 `mount` 挂载时，mountd(8) 才会收到 `SIGHUP` 信号（导致导出列表更新）。

## 缺陷

损坏的文件系统可能导致崩溃。

`-p` 选项不会列出fstab(5)中的 `userquota` 或 `groupquota` 项，因为它们不是真正的挂载选项，也不是 getmntinfo(3) 返回的信息。在引导时，quotacheck(8) 处理这些项。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://book.bsdcn.org/man/man8/mount.8.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
