目录
linux下需要访问windows的共享文件夹,可以使用mount挂载或者使用samba连接。(以下在ubuntu18下操作)
1 mount挂载
1.1 创建目录
首先创建被挂载的目录:
mkdir /mnt/MYSHARE -p
1.2 手动挂载
将共享文件夹挂载到/mnt/MYSHARE文件夹:
sudo mount -t cifs -o domain=WORKGROUP,username=Everyone,password=share,vers=1.0 //11.221.82.156/access /mnt/MYSHARE
其中几个参数表示含义:
- cifs:Common Internet File System,可以理解为网络文件系统。如果不存在进行安装 apt-get install cifs-utils
- usrname:访问共享文件夹的用户名;并不定是window电脑用户名
- password:访问密码
- domain:域名,没有可以不用配置
- //11.221.82.156/access:表示网络文件夹的地址,注意这里最后不能加/则会报如下错误: not a valid block device
1.3 永久挂载
使用mount挂载的方法在系统重新启动后就会失效,如果希望开机时自动挂载,将下面设置加入/etc/fstab文件最后面就可以了。
//11.221.82.156/access /mnt/MYSHARE cifs defaults,username=Everyone,password=share 0 2
也可以手动启动命令放到服务器启动命令上。
1.4 解除挂载
umount /mountPath
1.5 注意事项
用户名不同操作系统指向不同,Windows Server 2012R2 是Everyone,Window10企业版是电脑登录用户
其中/mnt/MYSHARE表示挂载点,就是上面windows目录的完整路径。
2 使用samba连接
samba就是让windows和unix系列os之间的文件可以互相访问的软件。使用samba访问windows的共享文件夹,需要安装smbclient。
$ sudo apt-get install smbclient
安装好后,就可以访问共享的文件了。
smbclient -L //11.221.82.156 -U Everyone
Enter share's password: (输入密码回车)
smb: \>
此时进入了smb的命令操作空间,可以使用help来查看命令的使用。
smb: \> help
3 问题分析
问题1
[Tue Dec 4 13:48:36 2018] No dialect specified on mount. Default has changed to a more secure dialect, SMB2.1 or later (e.g. SMB3), from CIFS (SMB1). To use the less secure SMB1 dialect to access old servers which do not support SMB3 (or SMB2.1) specify vers=1.0 on mount. [Tue Dec 4 13:48:36 2018] CIFS VFS: cifs_mount failed w/return code = -22
解决方案
内核消息是这样说的:默认的SMB方言不起作用,您必须指定它。mount手册页。cifs解释了选项:
mount -t cifs -o username=username,domain=domain-name,vers=1.0 //path/to/share /mount/path
SMB协议版本。允许的值是:
·1.0 -经典的CIFS/SMBv1协议。这是默认值。
·2.0 - SMBv2.002协议。这最初是在Windows Vista Service Pack 1和Windows Server 2008中引入的。注意,的初始发布版本
Windows Vista说的是一种略微不同的方言(2.000),不受支持。
·2.1 -在Microsoft Windows 7和Windows Server 2008R2中引入的SMBv2.1协议。
·3.0——在Microsoft Windows 8和Windows Server 2012中引入的SMBv3.0协议。
还要注意,虽然这个选项控制使用的协议版本,但并不是每个版本的所有特性都可用。
问题2
mount error: cifs filesystem not supported by the system
mount error(19): No such device
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
安装cifs-utils查看是否支持cifs
cat /proc/filesystems
查看文件系统是否支持;如果没有说明linux 内核不支持需要重新编译Linux内核;嵌入式arm板子默认不支持。
问题3 中文乱码问题
修改语言设置(不同系统位置不同,下为ubuntu位置)
vi /etc/default/locale
改为:
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"
使用locale命令查看语言设置
locale
增加iocharset选项指定编码。一般默认utf8。
sudo mount -t cifs -o domain=AD01,username=12600812,password='pwd123',vers=1.0,iocharset=utf8 //10.21.30.36/sharetest /mnt/
4 window设置共享文件
参考文档 点点点