Ubuntu安裝Samba文件共享服務器(NAS)

終於有點時間來解決下家中NAS需求了。通常自制NAS,只有選Samba。速度比FTP快,便利性比Windows文件夾共享好,設置多等等。git

▶參考:samba簡介github

安裝Samba

$ sudo apt-get update
$ sudo apt-get install samba samba-common-bin

核心步驟:配置Samba

Samba惟一設置的入口就算一個 smb.conf文件,全部變化都依次而來,出了問題也只須要在這裏找緣由。

配置以前先說明,
這裏我不打算只共享一個文件夾,而是共享樹莓派鏈接上的全部外置硬盤。
樹莓派的外置硬盤默認掛載在了/media/pi目錄下,每一個硬盤掛載爲/media/pi/drive1/media/pi/drive2等。
因此不用一個一個共享,直接把/media/pi共享就OK了。
下面配置還會限制:只有pi這個用戶能夠訪問。shell

經常使用且確定沒問題的最簡單配置以下:vim

# 編輯Samba的配置文件
sudo vim /etc/samba/smb.conf

# 文件末尾添加這個共享文件夾的定義:
[NAS]
comment = NAS External drive
path = /media/pi
public = Yes
browseable = Yes
writeable = Yes
valid users=pi

其中:安全

  • valid users:只容許指定的用戶和用戶組訪問

設置Samba用戶名和密碼

這一步也相當重要,直接影響各設備的訪問。
注意,這個用戶必須是本機已經在group和user裏面都存在的用戶,且必須權限設置什麼的符合samba要求才行。不然會致使有些設備徹底沒法訪問這個文件夾。
以前試了本身groupadduseradd本地用戶後,又在samba裏smbpasswd -a添加用戶名密碼,結果Mac徹底訪問不了,Windows也是根據系統的不一樣有的能訪問有的不能訪問。
因此這裏推薦用樹莓派的默認用戶名pi服務器

# 輸入Samba用戶的訪問密碼
sudo smbpasswd -a pi

重啓Samba

# 推薦重啓方法(能夠看到自檢過程)
$ sudo /etc/init.d/samba restart

到這一步,若是沒出問題的話,就會顯示成功:
image網絡

按照以前的配置,如今你就能夠訪問Samba共享文件夾了。app

訪問方法

通常訪問方法以下:工具

  • Windows:直接打開桌面的網絡(網上鄰居)-> RaspberryPi(樹莓派的網絡名),而後就能夠看到樹莓派上全部共享的文件夾和設備了。
  • Mac: 稍微麻煩一點,在Finder中點擊菜單 -> Go -> Connect to server -> 輸入smb://IP地址,按照要求輸入本機或樹莓派的Samba用戶名密碼:

image

而後能夠看到,目錄中和本地目錄幾乎沒什麼區別:能看預覽,支持全部文件夾正常的快捷鍵,隨意拷貝粘貼,這是FTP遠不能比的。測試

image

將Samba的共享目錄映射到本地

Windows上,直接在文件夾裏點擊菜單->工具->映射網絡驅動器。而後選擇映射出來的驅動盤字母,點擊瀏覽,選擇網絡鄰居里的樹莓派,肯定完成。就會在本地的計算機裏顯示出映射磁盤了。

Mac上,通常在文件夾裏面經過Cmd+K鏈接服務器後打開共享文件夾後,系統就會自動把它掛載到/Volumes/你的共享文件夾名這裏。能夠直接經過命令行隨意訪問。而後即便桌面上的文件夾關閉後,也仍是能夠在命令行里正常訪問。

多用戶訪問Samba

咱們用Samba,就確定有多用戶需求。
可是多用戶問題恰是Samba最麻煩的地方,若是是像我這樣對Linux用戶權限不熟悉的話。

首先須要明瞭:
Samba的裏面添加的用戶,必須是Linux已經存在的用戶!
並且這個用戶必須有相應的權限,才行。

因此多用戶策略大概以下:

  • 建立Linux本機用戶組,並賦予相應權限
  • 建立Linux本機的用戶,並賦予相應權限
  • 建立共享文件夾,修改文件夾權限,修改文件夾全部者,改成對應的Samba用戶或用戶組
  • 建立與Linux用戶對應的Samba用戶,並建立密碼
  • 在Samba配置文件裏面,聲明有權訪問共享文件夾的用戶或用戶組
注意:掛載的NTFS磁盤,是不支持unix體系的group和user的,因此裏面的文件默認全部者和所屬組都是root。要解決這個,須要在mount掛載時就指定全部者,可是也不能分別指定裏面某個文件夾或目錄的全部者。

Samba調試

Samba的自檢程序testparm

自動測試,並顯示Samba全部的共享和定義:

$ testparm

image

列出當前全部已註冊的Samba用戶

$ sudo pdbedit -L

image

使用smbclient測試

smbclinet是命令行客戶端,須要下載安裝使用:

# 安裝
$ sudo apt-get install smbclient

# 鏈接Samba服務器
$ smbclient //192.168.1.111/share -U sambaUser01

$ smb: ls

若是鏈接成功,就會進入smb的交互shell,而後輸入ls,成功列出目錄,則鏈接徹底成功。
這是經常使用的最方便的測試方法,若是有任何一點不成功,這個鏈接命令都沒法執行。
只要這裏可以正常訪問,那麼其它地方都沒有問題。

常見問題

Mac上能用guest訪問卻不能用設置了的用戶訪問

這個是你的Samba用戶設置出了問題。
有多是Samba中定義的用戶,在本機中權限不夠。
解決方法就是:

  • 直接用樹莓派的原生用戶pi,或
  • 仔細研究新建立的用戶權限,添加好了再到Samba配置中設置

原生用戶pi之外的用戶都不能訪問外置磁盤

嘗試過多用戶方案,只要不是外置磁盤,都能正常訪問、讀寫。
可是插的U盤,外置移動硬盤,除了pi用戶之外全都只能進入,不能寫入。
就算把新建用戶升級到超級用戶,
就算把文件目錄的全部者改成新建的用戶,
也仍是同樣的。

消除來自Mac的.DS_Store文件安全隱患

Mac上訪問遠程文件夾會留下.DS_Store文件,其中包含太多信息這樣很不安全。
因此咱們要在Mac上設置,在訪問遠程文件夾時不留下這個文件:

$ defaults write com.apple.desktopservices DSDontWriteNetworkStores true

可是以上方法不是徹底生效,目前MacOS 10.12以上都不必定能生效。

訪問外置硬盤Permission Denied

這個也是用戶權限問題,配置原生pi用戶就沒問題了。

相關文章
相關標籤/搜索