CentOS访问Windows10的共享目录

关于Windows共享目录所有你想知道的都记录在这里了

零、先说明具体环境

Windows 10专业版 1909,18363.778,ip为: 192.168.1.27
VMware Workstation Pro 15.5.0
VMware 安装 CentOS 7.7,最小化安装,ip为: 192.168.1.32

注意Vmware的虚拟机网络,要选择 【桥接模式】,这样其它机子才能访问到虚拟机。

一、Win10设置不用帐号密码的共享目录

1. 新建共享目录

选择需要共享的目录,比如说 D:\PUBLIC

在该目录点击右键 —> 选择“属性” —> 选择标签“共享” —> 下拉选项选择“Everyone” —> 点击“添加”按键 —> 修改“权限级别”为“读取/写入” —> 点击下边“共享”按键 —> 点击“完成“按键。

Win10设置不用帐号密码的共享目录1

2. 设置网络共享中心

打开 控制面板 —> 网络和Internet —> 网络和共享中心

Win10的这个【网络和共享中心】隐藏的比较深,还真不好找。这有个快速打开 网络和共享中心的办法:可以用【Win+R】运行,复制输入以下命令:(有点长哈)

control /name Microsoft.NetworkAndSharingCenter 

网络和共享中心 —> 更改高级共享设置 —> 展示“所有网络” —> 拉到最底下 —> 密码保护的共享,修改为“无密码保护的共享“ —> 保存更改。

Win10设置不用帐号密码的共享目录2

设置完成。

检测一下,【Win+R】运行,输入 \\192.168.1.27 ,可以看到 public 目录,也不需要用户名密码。

3. 设置防火墙

正常情况下,不需要修改防火墙设置。但是当你确认共享设置无误,就是访问不了时,你可以尝试先关闭防火墙。

用【Win+R】运行,复制输入以下命令打开Windows防火墙设置界面:

Firewall.cpl

点击左侧的 “启用或关闭Windows Defender防火墙” —> 关闭防火墙 —> 确定。

Win10设置不用帐号密码的共享目录3

如果不想(不能)停用防火墙,也可以在防火墙的“高级设置”中,修改规则,确保打开 TCP 端口 445。

在设置后重新启动 Windows。

二、Win10设置必须帐号和密码的共享目录

1. 新建一个专门用于访问共享目录的用户

右键“此电脑” —> 点“管理”菜单项,打开“计算机管理”面板 —> 选择“系统工具–本地用户和组” —> 选择“用户” —> 右键“新用户(N)…” —> 输入用户名密码 —> 取消“下次登录时须更改密码” —> 选中“用户不能更改密码”,选中“密码永不过期” —> 点击“创建”。

Win10设置必须帐号和密码的共享目录

2. 设置共享的文件夹

选择需要共享的目录,比如说 D:\PRIVATE

在该目录点击右键 —> 选择“属性” —> 选择标签“共享” —> 下拉选项选择上一步新建的用户odin —> 点击“添加”按键 —> 修改“权限级别”为“读取/写入” —> 点击下边“共享”按键 —> 点击“完成“按键。

三、设置CentOS7访问Windows10的共享目录

1. 安装Samba软件

Win10的共享目录,就是Samba协议,我们要在Linux访问,就得安装Samba客户端软件。

yum -y install samba-client cifs-utils

smbclient -L //192.168.1.27 -N

输出内容如下:
        Sharename       Type      Comment
        ---------       ----      -------
        ADMIN$          Disk      远程管理
        C$              Disk      默认共享
        D$              Disk      默认共享
        E$              Disk      默认共享
        IPC$            IPC       远程 IPC
        PRIVATE         Disk      
        PUBLIC          Disk      这里是说明文字
Reconnecting with SMB1 for workgroup listing.
do_connect: Connection to 192.168.1.27 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
Failed to connect with SMB1 -- no workgroup available

忽略掉默认共享那些内容,可以看到 192.168.1.27 有2个共享,PRIVATEPUBLIC,就是本文前面设置的那两个共享目录。

后面显示的 SMB1 出错,并没有关系,忽略它就行。

这只是出于安全考虑,Win10的1709版本之后默认关闭了 SMB1.0/CIFS文件共享支持。网上有很多资料,说解决办法是去设置 启用Win10的SMB1.0/CIFS文件共享支持。这里反对这种做法。

这都 2020 年啦,你确定还要使用 1983 年的 SMB1.0协议吗?三十多年了,不管是从安全,还是从传输速度考虑都不应该用它。

mkdir /mnt/public
mkdir /mnt/private

mount.cifs //192.168.1.27/public  /mnt/public
提示输入密码,随便回车就行。因为这个是不用帐号密码的共享目录

mount.cifs //192.168.1.27/private  /mnt/private
提示输入密码,我们输入正确密码,也报错。必须用下面的方式:

mount.cifs -o username="用户名",password="密码" //192.168.1.27/private  /mnt/private

对应本文所设置的用户名密码,是这样子:
mount.cifs -o username="odin",password="123456" //192.168.1.27/private  /mnt/private


然后就跟操作本地文件一样正常操作了。用完后,可以这样解除远程共享目录:
umount /mnt/public
umount /mnt/private

2. 设置CentOS开机自动挂载

自动加载方式1

编辑 /etc/fstab,添加下面一行

//192.168.1.27/private     /mnt/private       cifs  username=odin,password=123456,gid=www,uid=www  0 0

其中username、password参数是 Windows的共享账户和密码 gid、uid是挂载到linux时文件所属用户组和用户名

自动加载方式2(推荐使用)

将加载命令,写到 rc.local 开机启动脚本中去

echo 'mount.cifs -o username="odin",password="123456",gid=www,uid=www  //192.168.1.27/private  /mnt/private' >> /etc/rc.d/rc.local

chmod +x /etc/rc.d/rc.local

推荐使用方式2,因为改fstab方式,如果加载失败(Win10共享关掉了,Win10没开机之类),有可能导致CentOS开机失败。

其它相关文章:

CentOS访问Windows10的共享目录

Windows访问CentOS搭建的Samba文件共享服务

Windows访问CentOS搭建的NFS文件共享服务

在VMWARE虚拟机中使用宿主机的共享目录