linux_windows文件共享-Samba

📅 2026/8/5 14:57:20
linux_windows文件共享-Samba
概述Samba (SMB) 是一种广泛用于共享文件和打印机资源的协议特别是在 Windows 和 Linux 系统之间。步骤1安装Sambasudo apt install samba2配置文件这里的配置我是直接按装在lxc的容器中sudo nano /etc/samba/smb.conf 写入一下内容注意写进去之后把汉字删了 [shared] path /home/shared #共享目录地址 browsable yes read only no valid users root # 账户这个是samba自身的账户和系统没关系需要创建这个账户3创建samba账户 我这里的账号是root 密码1234#创建账户root会要求输出密码 sudo smbpasswd -a root # 启用账户 sudo smbpasswd -e root #重启服务 sudo systemctl restart smbd注意这里的账户是samba本身的账户和其他账户和系统账户没关系4linux连接这个连接可以是在容器也可以是主机只要可以连接到ip就可以smbclient //10.75.107.205/shared -U root注意linux里面需要先安装sudo apt install smbclient然后访问这里的目录和配置文件写的地址不同不需要前面的部分。我想再次提醒下上面命令里面的shared是指的配置文件里面的[shared]不是地址5文件操作smb: \ get filename # 下载 smb: \ put localfile # 上传 smb: \ exit # 退出 smb: \ ls # 和liux系统一样6远程访问的端口转发设置因为容器是服务端为了能在局域网访问因此需要在宿主机配置转发实现连接到容器sudo iptables -t nat -A PREROUTING -p tcp --dport 445 -j DNAT --to-destination 10.75.107.205:445 sudo iptables -t nat -A POSTROUTING -p tcp -d 10.75.107.205 --dport 445 -j MASQUERADE远程windows访问在上面输入\\192.168.0.150\shared 地址就可以了。也可以在浏览器访问输\\192.168.0.150\shared 访问。这里提醒下Samba占用了宿主机的445端口好像这个远程访问不能使用端口号所以这里这个端口被唯一绑定了。7常用命令# 检查 smbd 服务状态文件共享服务 sudo systemctl status smbd # 检查 nmbd 服务状态NetBIOS 名称解析服务 sudo systemctl status nmbd # 重启服务 sudo systemctl restart smbd8常见问题防火墙问题输入这几条指令# 1. 允许已建立/相关的连接回包必须加否则连不上 sudo nft insert rule ip filter FORWARD ct state related,established accept comment \Allow established/related Samba forward\ # 2. 允许去往容器 Samba 端口的流量进方向 sudo nft insert rule ip filter FORWARD ip daddr 10.75.107.205 tcp dport {139, 445} accept comment \Allow forward to LXC Samba TCP\ # 3. 允许 UDP NetBIOS名字解析用Samba 经常需要 sudo nft insert rule ip filter FORWARD ip daddr 10.75.107.205 udp dport {137, 138} accept comment \Allow forward to LXC Samba UDP\ # 如果想更严只允许来自局域网假设你的网段 10.75.107.0/24 # sudo nft insert rule ip filter FORWARD ip saddr 10.75.107.0/24 ip daddr 10.75.107.205 tcp dport {139, 445} accept