linux/windows共享文件夹

linux/windows共享文件夹

windows共享文件夹linux访问

1、在windows中,设置共享文件

  • 选择对应的文件夹,右键属性

  • 点击共享,对文件进行共享

共享之后显示如下:

2、在linux端,使用mount命令进行挂载

  • 进入到自己想共享到的文件夹

  • 执行命令
sudo mount -t cifs -o username=admin,password=123456 //169.254.200.208/image ~/temp

linux下,若有图形化界面,则有以下内容:(上面通过查看temp文件夹内容也可以看出,共享成功)

3、基于以上,挂载成功,但是如果重启设备,则没有对应的挂载,若想实现长期挂载,可以进行配置文件:

  • 取消挂载(前面执行的mount命令),发现没有共享的东西了

  • 执行命令,配置文件:
sudo vim /etc/fstab

  • 执行命令,应用配置文件:
sudo mount -a

查看,配置成功,实现linux在windows端该文件夹中的读写工作

linux共享文件夹供windows使用

Samba 可实现 Windows 和 Linux 系统间的文件共享

1、安装 Samba 服务:

sudo apt-get install samba # Ubuntu/Debian sudo yum install samba # CentOS/RHEL

2、创建共享目录:

sudo mkdir /data/samba sudo chmod 777 /data/samba

3、编辑/etc/samba/smb.conf文件,添加以下内容:

[shared] comment = Shared Folder path = /data/samba browseable = yes read only = no guest ok = yes

[shared]: 这是共享目录的名称,在网络中访问该共享目录时会用到这个名称

comment: 这是对共享目录的描述信息,它的作用是让用户在浏览共享目录时能快速了解其用途。不过,该描述信息不会对共享目录的功能产生影响。

path:此参数指定了服务器上要共享的实际目录路径。当用户访问这个共享目录时,实际上访问的就是服务器上的/data/samba目录。

browseable:若设置为yes,共享目录会在网络浏览时显示出来,方便用户查找。若设置为no,则需要用户手动输入共享名称才能访问。

read only: 该参数决定了用户对共享目录的访问权限。设置为no时,用户可以对共享目录进行读写操作;若设置为yes,用户就只能读取共享目录中的文件,无法进行写入或修改。

guest ok: 当设置为yes时,用户无需提供用户名和密码就能访问共享目录,这实现了匿名访问。若设置为no,用户则必须通过身份验证才能访问共享目录

4、重启 Samba 服务:

sudo systemctl restart smbd sudo systemctl enable smbd

5、windows访问

配置好上述之后,windows执行如相爱操作获得对应文件夹:

在此电脑右键,点击映射网络驱动器

在文件夹部分输入共享的文件夹及ip

注意:对应的文件名为上述配置中中括号中的名字

完成之后即可访问,同时发现网络位置多了一个目录

Linux/Windows 跨网段、双网卡电脑互通共享文件夹

一、组网拓扑说明

网段1:192.168.11.0/24 电脑A:192.168.11.11 (单网卡,客户端,需要访问电脑C共享) 电脑B(双网卡路由中转): 网口1(eth0):192.168.11.12 接入网段1 网口2(eth1):192.168.10.10 接入网段2 网段2:192.168.10.0/24 电脑C:192.168.10.11 (共享服务器,Windows/Linux Samba均可) 目标:电脑A ↔ 电脑C跨网段互通,A读写C共享文件夹

核心前提:电脑 B 开启 IP 转发,A、C 分别添加静态路由指向对方网段,防火墙放行 SMB 139/445 端口,新增跨网段路由、中转主机转发、防火墙三部分。

二、第一部分:电脑 B(双网卡中转主机)配置(Linux 系统,最常用)

1. 网卡静态 IP 配置(确保两块网卡分属不同网段)

编辑网卡配置(Ubuntu netplan 示例)

# /etc/netplan/00-installer-config.yaml network: ethernets: eth0: # 连接电脑A网段11段 addresses: [192.168.11.12/24] eth1: # 连接电脑C网段10段 addresses: [192.168.10.10/24] version: 2

应用配置:

sudo netplan apply

2. 开启 Linux 内核 IP 转发(跨网段通信核心)

临时生效(重启失效)

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

永久生效

sudo vim /etc/sysctl.conf # 修改/新增一行 net.ipv4.ip_forward=1 # 加载生效 sudo sysctl -p

3. 防火墙放行跨网段转发流量(ufw 示例)

# 允许两个网段互相转发 sudo ufw allow from 192.168.11.0/24 to 192.168.10.0/24 sudo ufw allow from 192.168.10.0/24 to 192.168.11.0/24 # 放行SMB共享端口(139/445) sudo ufw allow proto tcp from any to any port 139,445 sudo ufw reload

三、第二部分:电脑 A(192.168.11.11,客户端)添加静态路由

场景 1:电脑 A 是 Windows 系统

1. 以管理员身份打开 CMD

2. 添加永久路由(访问 10 段全部设备,网关为电脑 B 网口 1 IP)

route -p add 192.168.10.0 mask 255.255.255.0 192.168.11.12
  • -p:永久路由,重启不丢失
  • 目标网段:192.168.10.0,掩码255.255.255.0,下一跳网关:电脑 B192.168.11.12

3. 验证路由

route print | findstr "192.168.10.0"

4. 测试连通性

ping 192.168.10.11

场景 2:电脑 A 是 Linux 系统

1. 临时路由(重启失效)

sudo ip route add 192.168.10.0/24 via 192.168.11.12

2. 永久路由(netplan 持久化)

# netplan配置新增routes routes: - to: 192.168.10.0/24 via: 192.168.11.12
sudo netplan apply # 验证 ip route ping 192.168.10.11

四、第三部分:电脑 C(192.168.10.11,共享服务端)添加回程路由

电脑 C 必须配置回程路由,否则无法回复电脑 A 的数据包。

场景 1:电脑 C 是 Windows 系统

管理员 CMD 执行永久路由:

route -p add 192.168.11.0 mask 255.255.255.0 192.168.10.10

下一跳网关为电脑 B 网口 2 IP192.168.10.10

场景 2:电脑 C 是 Linux(Samba 服务端)

临时路由

sudo ip route add 192.168.11.0/24 via 192.168.10.10

永久路由写入 netplan,同电脑 A 配置逻辑。

五、第四部分:共享配置适配跨网段(两种共享模式)

模式 1:电脑 C 为 Windows 共享文件夹(电脑 A Linux 访问)

  1. Windows C 按第一章节步骤完成文件夹共享,开启文件和打印机共享防火墙规则
  2. Windows C 防火墙放行 SMB 端口:入站规则启用「文件和打印机共享」
  3. 电脑 A(Linux)挂载跨网段共享
# 安装依赖(未装时执行) sudo apt install cifs-utils # 临时挂载 sudo mount -t cifs -o username=WindowsC账号,password=WindowsC密码 //192.168.10.11/共享名 ~/temp_c # 永久开机挂载 /etc/fstab //192.168.10.11/共享名 /home/xxx/temp_c cifs defaults,username=xxx,password=xxx 0 0 sudo mount -a

模式 2:电脑 C 为 Linux Samba 共享(Windows 电脑 A 访问)

1. 电脑 C 安装 Samba、配置smb.conf共享目录

2.Samba 新增跨网段允许配置(关键,否则拒绝 11 段 IP 访问)

# /etc/samba/smb.conf 全局段添加 [global] workgroup = WORKGROUP security = user hosts allow = 192.168.11.0/24 192.168.10.0/24 # 放行两个网段所有IP hosts deny = all # 下方保留原有共享配置 [shared] comment = Cross-Network Share path = /data/samba browseable = yes read only = no guest ok = yes

3. 重启 Samba 服务

sudo systemctl restart smbd sudo systemctl enable smbd

4. 电脑 A(Windows)映射网络驱动器,路径填写电脑 C IP:\\192.168.10.11\shared

六、Windows 中转方案补充(电脑 B 是 Windows 双网卡)

若中转主机 B 为 Windows,替代 Linux 转发步骤:

1. 开启 Windows IP 路由转发 注册表:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters新增IPEnableRouterDWORD 值 = 1,重启电脑生效

2. 管理员 CMD 添加静态路由(Windows 自带路由转发无需额外配置)

# 本机自动转发11段与10段流量,无需额外路由,A、C路由不变

3. Windows 防火墙放行「文件和打印机共享」入站规则

七、常见跨网段报错排查

1. ping不通192.168.10.11

  • 检查电脑 B IP 转发是否开启、A/C 静态路由网关是否写错
  • 关闭所有电脑第三方杀毒 / 防火墙,测试基础连通

2. mount error(112): Host is down/ Windows 无法访问共享

  • 目标主机防火墙未放行 139/445 端口
  • Sambahosts allow未添加远端网段,拒绝跨网段 IP
  • 跨网段 NetBIOS 解析失效,必须用 IP 地址访问,不要用计算机名

3. 能 ping 通但无法读写共享

  • Windows 共享权限、安全权限双重放开
  • Linux Samba 目录本地权限chmod 777 /data/samba
  • fstab 挂载添加vers=3.0兼容参数:
//192.168.10.11/share /mnt/c cifs username=xx,password=xx,vers=3.0 0 0