上一次提到了NFS,挺好用的,我拿来给我的OVH官方小鸡挂KS的大硬盘存储,官方的存储贼贵,我放弃。因为是一个机房,所以效果还不错。那么问题来了,NFS适合于Linux系统之间共享存储,那么如果Windows掺和进来了,我们又该选择什么呢?当然是选择原谅它啊,好吧,不扯淡,我们需要的是Samba,很多人可能对这个不知道是啥,但是玩NAS之类的同学们肯定很熟悉。不过你不知道Samba你肯定知道网上邻居吧,当初在XP时代很多人在局域网内共享文件靠得就是这个了,而网上邻居使用的是SMB协议也称作CIFS协议,Samba服务是SMB的一个开源实现。

所以,正好符合我们Windows和Linux两手抓的需求。

一.安装配置

因为不需要自己编译,所以安装配置放一起说了就,另外,这部分就说Linux的,Windows下怎么共享我就不说了……挂载部分会提到Linux怎么挂载Windows的

samba是提供服务的,后面两个是作为客户端的,有yum的就是方便……走完进度就装好了,下面是配置

首先我建议是关闭selinux,防止出问题

当然如果你不想关,那么也行,运行如下命令改下权限

selinux这玩意说是为了安全……不过一般人还是真的玩不懂,头疼

需要了解更多的可以使用man 5 smb.conf来查看文档

基础了解了这个我们就能添加自定义共享了

在smb.conf 最后加上来创建一个test_share的共享文件夹

如果不清楚smb.conf是否有改错的地方,可以使用如下命令校验

另外介绍一下上面的那个安全等级
1.share:所有人都可以访问这台samba服务器(不需要输入用户名和密码)
2.user:需要输入有效的用户名和密码才能访问samba服务器(身份验证由samba服务器负责)
3.server:与user相同,只是将身份验证交由指定的另一台samba服务器负责
4.domain:将身份验证交由域控制器负责
5.ads:将身份验证交由域控制器负责(比domain更为安全一点)

下面是我觉得Samba最二的地方……

Linux中/etc/passwd里的用户和Samba里的用户几乎没啥关系,硬说有的话,那就是:Samba的所有用户都必须是系统里已存在的用户。

我个人理解是因为有文件归属权的问题,所以Samba的用户必须是系统用户,但是,默认Samba是不吃系统的用户的,所以必须额外添加用户,这就是真的很蛋疼啊,有种脱裤子放屁的感觉

因为有着脱裤子放屁的设定,所以如果我们需要的用户默认不是系统用户的话

这样才行,然后才能在Samba中添加用户,那么怎么添加呢?

请注意,更蛋疼的地方来了……

在/etc/samba/smb.conf中有一项参数passdb backend,就是用户后台的意思。目前有三种后台:smbpasswd、tdbsam和ldapsam

①passdb backend = smbpasswd

(这边如果需要更改smbpasswd存储位置,可以passdb backend = smbpasswd:/etc/samba/smbpasswd  这样,记得需要完整路径)

该方式是使用smb自己的工具smbpasswd来给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件

我们可以使用cat /etc/passwd|mksmbpasswd.sh >> /etc/samba/smbpasswd 来直接将系统内所有用户导入添加为Samba用户,注意!需要另设密码

②passdb backend = tdbsam(这是默认的

该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb 用户数据库可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户并由其pdbedit管 理。

用户的建立可以类似smbpasswd单独添加,也可以指定smbpasswd文件来直接用pdbedit将文件里的用户导入数据库。注意!这个操作是覆盖性的

③passdb backend = smbpasswd

该方式则是基于LDAP的账户管理方式来验证用户。首先要建立LDAP服务,然后设置“passdb backend = ldapsam:ldap://LDAP Server”。
一般人也用不到,主要是公司内可能有这种需求

修改完用户需要重启smb服务

二挂载使用

真的是一番艰辛,终于配置完了,然后我们就能挂载了

①Windows挂载

Win下挂载有多种方法,通常的是映射为本地分区

然后还有使用net use命令啥的,不过有图形界面的当然最方便了,就懒得说了

②Linux挂载

#这个类似一个命令行

#这个就是实际挂载了

如果需要开机挂载,可以将上面那个写入/etc/rc.local中,当然也可以使用下面的方法

在/etc/fstab中加入

这样就行了

PS.最后,是最需要注意的一点,由于前阵子Samba漏洞横行,导致许多运营商以及机房都对Samba相关端口进行了封堵,所以建议在局域网内使用,并注意更新软件包


Senraの小窝原创文章,转载请注明来自:自建云盘系列(番外篇)——Samba (信息服务块,Win&Linux共享存储)