【Linux筆記】samba源碼安裝及基本使用說明

來源:互聯網
上載者:User

【Linux筆記】samba源碼安裝及基本使用說明

前段時間項目中碰到從windows機器上傳多媒體檔案至linux伺服器的需求(人工審核並觸發同步),調研了幾種上傳機制或實現方案:

1) http方式上傳至WebServer
用PHP或Python指令碼上傳給WebServer,但由於多媒體檔案動輒幾百兆,PHP由於最長執行時間的限制首先被排除,另外由於用指令碼上傳需要增加失敗重試等控制邏輯,Python雖然可以實現這些功能,但考慮到開發成本及服務的穩定性,並不是最優方案

2) flash方式上傳
例如百度雲web端就使用了flash方式上傳,通過chrome調試工具可以看到,百度雲web端的上傳按鈕調用的是swfupload,關於swfupload的介紹,可以參考這裡或這裡),但由於之前對該方案完全沒有瞭解,開發成本太高,所以只能放棄 -_-

3) ftp方式上傳
在Linux伺服器搭建ftp伺服器,在Windows客戶機安裝ftp用戶端工具,滑鼠拖拽即可實現檔案上傳。但由於廠裡網路拓撲的特殊性及伺服器營運規範,這種方式雖然技術是可以實現業務需求,但實現起來比較麻煩

4) 其它開源的檔案同步工具
開源工具中首先想到Samba,在考慮業務需求和機器業務規範後,發現samba可以方便地實現需求。

本文下面的部分是關於Samba源碼安裝及基本配置方法的筆記。

1. Samba是什麼
Samba是一套開源軟體,可以在安裝了不同作業系統的機器間共用檔案或印表機。尤其是需要在Window客戶機與Linux伺服器間共用檔案時,samba顯得尤為方便。更系統性的介紹可以參考官網或wiki pedia

2. 源碼安裝步驟
以v4.1.9為例,源碼編譯/安裝步驟(安裝需要root許可權)如下:
1) 從samba官網下載最新版本源碼,解壓,進入源碼目錄
2) 確保系統預設的python版本為2.7+且編譯python時配置了--enable-shared,否則後續編譯samba時會報錯
3) 執行命令: ./configure && make && make install,samba會被預設安裝在/usr/local/samba/路徑下
4) 根據實際業務需求,配置/usr/local/samba/etc/smb.conf,如設定共用目錄及使用者等
5) 依次啟動samba相關的2個守護進程:

shell> /usr/local/samba/sbin/smbd -s /usr/local/samba/etc/smb.conf -Dshell> /usr/local/samba/sbin/nmbd -s /usr/local/samba/etc/smb.conf -D
備忘1:上述啟動命令中的/xxx_path/smb.conf是安裝完samba後設定檔的實際路徑
備忘2:可通過echo $?查看進程啟動狀態,或通過ps aux | grep db查看進程是否已存在,還可通過netstat -tnlp查看smbd是否處於連接埠偵聽狀態(tcp連接埠139和445,至於為何偵聽兩個連接埠,可參考這裡的Firewall Configuration部分) ;nmdb佔用的是udp 137連接埠
6. 終端執行/usr/local/samba/bin/smbclient -U% -L localhost,測試samba守護服務是否正常,如未報錯,表明samba服務已成功啟動

官方的Install Guide可以參考這裡

3. Samba基本配置
samba的設定檔典型路徑為/etc/samba/smb.conf或/usr/local/samba/etc/smb.conf,檔案文法與windows的.ini類似:檔案包含以"[]"為期數標識的多個sections,每個section下配置項遵守key = value的格式。
samba.conf中,每個section代表samba伺服器的一個meta-service或共用配置。其中,[global]較為特殊,它包含的配置項會影響整個samba伺服器的配置;[homes]或[printers]被稱為meta-service,前者預設將每個使用者自己的home目錄設定為該使用者可寫的共用目錄,後者則提供了列印佇列支援並配置了來自各samba用戶端的列印任務的存放路徑。
我們可以根據實際需要,配置多個section,比如:

[Shared]   comment = Global Share - All Users   path = /samba/shared   read only = No   guest ok = Yes   public = Yes   browseable = Yes   create mask = 0666   directory mask = 0777
上述配置的作用是:所有使用者(包括guest和public使用者)均可瀏覽或讀寫/samba/shared目錄,在該共用目錄下建立新目錄的預設許可權是777,建立新檔案的預設許可權是666
下面的配置可以關閉預設的"印表機和傳真"共用目錄
   load printers = no   printcap name = /dev/null   ## hide printers and faxes share   disable spoolss = yes
其它隱藏檔案或檔案夾的配置方法,可以參考官網文檔的說明

4. Samba使用者管理
Samba的使用者管理與linux系統的使用者管理有一定依賴,即Samba的使用者必須也是Linux系統添加的使用者,但密碼可以獨立。
添加新使用者的典型步驟是:
1) 以linux root帳號執行adduser命令添加linux系統使用者和登入linux系統的密碼(該使用者名稱也是登入samba的使用者名稱)
2) 用smbapasswd工具為上步添加的新使用者佈建登入samba的密碼
3) 在smb.conf正確的section中,設定共用目錄的有效使用者,典型配置如下

[video-upload]   comment = Shared Director for 3rd-party videos   path = /home/slvher/cooperate-uploads   valid users = slvher   public = no   writable = yes   printable = no   hide dot files = yes   create mask = 0766
更新完設定檔smb.conf後,重啟smbd和nmbd進程,此時,我們就可以在windows客戶機通過登入samba伺服器來共用檔案了

5. Windows客戶機訪問Samba服務
在前述步驟均正確執行的前提下,可以通過在windows機器運行命令列輸入\\samba-svr-ip\slvher並在彈出的對話方塊中輸入使用者名稱/密碼來登入samba伺服器。
登入成功後,會開啟一個共用資料夾,用滑鼠拖拽檔案即可觸發samba自動同步

【參考資料】
1. Samba官網
2. Installing Samba on a Unix System
3. online-doc: using_samba: ch09. Users and Security

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.