Ubuntu 自动挂载 NAS:SMB、凭据文件与 fstab 配置
本文以使用 systemd 的 Ubuntu 和已开启 SMB 的 NAS 为例。准备 NAS 地址、共享名称和有权限访问该共享的 NAS 账号;下文的 192.168.2.10、share、UID/GID 都是示例,需替换为实际值。
新建挂载目录
sh
sudo mkdir -p /mnt/nas_share使用空目录作为挂载点;挂载会暂时遮住该目录原有内容,不会将它们自动迁移到 NAS。
安装 cifs-utils
sh
sudo apt update
sudo apt install cifs-utils
mount.cifs -V查看本地用户的 UID 和 GID
在需要访问文件的本地用户会话中运行:
sh
id记录输出中的 uid 与 gid。若正在使用 root,应改用 id 实际用户名 查询目标用户,不能直接把示例中的 1000 或截图中的 0 当成自己的值。

uid、gid 控制服务器未提供所有者信息时的本地显示与权限映射;它们不是 NAS 登录账号,也不能绕过 NAS 端权限。是否能写入最终还取决于 NAS 共享和账号设置。mount.cifs 说明
配置凭据和 fstab
先创建仅 root 可读写的凭据文件;如果已存在,直接编辑原文件,不要覆盖其他挂载使用的凭据:
sh
sudo install -d -m 700 /etc/samba/credentials
sudo touch /etc/samba/credentials/nas-share
sudo chown root:root /etc/samba/credentials/nas-share
sudo chmod 600 /etc/samba/credentials/nas-share
sudo nano /etc/samba/credentials/nas-share将下列占位内容替换后写入文件,保存时按 Ctrl+O、回车,退出按 Ctrl+X:
ini
username=NAS账号
password=NAS密码只有 NAS 要求域或工作组时才另加 domain=实际域名。密码不放入命令参数或 /etc/fstab。
备份并编辑挂载配置:
sh
sudo cp -a /etc/fstab "/etc/fstab.backup.$(date +%Y%m%d%H%M%S)"
sudo nano /etc/fstab在文件末尾添加一行,替换共享地址和本地 UID/GID:
text
//192.168.2.10/share /mnt/nas_share cifs credentials=/etc/samba/credentials/nas-share,uid=1000,gid=1000,file_mode=0600,dir_mode=0700,_netdev,nofail 0 0| 配置 | 含义 |
|---|---|
credentials=... | 使用受限文件中的 NAS 账号和密码 |
uid / gid | 在服务器未提供相应所有者信息时使用的本地用户与组 |
file_mode / dir_mode | 未协商 Unix 权限时的本地权限;此示例仅供目标用户访问 |
_netdev | 标记为依赖网络的挂载 |
nofail | NAS 不可用时允许系统继续启动,不代表挂载已经成功 |
0 0 | 不使用 dump,也不安排本地 fsck 检查网络共享 |
示例省略 vers,让现代客户端与服务器协商共同支持的 SMB 版本。若需要固定协议,应先确认 NAS 的支持范围:vers=2.0 只指定 SMB 2.0,不是同时启用 2.0 和 3.0;vers=3.0、vers=3.1.1 也分别指定对应版本。不要把所有连接失败都通过降低协议版本处理。
_netdev 和 nofail 的启动行为见 systemd 挂载说明。
挂载并验证
先检查配置,再仅挂载本条记录:
sh
findmnt --verify --verbose
sudo systemctl daemon-reload
sudo mount /mnt/nas_share
findmnt -T /mnt/nas_share -o TARGET,SOURCE,FSTYPE,OPTIONS
ls -ld /mnt/nas_share确认 SOURCE 指向预期 NAS 共享、FSTYPE 为 cifs,然后用目标本地用户检查能否读取预期文件。目录存在或 ls 能运行,并不能证明它已经挂载到 NAS。若业务需要写入,应另外用一个可删除的测试文件验证 NAS 写权限。

在可以中断业务时重启,再重复 findmnt 检查开机挂载。失败时查看 sudo journalctl -b -u mnt-nas_share.mount 与 sudo dmesg --ctime 中的 CIFS 错误:分别排查 NAS 地址与共享名、账号权限、凭据文件、协议协商和启动时网络是否就绪。回传日志时去掉账号及内部地址等敏感信息。