linux搭建samba服務(wù),實(shí)現(xiàn)網(wǎng)盤自由

前言
最近一段時(shí)間稍微有點(diǎn)忙,而且技術(shù)學(xué)習(xí)方面也挺困惑的,所以也就沒有更新太多新的內(nèi)容,目前考慮的是,再重新梳理下多線程方面的技術(shù)點(diǎn),扎實(shí)下這塊的技術(shù),因此從明天開始,我就要重新開始學(xué)習(xí)多線程這塊的內(nèi)容,這次會(huì)盡可能把juc包下的內(nèi)容都覆蓋到,同時(shí)也希望比之前更完整更詳細(xì)。
至于今天,我打算整理下最近做的幾件比較有意思的事。一個(gè)是在前幾天安裝的manjaro上搭建samba文件服務(wù),實(shí)現(xiàn)個(gè)人文件網(wǎng)盤,不過我這個(gè)目前只能在局域網(wǎng)使用,搭建家庭媒體中心的話就很方便;
另一個(gè)是shell腳本統(tǒng)計(jì)數(shù)據(jù)。這一塊是由于最近需要幫產(chǎn)品統(tǒng)計(jì)一個(gè)數(shù)據(jù),但是由于公司數(shù)據(jù)存儲(chǔ)是分庫存儲(chǔ)的所以一條sql是沒法直接查的,畢竟還跨數(shù)據(jù)庫實(shí)例,所以我就寫了一個(gè)shell腳本,實(shí)現(xiàn)數(shù)據(jù)統(tǒng)計(jì)排序,原本考慮用python實(shí)現(xiàn)的,但是堡壘機(jī)安裝的是python 2.7,mysql的驅(qū)動(dòng)庫安裝不上(需要更新pip,但是我沒權(quán)限),所以最后我放棄了。
今天我們先看第一件事——實(shí)現(xiàn)網(wǎng)盤自由。

網(wǎng)盤自由
其實(shí),關(guān)于文件共享是有多種解決方案的,除了我們熟知的各類網(wǎng)盤,比如百度云盤、阿里云盤、堅(jiān)果云等云盤外,還有很多技術(shù)層面的解決方案,包括FTP、Samba、WebDAV等多種方式的,下面是關(guān)于這幾種協(xié)議的簡(jiǎn)單介紹(來源網(wǎng)絡(luò)):
FTP屬于古老的文件共享方式了,因?yàn)榘踩?,現(xiàn)代瀏覽器最新已默認(rèn)不能打開FTP協(xié)議。SFTP在FTP基礎(chǔ)上增加了加密,在Linux上安裝OpenSSH后可以直接用SFTP協(xié)議傳輸。使用SFTP臨時(shí)傳送文件還可以,但做文件共享,性能不高,速度較慢。
Samba是Linux下CIFS協(xié)議的實(shí)現(xiàn),優(yōu)勢(shì)在于對(duì)于小白使用簡(jiǎn)章,和Windows系統(tǒng)文件共享訪問一樣,不需要安裝第三方軟件,而且移動(dòng)端也有大量APP支持。蘋果手機(jī)文件APP中添加網(wǎng)絡(luò)存儲(chǔ)用的就是這種方式。Windows下文件共享使用445端口,且不能更改。445端口常常受黑客關(guān)照,在廣域網(wǎng)上大多運(yùn)營封掉了訪端口,所以這種文件共享只適合在內(nèi)網(wǎng)使用。
WebDAV基于HTTP協(xié)議的通信協(xié)議,在GET、POST、HEAD等幾個(gè)HTTP標(biāo)準(zhǔn)方法以外添加了一些新的方法,使應(yīng)用程序可對(duì)Web Server直接讀寫,并支持寫文件鎖定(Locking)及解鎖(Unlock),還可以支持文件的版本控制。因?yàn)榛?code style="overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(255, 100, 65);">HTTP,在廣域網(wǎng)上共享文件有天然的優(yōu)勢(shì),移動(dòng)端文件管理APP也大多支持WebDAV協(xié)議。使用HTTPS還能保安全性。Apache和Nginx支持WebDAV,可作為WebDAV文件共享服務(wù)器軟件。也可以使用專門的WebDAV軟件部署。
為什么采用samba?原因很簡(jiǎn)單,它安裝配置都很簡(jiǎn)單,支持win、android和ios等多平臺(tái),而且市面上很多軟件都支持(后面我們會(huì)分享)。但是它也有個(gè)缺點(diǎn),就是共享端口固定且不能修改,安全性差,不過局域網(wǎng)使用就不用考慮這么多。
至于網(wǎng)盤,受空間和網(wǎng)速限制,動(dòng)不動(dòng)還要開會(huì)員,這一點(diǎn)就不是特別友好,而且有些文件還不適合存在網(wǎng)盤中,過不好過幾天看不了了。當(dāng)然,如果你有自己的服務(wù)器,可以直接搞webDAV,這就更接近網(wǎng)盤體驗(yàn)了。
好了,廢話少說,我們直接開干吧!
下面我以manjaro為例,其他linux發(fā)行版類似,過幾天我把樹莓派拿回來了,可以再給各位小伙伴分享在樹莓派搭建個(gè)人服務(wù)器的相關(guān)內(nèi)容,包括文件服務(wù)器搭建。
安裝samba服務(wù)及依賴
安裝依賴的方式都差不多,只需要替換成對(duì)應(yīng)平臺(tái)的軟件包管理工具即可
sudo?pacman?-S?samba
配置
創(chuàng)建共享用戶
Samba 需要 Linux 賬戶才能使用 - 可以使用已有賬戶或 創(chuàng)建新用戶。
雖然用戶名可以和 Linux 系統(tǒng)共享,Samba 使用單獨(dú)的密碼管理,將下面的 syske 替換為選擇的 Samba 用戶:
#?syske?就是你要和linux共享的用戶名
smbpasswd?-a??syske
執(zhí)行完上面的命令之后,我就可以在samba的文件共享中使用這個(gè)用戶了,密碼就是這個(gè)用戶的linux登錄密碼
根據(jù)服務(wù)器角色差異,可能需要修改已有的文件權(quán)限和屬性
要讓新創(chuàng)建的用戶僅能訪問 Samba 遠(yuǎn)程文件服務(wù)器,可以禁用其它登錄選項(xiàng)
禁用
shellusermod?--shell?/usr/bin/nologin?--lock?syske禁用
SSH:需要在/etc/ssh/sshd_config中配置,具體可以自行搜索
更改用戶密碼
如果你想修改samba用戶的密碼,可以通過如下命令進(jìn)行修改,只需要按照提示輸入密碼即可
sudo?smbpasswd?syske

創(chuàng)建samba用戶組
這一步可以直接省略,非必須,有需要的小伙伴可以看下:
groupadd?sambashare
groupdd是linux的用戶組新增命令,后面直接更用戶組名稱即可。
修改配置文件
安裝完成后會(huì)在/etc文件夾下生成samba文件夾,在配置之前我們先將初始化配置文件備份下:
mv?/etc/samba/smb.conf?/etc/samba/smb.conf.bak
接著我們開始編輯smb.conf文件,將其中原有的配置文件全部注釋掉,并加入如下配置內(nèi)容:
[global]
#所要加入的工作組或者域
workgroup = WORKGROUP
#用于在 Windows 網(wǎng)上鄰居上顯示的主機(jī)名
netbios name = Manjaro
#定義安全級(jí)別
security = user
#將所有samba系統(tǒng)主機(jī)所不能正確識(shí)別的用戶都映射成guest用戶
map to guest = bad user
#是否開啟dns代理服務(wù)
dns proxy = no
這里設(shè)置的是samba的全局設(shè)置信息,注釋已經(jīng)夠詳細(xì)了,所以不再贅述
然后再寫入系統(tǒng)配置分享文件夾的配置:
[syskeshare]
# 我們要分享的文件夾路徑
path = /run/media/syske/D88047AA80478DC6
# 是否允許瀏覽
browseable = yes
# 是否可寫
writable = yes
# 是否允許匿名(guest)訪問,等同于public
guest ok = yes
# 客戶端上傳文件的默認(rèn)權(quán)限
create mask = 0777
# 客戶端創(chuàng)建目錄的默認(rèn)權(quán)限
# 注意共享文件在系統(tǒng)本地的權(quán)限不能低于以上設(shè)置的共享權(quán)限。
directory mask = 0777
這里主要設(shè)置我們要分享的文件夾的相關(guān)信息,首先syskeshare是節(jié)點(diǎn)名,也是我們客戶端訪問的共享路徑,節(jié)點(diǎn)下面配置了文件夾的路徑以及權(quán)限信息,需要注意的是,這里設(shè)置的文件夾權(quán)限只能小于等于分享路徑文件夾的權(quán)限,否則不一定能正常寫入文件。
啟動(dòng)測(cè)試
完成以上配置之后,從理論上講,我們只需要啟動(dòng)samba服務(wù)就可以訪問我們共享的文件夾了。啟動(dòng)的方式也很簡(jiǎn)單:
#?啟動(dòng)
sudo?systemctl?start?smb?nmb
#?重啟
sudo?systemctl?restart?smb?nmb
#?停止
sudo?systemctl?stop?smb?nmb
啟動(dòng)成功后,我們可以先通過如下命令測(cè)試下效果:

如上顯示則表明,samba服務(wù)已經(jīng)啟動(dòng)成功,且可以正常訪問,下面我們看下各個(gè)平臺(tái)具體如何訪問:
安卓
安卓端可以通過es文件管理器進(jìn)行訪問,操作也很方便:


這款軟件不知道ios平臺(tái)是否有,不過應(yīng)該可以找到替代軟件。這一款軟件的不好之處是有廣告,優(yōu)點(diǎn)是可以自動(dòng)掃描,操作上便捷很多,安卓平臺(tái)還有另一款軟件Solid Explorer,是一款國外的軟件,只能通過google play下載,需要的小伙伴可以私信,我放幾張截圖:

這款軟件的優(yōu)勢(shì)是輕量,而且沒廣告,云盤這塊支持的也挺多的,我是今天剛發(fā)現(xiàn)的。
win平臺(tái)
win平臺(tái)操作就簡(jiǎn)單多了,直接點(diǎn)擊文件管理器中的網(wǎng)絡(luò),如果能找到你的共享機(jī)器,直接雙擊即可,如果有密碼輸入密碼即可,如果找不到,直接輸入分享地址訪問:
\\192.168.0.101\syskeshare
其中192.168.0.101是我manjaro的主機(jī)地址,syskeshare是我的分享名稱,顯示效果如下:

由于手里沒有mac系統(tǒng)的設(shè)備,感興趣的小伙伴自己嘗試下,應(yīng)該也不會(huì)太難。
結(jié)語
用linux搭建samba服務(wù)器算是一個(gè)比較簡(jiǎn)單,但是特別實(shí)用的技能,有了這個(gè)技能加持之后,你再也不用擔(dān)心文件共享問題了,最爽的是視頻資源、音樂資源、圖片資源再也不用手動(dòng)復(fù)制了,只需要接入samba服務(wù)器就可以在家里的任何可以連到wifi的地方訪問他們,豈不是美滋滋!
另外關(guān)于家庭媒體中心這塊也有一款特別好用的軟件,而且它本身也支持samba資源,后面我們可以專門分享下,教大家如何用樹莓派搭建家庭媒體中心,好了,今天就到這里吧,各位小伙伴 ,晚安吧!
