终于有点时间来解决下家中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
用户就没问题了。