Ubuntu2004挂载SMB解决乱码问题

安装

  • 安装软件
1
sudo apt-get install cifs-utils

挂载

  • 测试挂载
1
sudo mount -t cifs //xx.xx.xx.xx/share /mnt/nas -o user=user,pass=pass,vers=3.0

解决乱码

  • ls 挂载目录后可能会发现中文名乱码,显示问号
1
2
ubuntu@ubuntu:~$ sudo ls /mnt/nas/
'??' '??' '??' '??' '??' '??' '??' '???' '?????'
  • 尝试指定 utf8 编码
1
2
3
4
5
sudo mount -t cifs //xx.xx.xx.xx/share /mnt/nas -o user=user,pass=pass,vers=3.0,iocharset=utf8

# 可能会报
mount error(79): Can not access a needed shared library
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)
  • 通过dmesg名称查看如下报错
1
[  435.266240] CIFS VFS: CIFS mount error: iocharset utf8 not found
  • 此处是因为内核缺少 utf8 模块nls_utf8.ko,一般 cloud 系统不带
  • 可尝试查找此模块
1
2
3
ls /lib/modules/$(uname -r)/kernel/fs/nls/nls_utf8.ko

ls: cannot access '/lib/modules/5.4.0-100-generic/kernel/fs/nls/nls_utf8.ko': No such file or directory
  • 未找到时可进行安装扩展包
1
sudo apt install linux-modules-extra-$(uname -r)
  • 重启后,重新挂载带iocharset的命令,即可解决

开机挂载

  • 保存账户密码到文件/etc/sambapasswd
1
2
username=user
password=pass
  • 编辑/etc/fstab文件,添加以下内容
1
//xx.xx.xx.xx/share /mnt/nas cifs credentials=/etc/sambapasswd,vers=3.0,iocharset=utf8 0 0
  • 挂载
1
sudo mount -a