詹学伟
詹学伟
Published on 2024-06-18 / 78 Visits
1
0

Centos7访问Windows共享文件

一、Windows设置共享文件夹

首先说明,Centos和windows的网络需要畅通,比如都是在同一局域网内

在Windows系统中,右键点击需要共享的文件夹->属性->共享

点击共享,然后下拉选择一个用户,点击添加,然后点击共享:

点击"高级共享设置",勾选"共享此文件夹":

然后点击"权限",设置授权用户访问共享文件的权限:

最后确认。

ps:最好在"安全"中添加授权用户的权限:

添加用户并授权:

这里需要添加你自己想要授权的用户,然后给与相应的权限~~~

设置完成后,我们可以通过另外一台Windwos电脑来访问共享文件(注意访问者必须是前面被授权的用户,我设置的是Everyone,也就是任何人都可以访问)。

Windwos下按住win+r,输入"\\ip"即可访问,比如我的:

就会在问价管理中看到之前设置的共享文件夹了~~~

二、访问共享文件

1.Windows访问"远程Windows"共享文件

通过cmd的方式,使用win+r,输入\\ip的方式可以直接访问;

在程序中,比如我的,访问远程windows上的一个access数据库:

我们可以这样访问到目标数据库文件~~

需要注意的是,我的开发OS也是Windows,所以可以这样访问;开发OS如果非Windows,这样是行不通的,比如下面的情况。

2.Centos7访问远程windows

如果你的开发OS为Windows,并且你使用上面第一点中的方法在本地运行自己的项目,成功读取到了目标数据库文件,然后你就发布到测试或者生产的Centos服务器上,你就会发现在Centos上,通过之前的配置是读取不到目标文件的:

这个时候,你可能会怀疑是的配置文件路径的问题,然后可能会尝试修改配置文件中的路径,比如"\"问题~~

其实不是路径的问题,原因是Windows访问Windows和Centos访问Windows是不同的,没错,Windows之间使用这种方式无疑是没有问题的,但是在跨OS场景下,就不一样了~~ 协议不一样!!!!!

Centos访问Windows共享文件,有几种方式,我使用的是挂载共享文件的方式。这种方式需要在Centos本地挂载远程Windows上的共享文件,挂载成功后,就相当于访问本地文件了!!!

挂载之前,请先建好文件路径:

mkdir -p /mnt/share/industrial_analyzer/xxx.xxx.xxx.xxx/DataBase

挂载命令:

mount -t cifs //windowsip/sharedir 挂载路径 -o username=用户名,password=密码,vers=版本
mount -t cifs //xxx.xxx.xxx.xxx/DataBase /mnt/share/industrial_analyzer/xxx.xxx.xxx.xxx/DataBase -o username=Administrator,vers=1.0

比如上面,我将 10.20.12.96 的 windows 上的共享文件夹 DataBase 挂载到Centos的 /mnt/share/industrial_analyzer/xxx.xxx.xxx.xxx/DataBase 下,挂载成功后,Centos本地 /mnt/share/industrial_analyzer/xxx.xxx.xxx.xxx/DataBase 下就出现windows共享文件夹下的文件了:

ps:这里有一个坑,SMB协议问题,针对win7,是默认支持SMB协议1.0的,也就是上面mount命令后面的vers的值,但是针对win10、win11等,默认是不支持的,当你使用命令:

mount -t cifs //xxx.xxx.xxx.xxx/DataBase /mnt/share/industrial_analyzer/xxx.xxx.xxx.xxx/DataBase -o username=Administrator,vers=1.0

注意:vers=1.0,此时会报错:

然后你可能会查资料,然后执行:

mount -t cifs //xxx.xxx.xxx.xxx/DataBase /mnt/share/industrial_analyzer/xxx.xxx.xxx.xx/DataBase -o username=Administrator,vers=2.0

mount -t cifs //xxx.xxx.xxx/DataBase /mnt/share/industrial_analyzer/xxx.xxx.xxx/DataBase -o username=Administrator,vers=3.0

接着你会挂载成功~~~~

但是当你又将程序部署到Centos上的时候,你可能又会遇到一个问题:

Permission denied

网上说是权限的问题,经过实践测试,我发现并不是权限的问题,这里使用vers=1.0挂载就不会出现这个问题。

但是如果你的远程共享机器为win10或者win11,使用vers=1.0却挂不上去!!!

这是应为win10或者win11需要手动开启SMB协议,需要在windows中手动设置一下:

控制面板->程序->启用或关闭windows功能->勾选SMB1.0,然后重启电脑然设置生效:

然后再次使用vers=1.0挂载,就可以挂载成功:

mount -t cifs //xxx.xxx.xxx.xxx/DataBase /mnt/share/industrial_analyzer/xxxx.xxxx.xxxx.xxxx/DataBase -o username=Administrator,vers=1.0

注意:重新挂载前,请卸载之前挂载的:

umount /mnt/share/industrial_analyzer/xxxx.xxxx.xxxx.xxxx/DataBase

最后,挂载成功后,部署到Centos上,就可以正常的读取到目标文件了~~~


Comment