把 NAS 或 Windows 上的共享目录挂到 Debian 长期使用,下面按最短路径给出可直接复用的配置。
一、准备变量和依赖
后续命令都用变量拼接,只需在这里改一次:
1 | export SMB_HOST=192.168.5.5 # 共享服务器 IP 或域名 |
export只在当前终端有效,后面命令请在同一会话执行;sudo里的变量由当前 shell 先展开,不受影响。
安装客户端并建好目录:
1 | sudo apt update |
二、写入凭据文件
1 | sudo tee /etc/samba/credentials-share >/dev/null <<EOF |
密码不要加引号,等号两边不要有空格;mount.cifs 会拒绝权限过宽的凭据文件。
三、写入 fstab
1 | sudo cp /etc/fstab /etc/fstab.bak |
整行必须在一行内,字段之间用空格或 Tab 分隔。回读 tail 是为了确认变量已展开、没有被换行截断。
关键参数:
| 参数 | 作用 |
|---|---|
credentials= |
凭据文件路径,避免密码明文写进 fstab |
uid / gid |
挂载后的本机属主,取当前登录用户的 id -u / id -g,与 SMB_USER 无关;不设置则属主为 root,普通用户不可写 |
iocharset=utf8 |
中文文件名不乱码 |
vers=3.0 |
协议版本,按服务端能力选 3.1.1 / 3.0 / 2.1 |
file_mode / dir_mode |
服务端不返回权限时的兜底权限 |
nofail、_netdev、x-systemd.device-timeout=10 |
服务端不可达时不阻塞开机 |
x-systemd.automount |
首次访问时才真正挂载,进一步避免开机卡住 |
四、验证
重启后确认:
1 | sudo reboot |
五、卸载与取消
1 | sudo umount "$SMB_MOUNT" |
彻底取消自动挂载:删除 /etc/fstab 中新增的那一行,然后执行:
1 | sudo systemctl daemon-reload |
六、常见问题
| 报错 | 原因与处理 |
|---|---|
mount error(13): Permission denied |
账号密码错误、服务端未开放该用户,或需要域信息(凭据文件补 domain=)。可临时加 sec=ntlmssp 试 |
mount error(112): Host is down |
协议版本不匹配,换 vers=2.1 或 vers=3.0 |
mount error(2): No such file or directory |
共享名写错(注意大小写),或服务端未共享该目录 |
mount error(115): Operation now in progress |
网络未就绪,确认已加 _netdev、nofail |
| 能读不能写 | 检查服务端共享权限和文件安全权限两层,同时确认 uid/gid 与 file_mode/dir_mode |
| 开机卡住很久 | 补上 nofail、_netdev、x-systemd.device-timeout=10 |
bad option |
fstab 单行内不要有换行、中文标点或多余空格 |
排查认证问题时,可先脱离 fstab 临时挂载,参数正确后再写入:
1 | sudo mount -t cifs "//$SMB_HOST/$SMB_SHARE" "$SMB_MOUNT" \ |
若之前建过
/etc/systemd/system/mount-smb.service,先sudo systemctl disable --now mount-smb.service并删除该文件。fstab 与自定义 systemd 服务二选一,不要同时启用。
