抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

把 NAS 或 Windows 上的共享目录挂到 Debian 长期使用,下面按最短路径给出可直接复用的配置。

一、准备变量和依赖

后续命令都用变量拼接,只需在这里改一次:

1
2
3
4
5
export SMB_HOST=192.168.5.5      # 共享服务器 IP 或域名
export SMB_SHARE=smb_disk # 共享名
export SMB_USER=seepine # 服务端账号,不是本机用户
export SMB_PWD=<your-password> # 密码
export SMB_MOUNT=/mnt/smb_disk # 本机挂载点

export 只在当前终端有效,后面命令请在同一会话执行;sudo 里的变量由当前 shell 先展开,不受影响。

安装客户端并建好目录:

1
2
3
sudo apt update
sudo apt install -y cifs-utils
sudo mkdir -p /etc/samba "$SMB_MOUNT"

二、写入凭据文件

1
2
3
4
5
6
7
8
sudo tee /etc/samba/credentials-share >/dev/null <<EOF
username=$SMB_USER
password=$SMB_PWD
EOF

sudo chown root:root /etc/samba/credentials-share
sudo chmod 600 /etc/samba/credentials-share
sudo cat /etc/samba/credentials-share

密码不要加引号,等号两边不要有空格;mount.cifs 会拒绝权限过宽的凭据文件。

三、写入 fstab

1
2
3
4
5
6
7
sudo cp /etc/fstab /etc/fstab.bak

sudo tee -a /etc/fstab >/dev/null <<EOF
//$SMB_HOST/$SMB_SHARE $SMB_MOUNT cifs credentials=/etc/samba/credentials-share,uid=$(id -u),gid=$(id -g),iocharset=utf8,vers=3.0,file_mode=0644,dir_mode=0755,nofail,_netdev,x-systemd.automount,x-systemd.device-timeout=10 0 0
EOF

tail -n 1 /etc/fstab

整行必须在一行内,字段之间用空格或 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
2
3
4
5
sudo reboot
# 重启后需要重新配置挂载点
export SMB_MOUNT=/mnt/smb_disk
ls "$SMB_MOUNT"
df -h "$SMB_MOUNT"

五、卸载与取消

1
2
3
sudo umount "$SMB_MOUNT"
# 卡住时强制卸载
sudo umount -l "$SMB_MOUNT"

彻底取消自动挂载:删除 /etc/fstab 中新增的那一行,然后执行:

1
2
sudo systemctl daemon-reload
sudo systemctl reset-failed

六、常见问题

报错 原因与处理
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
2
sudo mount -t cifs "//$SMB_HOST/$SMB_SHARE" "$SMB_MOUNT" \
-o credentials=/etc/samba/credentials-share,uid=$(id -u),gid=$(id -g),vers=3.0

若之前建过 /etc/systemd/system/mount-smb.service,先 sudo systemctl disable --now mount-smb.service 并删除该文件。fstab 与自定义 systemd 服务二选一,不要同时启用。

评论