Linux 和 MacOS 挂载 SMB 共享目录

Linux 和 MacOS 通过命令将群晖 NAS 等 SMB 协议的共享目录挂载到本机。


Linux

查看可用共享目录

如果不确定群晖通过 SMB 协议提供了哪些共享目录,可以先使用 smbclient 列出所有可用的共享目录:

# 安装 smbclient
$ sudo apt install smbclient

# 列出指定 SMB 服务器上所有公开的共享资源
$ smbclient -L //<NAS_IP> -U <USERNAME>
Sharename Type Comment
--------- ---- -------
backup Disk
homes Disk user home
music Disk System default shared folder
NetBackup Disk System default shared folder
surveillance Disk System default shared folder
Time Machine Disk
volume1 Disk
volume2 Disk
volume3 Disk
IPC$ IPC IPC Service ()
home Disk Home directory of <USERNAME>

这里的 volume1-3 就是我想要挂载的共享目录。

挂载目录

为了挂载和管理 CIFS/SMB 网络文件系统,需要安装 cifs-utils 软件包,再执行挂载。CIFS 是 SMB 协议的一个早期版本(SMB 1.0),这里泛指整个 SMB 协议族。

# 安装 cifs-utils
$ sudo apt install cifs-utils

# 创建挂载点
$ sudo mkdir -p /mnt/mynas/volume1
$ sudo mkdir -p /mnt/mynas/volume2
$ sudo mkdir -p /mnt/mynas/volume3

# 将 SMB 共享目录挂载到对应挂载点
# -t:指定文件系统类型为 cifs
# -o:挂载选项列表,用逗号分隔
# uid/gid 决定挂载点下所有文件和目录在本地系统上看起来属于谁,需要填写本机的用户
# vers=3.0 指定使用 SMB 3.0 协议
$ sudo mount -t cifs //<NAS_IP>/volume1 /mnt/mynas/volume1 -o username=<NAS_USER>,password=<NAS_PASSWD>,uid=$(id -u),gid=$(id -g),vers=3.0
$ sudo mount -t cifs //<NAS_IP>/volume2 /mnt/mynas/volume2 -o username=<NAS_USER>,password=<NAS_PASSWD>,uid=$(id -u),gid=$(id -g),vers=3.0
$ sudo mount -t cifs //<NAS_IP>/volume3 /mnt/mynas/volume3 -o username=<NAS_USER>,password=<NAS_PASSWD>,uid=$(id -u),gid=$(id -g),vers=3.0

自动挂载

将 SMB 服务的账号密码保存到凭据文件中:

# 创建凭据文件,保存 SMB 服务的账号密码
$ sudo vim /etc/mynas_credentials
username=<NAS_USER>
password=<NAS_PASSWD>

# 修改凭据文件的访问权限
$ sudo chmod 600 /etc/mynas_credentials

写入文件系统表(File System Table),系统启动时会自动挂载:

$ sudo vim /etc/fstab
# fstab 中不会执行任何命令替换、变量展开,需要填写实际的值
# 格式为 <设备/远程资源> <挂载点> <文件系统类型> <挂载选项> <dump> <pass>
# _netdev 表明该挂载项为需要网络支持的文件系统,会在网络服务就绪后再挂载
# dump=0 表示不备份该文件系统,网络文件系统必须为 0
# pass=0 表示不检查文件系统一致性,网络文件系统必须为 0
//<NAS_IP>/volume1 /mnt/mynas/volume1 cifs credentials=/etc/mynas_credentials,uid=1000,gid=1000,vers=3.0,_netdev 0 0
//<NAS_IP>/volume2 /mnt/mynas/volume2 cifs credentials=/etc/mynas_credentials,uid=1000,gid=1000,vers=3.0,_netdev 0 0
//<NAS_IP>/volume3 /mnt/mynas/volume3 cifs credentials=/etc/mynas_credentials,uid=1000,gid=1000,vers=3.0,_netdev 0 0

取消挂载

$ sudo umount /mnt/mynas/volume1

确认挂载点是否存在

$ mountpoint /mnt/mynas/volume1
/mnt/mynas/volume1 is not a mountpoint

$ mountpoint /mnt/mynas/volume2
/mnt/mynas/volume2 is a mountpoint

手动挂载脚本

#!/bin/bash

NAS_IP=<NAS_IP>

SHARE_NAMES=(
"volume1"
"volume2"
"volume3"
)

for share_name in "${SHARE_NAMES[@]}"; do
echo "尝试挂载 $share_name"
if mountpoint -q "/mnt/mynas/$share_name"; then
echo "/mnt/mynas/$share_name 已挂载"
else
sudo mount -t cifs "//${NAS_IP}/${share_name}" "/mnt/mynas/$share_name" -o credentials=/etc/mynas_credentials,uid=$(id -u),gid=$(id -g),vers=3.0
if [ $? -eq 0 ]; then
echo "/mnt/mynas/$share_name 挂载成功"
else
echo "/mnt/mynas/$share_name 挂载失败"
exit 1
fi
fi
done

MacOS

MacOS 可以通过 Finder 连接 SMB 服务器。在登录项中添加 SMB 共享目录后,开机就会自动将 SMB 共享目录挂载到 /Volumes/ 下面,一般无需再手动挂载。

查看挂载点

查看 MacOS 上当前存在的 SMB 挂载点:

$ mount | grep smbfs
//<NAS_USER>@<NAS_IP>._smb._tcp.local./Time%20Machine on /Volumes/.timemachine/<NAS_IP>._smb._tcp.local./19E45212-1234-5678-BB46-0C1FDF3CDA0D/Time Machine (smbfs, nobrowse)
//<NAS_USER>@<NAS_IP>._smb._tcp.local/volume1 on /Volumes/volume1 (smbfs, nodev, nosuid, mounted by <NAS_USER>)
//<NAS_USER>@<NAS_IP>._smb._tcp.local/volume2 on /Volumes/volume2 (smbfs, nodev, nosuid, mounted by <NAS_USER>)
//<NAS_USER>@<NAS_IP>._smb._tcp.local/volume3 on /Volumes/volume3 (smbfs, nodev, nosuid, mounted by <NAS_USER>)

挂载目录

如果不想通过 Finder 进行挂载,也可以使用 mount_smbfs 命令挂载:

# 创建挂载点
$ mkdir -p ~/mnt/mynas/volume1
$ mkdir -p ~/mnt/mynas/volume2
$ mkdir -p ~/mnt/mynas/volume3

# 将 SMB 共享目录挂载到对应挂载点
$ mount_smbfs //<NAS_USER>@<NAS_IP>/volume1 ~/mnt/mynas/volume1
$ mount_smbfs //<NAS_USER>@<NAS_IP>/volume2 ~/mnt/mynas/volume2
$ mount_smbfs //<NAS_USER>@<NAS_IP>/volume3 ~/mnt/mynas/volume3

# 与 Linux 不同,如果共享目录在 MacOS 上已经被挂载过,再次挂载到新路径会报错
mount_smbfs: mount error: //<NAS_USER>@<NAS_IP>/volume1: File exists

取消挂载

MacOS 上取消挂载和 Linux 一样是使用 umount 命令:

$ umount ~/mnt/mynas/volume1
$ umount ~/mnt/mynas/volume2
$ umount ~/mnt/mynas/volume3

Linux 和 MacOS 挂载 SMB 共享目录

https://thinklong.me/mount-smb-share/

作者

ThinkLong

发布于

2026-04-27

更新于

2026-04-27

许可协议

评论

+