使用SMB共享文件要比FTP简单得多。主要是因为配置简单。
安装
安装smb服务
sudo apt update
sudo apt install samba -y
配置
添加用户
注意,samba使用自己管理的用户密码!!!但是又比较别扭的是,必须使用系统现有的用户。
换句话说,你需要找一个现有的用户,给他重新设置一个密码。是不是很别扭……
也有一些方法能够把系统用户的密码同步到smb的用户密码,但是我没试……
总之,选一个你想用来连接smb服务的用户。比如你可以选择admin。然后使用如下命令新增一个smb的用户密码:
sudo smbpasswd -a admin
输入两次密码,这个密码是你设定的smb密码,他可以和系统用户密码不同。如果说提示“Failed to add entry for user admin.”说明你在系统中就没有admin这个用户。正常应该提示“Added user admin.”
修改配置
备份原配置并且修改配置:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
sudo vim /etc/samba/smb.conf
当然如果使用vscode远程连接,也可以修改文件权限然后编辑。最后别忘了改回去。
sudo chmod 666 /etc/samba/smb.conf
code /etc/samba/smb.conf
添加一个共享的文件夹配置,例如:
[global]
netbios name = UBUNTU
# 共享FTP文件夹
[share]
path = /srv/ftp
browseable = yes
read only = no
writable = yes
valid users = ftp
guest ok = no
# (可选)允许特定 IP 或网段(逗号分隔)
hosts allow = 10.0.0.0/24
# (可选)拒绝所有其他 IP(可选)
hosts deny = ALL
如果有多个用户,使用逗号隔开即可:
valid users = user1, user2
这里可以选择允许的ip网段。此外,netbios name
是一个自定的主机名称。
可以使用如下命令检查配置是否有错误:
testparm
输出如下说明是OK的:
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
此外,如果你没有在global模块配置netbios name
的长度过长,或者你没有配置而使用了默认的ubuntu主机名称而它有太长了,就会提示:
WARNING: The 'netbios name' is too long (max. 15 chars).
这是因为linux主机名称最长可以到64,然而windows最长只能到15. 所以还是推荐配置并且使用一个短且兼容的名称。
重启服务
重启服务的命令,二选一。
sudo systemctl restart smbd
sudo service smbd restart
开放防火墙
需要开放445端口的TCP协议。
配置VPN
你会说,“我不是都有公网IP了吗?为什么还要配置VPN?”
哦天真的孩子。你觉得网络运营商会让你在公网使用SMB服务吗?
如果你有幸在内网环境配置过SMB服务,你可能会偶然发现,“物理学不存在了!”好吧,其实就是内网,比如说公司网络、学校网络中,不禁用smb协议(不禁用445端口流量),你会发现配置是成功的;但是换了个网络,你就会发现连不上了,开始怀疑这不对那不对或者是教程有问题……
好吧,真的可能不是你的问题,而是运营商的问题。此时,你需要使用虚拟专用网络解决这个问题。至于方法嘛……在自己的星球上部署局域网吧!、组建安全局域网吧!、FRP自己看吧……
远端视频流
使用ftp服务的一个诱因其实是希望远端提供视频流服务。简单来说,使用ftp上传视频到服务器,再使用SMB共享文件,手机只要通过SMB连接到服务器就可以不用下载视频直接播放视频流了。
这里有几个技术要素:
- 使用ftp方便地上传文件到服务器:部署自己的FTP服务 – 软软橘子
- 使用smb共享服务器上的文件:使用SMB共享文件 – 软软橘子
- 使用软件支持播放视频流(也就是不用下载整个视频就能播放):安卓 OPlayer。
Comments NOTHING