Linux 挂载 Windows SMB/CIFS 网络共享
本文以 //monitor.com/QP/Minio_Data 为例,将 Windows/SMB 共享挂载到 Linux 的 /opt/Minio_Data。文中的服务器地址、共享名、用户名和 UID/GID 请替换为实际值。
本文使用的是 SMB/CIFS 协议,不是 NFS。Linux 客户端需要安装
cifs-utils。
一、准备信息
开始前确认以下信息:
- SMB 服务器地址:
monitor.com - 共享路径:
QP/Minio_Data - 本地挂载点:
/opt/Minio_Data - SMB 用户名和密码
- Linux 上运行程序的用户 UID/GID。可以使用下面的命令查询:
1 | |
确认服务器可以解析后再继续:
1 | |
如果没有返回 IP 地址,请先检查 DNS、/etc/hosts 或网络连接,不要继续执行挂载命令。
二、安装客户端并创建挂载点
1 | |
三、创建 SMB 凭据文件
不要把密码直接写入命令行或 /etc/fstab。创建只有 root 可以读取的凭据文件:
1 | |
文件内容如下,将值替换为实际的 SMB 账号:
1 | |
如果 SMB 服务器使用域账号,再增加一行:
1 | |
检查文件权限,结果应为 -rw-------:
1 | |
四、手动挂载
下面的 uid=1000,gid=1000 表示将共享文件映射给 UID/GID 为 1000 的本地用户。如需映射给其他用户,请先用 id 用户名 查询并替换这两个值。
1 | |
vers=3.0 指定使用 SMB 3.0。如果服务器不支持 SMB 3.0,可以根据服务器配置改为 vers=2.1 或其他受支持的版本,不建议直接删除该参数。
五、验证挂载结果
确认挂载类型和来源:
1 | |
以映射用户身份执行一次读写测试:
1 | |
如果共享只读或当前账号没有写权限,touch 会失败;这通常需要检查 SMB 共享权限以及挂载使用的 UID/GID。
六、卸载共享
1 | |
确认已经卸载:
1 | |
七、配置开机自动挂载
编辑 /etc/fstab:
1 | |
追加以下内容。每个字段之间使用空格或 Tab 分隔:
1 | |
配置项说明:
| 配置项 | 作用 |
|---|---|
credentials=... |
从 root 专用文件读取账号和密码 |
uid=1000,gid=1000 |
设置挂载内容在 Linux 上显示的属主 |
vers=3.0 |
使用 SMB 3.0 协议 |
_netdev |
标记为网络文件系统,等待网络就绪后再处理 |
nofail |
网络共享不可用时不阻塞系统启动 |
x-systemd.automount |
访问挂载点时再建立连接 |
八、测试 fstab 配置
保存文件后,先让 systemd 重新读取配置,再测试所有 fstab 项:
1 | |
mount -a 没有输出通常表示执行成功。如果共享使用了 x-systemd.automount,也可以访问目录触发实际连接:
1 | |
常见问题
mount error(13): Permission denied
检查凭据文件中的用户名、密码和域名,并确认该账号有访问 QP/Minio_Data 的权限:
1 | |
不要把上述命令的输出复制到公开日志或工单中。
mount error(2): No such file or directory
确认共享路径和大小写正确,并确认 monitor.com 可以解析:
1 | |
挂载后访问很慢或启动时等待
检查 _netdev,nofail,x-systemd.automount 是否正确写入 /etc/fstab,并查看本次启动的挂载日志:
1 | |
查看内核和 CIFS 错误
1 | |