linux_windows文件共享-Samba
概述
Samba (SMB) 是一种广泛用于共享文件和打印机资源的协议,特别是在 Windows 和 Linux 系统之间。
步骤
(1)安装Samba
sudo apt install samba
(2)配置文件这里的配置我是直接按装在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本身的账户和其他账户和系统账户没关系
(4)linux连接(这个连接可以是在容器,也可以是主机只要可以连接到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 smbd(8)常见问题
防火墙问题:输入这几条指令
# 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