終於有點時間來解決下家中NAS需求了。通常自制NAS,只有選Samba。速度比FTP快,便利性比Windows文件夾共享好,設置多等等。git
▶參考:samba簡介github
$ sudo apt-get update $ sudo apt-get install samba samba-common-bin
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
:只容許指定的用戶和用戶組訪問這一步也相當重要,直接影響各設備的訪問。
注意,這個用戶必須是本機已經在group和user裏面都存在的用戶,且必須權限設置什麼的符合samba要求才行。不然會致使有些設備徹底沒法訪問這個文件夾。
以前試了本身groupadd
和useradd
本地用戶後,又在samba裏smbpasswd -a
添加用戶名密碼,結果Mac徹底訪問不了,Windows也是根據系統的不一樣有的能訪問有的不能訪問。
因此這裏推薦用樹莓派的默認用戶名pi
:服務器
# 輸入Samba用戶的訪問密碼 sudo smbpasswd -a pi
# 推薦重啓方法(能夠看到自檢過程) $ sudo /etc/init.d/samba restart
到這一步,若是沒出問題的話,就會顯示成功:網絡
按照以前的配置,如今你就能夠訪問Samba共享文件夾了。app
通常訪問方法以下:工具
smb://IP地址
,按照要求輸入本機或樹莓派的Samba用戶名密碼:而後能夠看到,目錄中和本地目錄幾乎沒什麼區別:能看預覽,支持全部文件夾正常的快捷鍵,隨意拷貝粘貼,這是FTP遠不能比的。測試
Windows上,直接在文件夾裏點擊菜單->工具->映射網絡驅動器。而後選擇映射出來的驅動盤字母,點擊瀏覽,選擇網絡鄰居里的樹莓派,肯定完成。就會在本地的計算機裏顯示出映射磁盤了。
Mac上,通常在文件夾裏面經過Cmd+K
鏈接服務器後打開共享文件夾後,系統就會自動把它掛載到/Volumes/你的共享文件夾名
這裏。能夠直接經過命令行隨意訪問。而後即便桌面上的文件夾關閉後,也仍是能夠在命令行里正常訪問。
咱們用Samba,就確定有多用戶需求。
可是多用戶問題恰是Samba最麻煩的地方,若是是像我這樣對Linux用戶權限不熟悉的話。
首先須要明瞭:
Samba的裏面添加的用戶,必須是Linux已經存在的用戶!
並且這個用戶必須有相應的權限,才行。
因此多用戶策略大概以下:
注意:掛載的NTFS磁盤,是不支持unix體系的group和user的,因此裏面的文件默認全部者和所屬組都是root。要解決這個,須要在mount掛載時就指定全部者,可是也不能分別指定裏面某個文件夾或目錄的全部者。
testparm
自動測試,並顯示Samba全部的共享和定義:
$ testparm
$ sudo pdbedit -L
smbclinet是命令行客戶端,須要下載安裝使用:
# 安裝 $ sudo apt-get install smbclient # 鏈接Samba服務器 $ smbclient //192.168.1.111/share -U sambaUser01 $ smb: ls
若是鏈接成功,就會進入smb的交互shell,而後輸入ls,成功列出目錄,則鏈接徹底成功。
這是經常使用的最方便的測試方法,若是有任何一點不成功,這個鏈接命令都沒法執行。
只要這裏可以正常訪問,那麼其它地方都沒有問題。
這個是你的Samba用戶設置出了問題。
有多是Samba中定義的用戶,在本機中權限不夠。
解決方法就是:
pi
,或pi
之外的用戶都不能訪問外置磁盤嘗試過多用戶方案,只要不是外置磁盤,都能正常訪問、讀寫。
可是插的U盤,外置移動硬盤,除了pi
用戶之外全都只能進入,不能寫入。
就算把新建用戶升級到超級用戶,
就算把文件目錄的全部者改成新建的用戶,
也仍是同樣的。
Mac上訪問遠程文件夾會留下.DS_Store
文件,其中包含太多信息這樣很不安全。
因此咱們要在Mac上設置,在訪問遠程文件夾時不留下這個文件:
$ defaults write com.apple.desktopservices DSDontWriteNetworkStores true
可是以上方法不是徹底生效,目前MacOS 10.12以上都不必定能生效。
這個也是用戶權限問題,配置原生pi
用戶就沒問題了。