0x00前言
小米电视上有个应用叫【高清播放器】,此播放器可以连接开启了【共享】功能的设备
通过此功能可以在大屏上浏览其它设备上的文件
0x01问题
问题是连不上MacBook
用户名和密码完全正确也还是有下面的提示
对比Windows
0x02原因
原因是小米电视的samba和Mac的smbd不兼容,目前并没有找到一个比较完美的解决方案
0x03方案
1、改小米电视的samba版本
2、改Mac上的smbd
3、都不改,用一个兼容的版本代替Mac上的smbd
0x04解决过程
Mac上开启samba服务
docker run -it --name samba -p 139:139 -p 445:445 -v ~/Downloads:/shares -d dperson/samba -s "shares;/shares;yes;yes;yes;" -S
可能会出现这个错误
Error starting userland proxy: listen tcp 0.0.0.0:445: bind: address already in use.
445端口被占用了,因为之前开启了smbd,smbd占用了445
先关掉系统的共享功能再重试
查看下445端口的情况
sudo lsof -i:445
成功了但还是连接不上
猜测应该是还有其他服务一起限制,单是开了445端口是不行的
于是重新打开系统的共享功能,由于docker已经占了445端口,所以系统的smbd启动不了,成功替换
0x05解决步骤
1、关闭共享功能
2、开启新的samba服务
3、打开共享功能
0x06进一步
写个脚本来解决
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
|
保存为samba.sh,这样用
sh samba.sh start/restart/stop
0x07踩坑记录
samba
docker run -it --name samba -p 139:139 -p 445:445 -v ~/Downloads:/shares -d dperson/samba -s "shares;/shares;yes;yes;yes;" -S
命令最后有个”-S”参数,这个是关键,表示”Disable SMB2 minimum version”
具体可参看https://hub.docker.com/r/dperson/samba
如果不加这个参数,在电视上是连接不了的,但在PC上可以连接
倒推回来,可能问题的原因是电视用的是SMB1,而Mac又放弃了对SMB1的支持,PC则同时支持SMB1~3
smbd
mac上用命令打开和关闭【共享】功能的命令是
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smbd.plist
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.smbd.plist
小坑: unload了之后,445端口有可能还没来得及关闭,这时候开samba就会出现端口被占用的问题
解决方法是让smbd用另外一个端口,如446,所以脚本里会有
SMBD=/System/Library/LaunchDaemons/com.apple.smbd.plist
sudo sed -i "" 's/<string>\/usr\/sbin\/smbd<\/string>/<string>\/usr\/sbin\/smbd -ports "446"<\/string>/g' $SMBD
sudo sed -i "" 's/<string>\/usr\/sbin\/smbd -ports "446"<\/string>/<string>\/usr\/sbin\/smbd<\/string>/g' $SMBD