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

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

▶參考:samba簡介

安裝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這個用戶可以訪問。

常用且肯定沒問題的最簡單配置如下:

# 編輯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共享文件夾了。

訪問方法

一般訪問方法如下:

  • 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用戶就沒問題了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章