ubuntu14.04 下samba 共享設置

工作一年多,對於編譯和碼代碼用的這臺ubuntu的設置越來越不喜歡。因爲之前從來沒有在linux上做過開發,諸如分區和很多其他的配置,就比如這個samba的配置和本地搭建的一些服務器的配置,有很多不合理的地方。當初啥都不懂,都是網上各種找教程,一個不行就另一個,總有一個成功的。實際配置起來之後,用得有不順手的地方也都忍了。最近感覺不行,作爲一個程序猿,即使眼下只會搬磚,也應該要不斷地跳出自己的舒適圈,尋求個人工作效率的提升和對新事物的理解,如是日積月累,才不至於終日搬磚。

同時我也有一直有寫博客的想法,因爲我覺得即使很多東西在網上都可以找到,後人寫得也許都只是重複,但是隻是看到,只是用過,未經自己整理和真正理解的東西終歸不是自己的,而且我們應該在前人的基礎上越做越好。想法雖然很好,但是卻一直懶得動手,現在藉着這次,從這一篇簡單的內容入手,作爲我個人開始寫博客的里程碑,請原諒我的羅嗦,因爲這個起點,我總是希望紀念一下。

進入正題,重裝14.04的系統後,自然仍然要從那臺windows的工作pc上訪問編譯用的ubuntu。這裏我仍然沿用了之前使用的samba,不過我沒有了解過其他windows上訪問linux文件系統的手段,以後應該會補上。但是samba無疑很強大的,但也是很複雜的。不過我的配置一開始就遇到問題,花了大半天找配置文件的錯誤,最後重裝了samba和幾個庫搞定了,汗顏。但我還是把整個過程說明一下,因爲我自己查資料時,網上的很多都是隻有一條龍的配置流程,對於每一步爲什麼這麼配置,這麼配置有什麼影響,是否有其他的配置方法都沒有說明。通過我對配置項的瞭解,我覺得很有必要說明一下,尤其對於新手來說,可以省去很多的麻煩。

配置步驟

  1. 安裝samba

    sudo apt-get install samba system-config-samba

    其中system-config-samba是samba配置文件的圖形化配置工具,你可以自由選擇是否安裝。

  2. 選擇共享目錄並設置配置,設置配置我知道的主要有三種方法(只是後兩種方法也都是通過一個圖形化的方式更改smb.conf這個配置文件而已)

    • 直接修改配置文件 /etc/samba/smb.conf ,修改前最好備份下

      • 在配置文件中參考如下的形式添加一個[section],下面再接一系列的參數指定section的性質,更詳細的配置我會在下面描述了用戶的概念之後再做一些具體的說明。
        [wolkdir]
        path = /home/cwghdw/share 此處爲這個section在linux上對應的文件夾的路徑
        browseable = yes 決定是否可讀
        public = yes 決定是否可以允許所有訪問用戶登陸
        writable = yes 決定是否允許匿名訪問的用戶寫入
      • 在smb.conf的默認配置中,就有 [homes]的section可供參考,可以把home目錄和所有用戶目錄都共享出來,對於在局域網內辦公的samba配置是非常合適的選擇,具體的可讀寫的能力都是可以進一步配置的。
      • 另外默認配置中初始就有一些printers字段,這些可能是和共享打印機的配置相關,我也不清楚,總之samba的功能是非常強大的,因爲 man smb.conf 可以看到7600行,orz。
    • 在文件系統中修改文件夾的share配置

      • 我個人是安裝了kde的桌面環境,因爲感覺封裝得比較強大。安裝了samba之後,kde的資源管理器中可以直接在文件夾的property中設置目錄是否進行share,提供了與上述smb.conf中對應的允許他人創建和刪除該目錄下文件的選項(writable)以及是否允許訪客登陸的選項(public)
      • 某一個用戶目錄下的目錄設置是ok的,但是對home目錄貌似不生效。不清楚是否是我設置的原因
      • unity桌面下應該也會有對應的配置
    • 使用圖形化參數配置工具samba進行配置

      • 但注意這個裏面可能存在錯誤配置,比如security=share,對於我當前ubuntu 14.04系統通過apt-get 方式安裝的samba是無效的,通過testparm測試經過上述配置後生成的smb.conf會報錯,故而重新再啓動samba這個圖形化配置工具的時候就失敗了,這還讓我鬱悶了好一陣。
  3. 創建一個賬戶

    很多的samba配置的介紹忽略了這一步,因爲如果設置smb.conf中的public = yes,則不需要這一步,但是我個人建議設置,因爲以guest的方式登陸,則所有對linux文件系統裏的修改都會以other的身份進行操作,創建的目錄也都會是nobody:nogroup的形式。 設置後可以在section的配置中指定valid user。

    注意這裏創建的用戶必須是本地已經存在的用戶,對文件和目錄的操作的權限的判斷和寫入都會以登錄的用戶的身份來確定。是可寫還是,可讀,如果是原文件的owner,就會開放對應的權限。這對於配置局域網內的共享目錄實在是非常必要且方便的。具體配置如下(這裏貌似還有其他很多方法,我不一一列舉):

    • 在 /etc/samba/目錄下
      • sudo touch smbpasswd
      • sudo smbpasswd -a xxxxx (xxxxx可以是系統管理員用戶,也可以是當前系統裏的其他用戶)
      • 隨後是設置密碼,這個密碼不同於user賬戶的密碼,是專門用於對應user訪問samba共享目錄的。
  4. 重新啓動服務器,不過在linux下直接重新啓動samba貌似沒有效果。
    最好 sudo service smbd reload + sudo service nmbd reload 重啓這兩個主要服務。
    /etc/init.d/smbd restart 和/etc/init.d/nmbd restart 也一樣。

  5. 關於測試
    smbclient -L host 可以列出對應主機上所有的共享文件夾或者說網絡文件系統的服務。
    smbclient //localhost/{對應的section的名稱} 可以本地測試文件是否已經被共享出來,並可以執行samba提供的一系列命令
    section即在[]中的名稱。
    Windows下訪問
    \\ubuntu主機ip or 名稱\section名稱

其他說明

  • testparm
    • testparm是一個安裝samba後就默認安裝的工具,可以用於檢查smb.conf的語法格式是否正確
  • smb.conf的語法規則 —— section的配置
    • comment 顯示備註
    • writable = yes/no 決定是否可寫
    • Browseable = yes/no 決定是否可讀
    • valid user = 某個用戶名稱 ——推薦使用這種方式,創建和修改文件都會是對應用戶的用戶名。然後默認創建文件和目錄的權限是644,可以通過如下兩個配置項修改權限,通過samba訪問時,創建和修改會以如下權限進行:
      • create mask = 0755
      • directory mask = 0755
      • valid user = @允許某個組的成員訪問。
      • 注意這裏的用戶只能是linux當前的用戶,否則配置會報錯。通過smbpasswd -a cwghdw 的方式添加用戶cwghdw到smb。windows上就可以通過這個用戶名和密碼來訪問samba共享出來的文件夾。
    • public = yes 允許所有訪問用戶登錄
      • 會在testparm中以 guest ok的方式呈現。
  • windows 訪問時沒有權限使用網絡資源 的問題解決辦法
    • 網上有很多的說明是針對centOS的,說關閉selinux,貌似與ubuntu無關。
    • 個人處理方式如下,重裝下列package解決問題。 orz
      • sudo apt-get install –reinstall libsmbclient libsmbclient-dev libtevent-dev libtalloc2 samba
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章