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用户就没问题了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280529.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

刚毕业的ERP实施顾问做甲方

我刚毕业进入了一家小公司做ERP实施顾问,是一个台湾的ERP软件,就简单培训了一天,第二天就进入一家客户公司解决问题,软件都还没有熟悉呢,更别说业务流程了,一天下来,人家员工问一个问题我记下来…

django21:admin后台管理\media配置\图片防盗链\暴露后端资源\路由分发\时间分类

admin后台管理 创建超级用户 createsuperuser 1.到应用下的admin.py注册模型表 from django.contrib import admin from blog import models # Register your models here.admin.site.register(models.UserInfo) admin.site.register(models.Article) admin.site.register(m…

Flask博客开发——Tinymce编辑器

之前Flask博客的文本编辑器比较简陋,这里为博客添加个优雅易用的Tinymce文本编辑器。 github见:https://github.com/ikheu/my_flasky 1 项目中添加Tinymce 下载好Tinymce包以及语言包,并添加到项目中。添加到项目的方法,参考了这篇…

Go开发Struct转换成map两种方式比较

最近做Go开发的时候接触到了一个新的orm第三方框架gorose,在使用的过程中,发现没有类似beego进行直接对struct结构进行操作的方法,有部分API是通过map进行数据库相关操作,那么就需要我们把struct转化成map,下面是是我尝…

Hello, Raspberry Pi.

1.概要最近在研究自动升级开源项目的时候偶然想到IoT领域的自动升级,突然想起2016年买的树莓派(Raspberry Pi)。那就分享一下如何入门树莓派的教程,我当时一共买了两块一款是Raspberry Pi 3b(2016年价格259元去年以抽奖…

supersu_SuperSU已从Play商店中删除,这是替代使用的方法

supersuSuperSU has long been a staple in the rooted Android community. For years, the process for getting a rooted handset was: unlock the bootloader, flash a custom recovery, install SuperSU. That’s just how it was. 长期以来,SuperSU一直是扎根于…

Oracle 11g DRCP连接方式——基本原理

学习Oracle是一个复杂、繁琐的过程。在浩如烟海的Oracle官方资料、新特性、MOS资料和各种Internal知识面前,我们总是觉得力不从心、不知所措。但是,这往往也就是我们不断坚持、积累和追寻的乐趣。  在Oracle 11g中,提出了突破传统专用/共享…

django项目开发1:搭建虚拟环境

需求 不同项目依赖不同模块版本,不能共用一套环境,虚拟环境。在系统的python环境安装 安装 pip3 install virtualenv pip3 install virtualenvwrapper-win环境变量 # 配置环境变量: # 控制面板 > 系统和安全 > 系统 > 高级系统设…

IPC之——消息队列

消息队列作用&#xff1a; 可以用于两个没有联系的进程间通信&#xff0c;创建一个消息队列类似于打开了一个文件&#xff0c;两个不同的进程都可以进行操作 消息队列之函数介绍&#xff1a; 头文件&#xff1a;<sys/type.h> <sys/ipc.h> <sys/msg.h> 1.msgg…

【招聘(上海)】To B数字化营销公司-市场易,直招.NET后端研发工程师

【招聘背景】公司&#xff1a;上海光潾网络科技有限公司成立于2016年&#xff0c;系上海市高新技术企业&#xff0c;2021年获数千万A轮融资项目&#xff1a;公司自主研发营销自动化SaaS平台- 市场易 (Custouch) &#xff0c;通过数字手段为B2B营销赋能&#xff0c;现服务100多家…

div 包裹_如何查看到达之前收到的包裹和邮件

div 包裹The United States Postal Service, UPS, and FedEx all offer online dashboards where you can see exactly what packages (and letters, in the case of the US Postal Service) are scheduled to arrive at your address. They’ll even email and send you text …

py文件的运行

安装过程及配置 安装过程准备&#xff1a; 下载好Python的安装程序后&#xff0c;开始安装&#xff0c;在进入安装界面后一定确保勾选将Python加入到系统环境变量的路径里。如图所示&#xff1a; 2如果没有选取&#xff0c;那么按照下面的步骤进行操作。在桌面上用鼠标右键点击…

加州大学信息科学院长:数据科学课程不只是工程师才修的

一般在考虑围绕数据科学的基础教育时&#xff0c;传统上的重点仍停留在计算和工程等硬性技能上。不过&#xff0c;在周四于纽约市召开的GigaOm结构数据&#xff08;Structure Data&#xff09;会议上&#xff0c;美国加州大学伯克利分校信息科学院长AnnaLee Saxenian教授表示&a…

查看安装软件/Select-object/Where-Object xxx -like

查看已安装软件 1.通过注册列表查看 $Path(HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*,HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*,HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*,HKCU:\SOFTWARE\WOW6432…

网络编程基础(一)

一.楔子 你现在已经学会了写python代码&#xff0c;假如你写了两个python文件a.py和b.py&#xff0c;分别去运行&#xff0c;你就会发现&#xff0c;这两个python的文件分别运行的很好。但是如果这两个程序之间想要传递一个数据&#xff0c;你要怎么做呢&#xff1f; 这个问题以…

dotnet-exec 让 C# 程序更简单

dotnet-exec 让 C# 程序更简单Introdotnet-exec是一个可以执行 C# 程序而不需要项目文件的命令行工具&#xff0c;并且你可以指定自定义的入口方法不仅仅是Main方法在 python/NodeJs 里&#xff0c;可以使用python xx.py/node xx.js来运行代码&#xff0c;在 C# 中一般是需要项…

office数据集dslr_如何将照片从DSLR无线传输到智能手机

office数据集dslrYou’ve got a great digital camera. You’ve got all your social media apps on your phone. Wouldn’t it be nice if you could snap a beautiful shot with your DSLR and shuttle it right over to your phone to throw up on Facebook or Instagram? …

文件管理、命令别名和glob

一、复制命令:cp src dest1.如果scr是文件a.如果dest不存在&#xff0c;则新建dest并将src的内容填充到dest里b.如果dest存在&#xff0c;则会用src里的内容覆盖dest里的内容&#xff0c;即覆盖dest2.如果src是目录a.如果dest不存在&#xff0c;则新建dest,然后把src下的内容复…

大数据汇聚全球精英

投资10亿美元&#xff0c;选址贵安新区&#xff0c;建设iCloud服务的中国主数据中心。7月12日苹果公司的这一举动再次将全球目光聚集在贵州。 “贵州有令人瞩目的增长&#xff0c;是中国新数据中心领域最具发展潜力的地点之一。”苹果公司环境、政策和社会事务副总裁丽萨杰克逊…

django版本区别/与版本匹配

一、区别 路由层 1.django 1.x路由层使用url方法 django 2.x和3.x版本使用path方法 url() 第一个参数支持正则 path()第一个参数是不支持正则的 可以使用 re_path替代url() from django.urls import re_path # django2.0中的re_path #不建议导入url,不能区分版本 #from djang…