linux搭建samba服務,實現網盤自由


前言

最近一段時間稍微有點忙,而且技術學習方面也挺困惑的,所以也就沒有更新太多新的內容,目前考慮的是,再重新梳理下多線程方面的技術點,扎實下這塊的技術,因此從明天開始,我就要重新開始學習多線程這塊的內容,這次會盡可能把juc包下的內容都覆蓋到,同時也希望比之前更完整更詳細。

至於今天,我打算整理下最近做的幾件比較有意思的事。一個是在前幾天安裝的manjaro上搭建samba文件服務,實現個人文件網盤,不過我這個目前只能在局域網使用,搭建家庭媒體中心的話就很方便;

另一個是shell腳本統計數據。這一塊是由於最近需要幫產品統計一個數據,但是由於公司數據存儲是分庫存儲的所以一條sql是沒法直接查的,畢竟還跨數據庫實例,所以我就寫了一個shell腳本,實現數據統計排序,原本考慮用python實現的,但是堡壘機安裝的是python 2.7mysql的驅動庫安裝不上(需要更新pip,但是我沒權限),所以最后我放棄了。

今天我們先看第一件事——實現網盤自由。

網盤自由

其實,關於文件共享是有多種解決方案的,除了我們熟知的各類網盤,比如百度雲盤、阿里雲盤、堅果雲等雲盤外,還有很多技術層面的解決方案,包括FTPSambaWebDAV等多種方式的,下面是關於這幾種協議的簡單介紹(來源網絡):

FTP屬於古老的文件共享方式了,因為安全性,現代瀏覽器最新已默認不能打開FTP協議。SFTPFTP基礎上增加了加密,在Linux上安裝OpenSSH后可以直接用SFTP協議傳輸。使用SFTP臨時傳送文件還可以,但做文件共享,性能不高,速度較慢。

SambaLinuxCIFS協議的實現,優勢在於對於小白使用簡章,和Windows系統文件共享訪問一樣,不需要安裝第三方軟件,而且移動端也有大量APP支持。蘋果手機文件APP中添加網絡存儲用的就是這種方式。Windows下文件共享使用445端口,且不能更改。445端口常常受黑客關照,在廣域網上大多運營封掉了訪端口,所以這種文件共享只適合在內網使用。

WebDAV 基於 HTTP 協議的通信協議,在GETPOSTHEAD等幾個HTTP標准方法以外添加了一些新的方法,使應用程序可對Web Server直接讀寫,並支持寫文件鎖定(Locking)及解鎖(Unlock),還可以支持文件的版本控制。因為基於HTTP,在廣域網上共享文件有天然的優勢,移動端文件管理APP也大多支持WebDAV協議。使用HTTPS還能保安全性。ApacheNginx支持WebDAV,可作為WebDAV文件共享服務器軟件。也可以使用專門的WebDAV軟件部署。

為什么采用samba?原因很簡單,它安裝配置都很簡單,支持winandroidios等多平台,而且市面上很多軟件都支持(后面我們會分享)。但是它也有個缺點,就是共享端口固定且不能修改,安全性差,不過局域網使用就不用考慮這么多。

至於網盤,受空間和網速限制,動不動還要開會員,這一點就不是特別友好,而且有些文件還不適合存在網盤中,過不好過幾天看不了了。當然,如果你有自己的服務器,可以直接搞webDAV,這就更接近網盤體驗了。

好了,廢話少說,我們直接開干吧!

下面我以manjaro為例,其他linux發行版類似,過幾天我把樹莓派拿回來了,可以再給各位小伙伴分享在樹莓派搭建個人服務器的相關內容,包括文件服務器搭建。

安裝samba服務及依賴

安裝依賴的方式都差不多,只需要替換成對應平台的軟件包管理工具即可

sudo pacman -S samba

配置

創建共享用戶

Samba 需要 Linux 賬戶才能使用 - 可以使用已有賬戶或 創建新用戶。

雖然用戶名可以和 Linux 系統共享,Samba 使用單獨的密碼管理,將下面的 syske 替換為選擇的 Samba 用戶:

# syske 就是你要和linux共享的用戶名
smbpasswd -a  syske

執行完上面的命令之后,我就可以在samba的文件共享中使用這個用戶了,密碼就是這個用戶的linux登錄密碼

根據服務器角色差異,可能需要修改已有的文件權限和屬性

要讓新創建的用戶僅能訪問 Samba 遠程文件服務器,可以禁用其它登錄選項

  • 禁用 shell

    usermod --shell /usr/bin/nologin --lock syske
    
  • 禁用 SSH :需要在/etc/ssh/sshd_config中配置,具體可以自行搜索

更改用戶密碼

如果你想修改samba用戶的密碼,可以通過如下命令進行修改,只需要按照提示輸入密碼即可

sudo smbpasswd syske

創建samba用戶組

這一步可以直接省略,非必須,有需要的小伙伴可以看下:

groupadd sambashare

groupddlinux的用戶組新增命令,后面直接更用戶組名稱即可。

修改配置文件

安裝完成后會在/etc文件夾下生成samba文件夾,在配置之前我們先將初始化配置文件備份下:

mv /etc/samba/smb.conf /etc/samba/smb.conf.bak

接着我們開始編輯smb.conf文件,將其中原有的配置文件全部注釋掉,並加入如下配置內容:

[global]
#所要加入的工作組或者域
workgroup = WORKGROUP
#用於在 Windows 網上鄰居上顯示的主機名
netbios name = Manjaro
#定義安全級別
security = user
#將所有samba系統主機所不能正確識別的用戶都映射成guest用戶
map to guest = bad user
#是否開啟dns代理服務
dns proxy = no

這里設置的是samba的全局設置信息,注釋已經夠詳細了,所以不再贅述

然后再寫入系統配置分享文件夾地配置:

[syskeshare]
   # 我們要分享的文件夾路徑
   path = /run/media/syske/D88047AA80478DC6
   # 是否允許瀏覽
   browseable = yes
   # 是否可寫
   writable = yes
   # 是否允許匿名(guest)訪問,等同於public
   guest ok = yes
   # 客戶端上傳文件的默認權限
   create mask = 0777
   # 客戶端創建目錄的默認權限
   # 注意共享文件在系統本地的權限不能低於以上設置的共享權限。
   directory mask = 0777

這里主要設置我們要分享的文件夾的相關信息,首先syskeshare是節點名,也是我們客戶端訪問的共享路徑,節點下面配置了文件夾的路徑以及權限信息,需要注意的是,這里設置的文件夾權限只能小於等於分享路徑文件夾的權限,否則不一定能正常寫入文件。

啟動測試

完成以上配置之后,從理論上講,我們只需要啟動samba服務就可以訪問我們共享的文件夾了。啟動的方式也很簡單:

# 啟動
sudo systemctl start smb nmb
# 重啟
sudo systemctl restart smb nmb
# 停止
sudo systemctl stop smb nmb

啟動成功后,我們可以先通過如下命令測試下效果:

如上顯示則表明,samba服務已經啟動成功,且可以正常訪問,下面我們看下各個平台具體如何訪問:

安卓

安卓端可以通過es文件管理器進行訪問,操作也很方便:

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

這款軟件的優勢是輕量,而且沒廣告,雲盤這塊支持的也挺多的,我是今天剛發現的。

win平台

win平台操作就簡單多了,直接點擊文件管理器中的網絡,如果能找到你的共享機器,直接雙擊即可,如果有密碼輸入密碼即可,如果找不多,直接輸入分享地址訪問:

\\192.168.0.101\syskeshare

其中192.168.0.101是我manjaro的主機地址,syskeshare是我的分享名稱,顯示效果如下:

由於手里沒有mac系統的設備,感興趣的小伙伴自己嘗試下,應該也不會太難。

結語

linux搭建samba服務器算是一個比較簡單,但是特別實用的技能,有了這個技能加持之后,你再也不用擔心文件共享問題了,最爽的是視頻資源、音樂資源、圖片資源再也不用手動復制了,只需要接入samba服務器就可以在家里的任何可以連到wifi的地方訪問他們,豈不是美滋滋!

另外關於家庭媒體中心這塊也有一款特別好用的軟件,而且它本身也支持samba資源,后面我們可以專門分享下,教大家如何用樹莓派搭建家庭媒體中心,好了,今天就到這里吧,各位小伙伴 ,晚安吧!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM