linux(centos)下搭建samba服务器 -- 旨在与windows通信
0 前言
最近在学习linux,由于刚介入该系统不久,难免碰壁。通宵达旦,后为身体着想,暂且搁置。写下此文以备后患。
搭建该服务器的目的在于与windows(windows10)通信,为何要通信?小可有一台不常用的笔记本,该笔记本搭载了centos7操作系统,由于只想用作服务器,因此并未搭载gnome(linux下的桌面环境),仅仅使用服务器使用到的核心模块。因此问题来了,上网是个问题,诚然,使用有线网络(rj45网线)是可以得,但是作为笔记本,必须要使用无线网卡。方便我带走。为安装无线网卡驱动,碎需要从windows下传输无线网卡驱动包到该服务器下。小可不愿使用u盘做mount。原因在于未来经常发布项目。一劳永逸固然最好。
小可的水准处于小白阶段,希望有大神相助,提升水平。
一 系统版本
我在windows下使用putty(远程登陆linux工具),先看看linux的系统信息。

二 准备工具
samba , samba-client , samba-common
三 安装
我在centos中使用yum工具来安装所需软件包

这里会安装多个包,共三个,每个包之间使用空格隔开,他们需要的依赖关系yum会自动处理,不必担心。使用sudo来执行,养成好习惯。输入当前用户的密码就开始安装了,中途会停下来询问是否要安装,输入"y"后回车,安装自行执行。
四 安装包说明
我们安装了3个包,现在来简要说明一下他们。
samba:samba服务器软件。
samba-client:samba客户端软件,用于连接samba服务器之作用。
samba-common:samba库文件,通用工具。
五 samba配置文件配置
安装好samba之后,肯定需要配置。它的配置文件在cenotos7系统下位于如图所示的位置

也就是/etc/samba下面,/etc是配置文件的地方。我们要对其中的smb.conf文件做修改。首先备份smb.conf,以防止修改出现不可挽回的错误。
在当前目录下备份smb.conf

注意,这里我切换到了/etc/samba目录下,如果你不在此目录下,需要绝对路径名。我们备份为smb.conf.bak,然后去修改smb.conf配置文件。
使用vi工具或者vim工具打开该文件,我使用的是vim,如果你没有这个软件,yum下载即可。

为防干扰,全部删除里面的内容。vim工具删除全部指令操作:
进入命令模式,也就是不能输入的时候,如果你不确定请按esc键。观察左下方不是insert即可。输入:%d回车即可。删除完毕之后,我们添加如下内容(有些不是必须的,因为有默认值)。
在vim中按i进入编辑模式即可输入字符。同时左下方会显示insert,证明进入insert模式。输入以下内容:

输入完毕,按esc进入命令模式,输入:wq回车即可保存,同时会退出vim。
六 配置文件命令简要解释
现在来解释配置文件中出现的命令,如果你想要全面的了解它的配置请单独研究,这种东西不需要记住,仅仅是规则而已。我只解释出现的命令。
第一:配置文件中所有的#和;开头的行表示注释和忽略。他们所在的行不会被影响。
第二:文件中的[]中的内容是标签。我们可以理解为一个作用块。samba会根据这些标签下面的规则来应用。主配置文件由两部分构成。[global]和[home]。标签可以自定义。
[global]配置是与samba整体配置有关的规则,它的规则针对所有的共享配置。也就是说不管你定义了多少个标签,他们都会受到[global]影响
,所以说它是全局的。
[global]
workgroup = MYGROUP
解释:这个规则定义Samba Server要加入的组或者域环境
server string = Samba Server Version %v
解释:该规则设置Samba Server的描述,随便定义,%v是samba的版本号,%开头的在该配置文件中是默认的变量,他会在被samba解析的时候被展开。配置文件中有很多这种变量。
netbios name = MYSERVER
解释:设置Samba Server的netbios名称,默认为该服务器的DNS名称开头部分。
interfaces = lo enp2s0 192.168.1.17/24
解释:设置Samba Server监听的网卡,可以是网卡名称,也可以是该网卡的ip地址,不过千万别忘记了lo这个网卡,它是回环地址。我的网卡是enp2s0地址是192.168.1.17,我监听端口24.
hosts allow = 127. 192.168.1. 192.168.0
解释:设置被允许链接到Samba Server的客户端地址,多个地址由空格隔开。可以使用一个网段表示。我允许的就是网络号为1和0的所有机器都可以链接上来。后面不主机号不必填写。与这个命令对应的是hosts deny,顾名思义,deny否认拒绝之意。后面用法一致。
log file = /var/log/samba/log.%m
解释:Samba Server日志存放目录,%又出现了,这次你应该能明白了。%m表示主机名,有事件发生的时候,会记录到所在目录。
security = user
解释:设置连接的验证等级。推荐usesr,可选的有share,server,domain等。share表示匿名访问,不需要用户名密码验证,user需要用户名密码验证,server代理认证,会在指定的服务器上验证。domain使用主控域验证。
passdb backend = tdbsam
解释:后台用户的意思,它的值有这几个:smbpassd,tbdsam,ldapsam
smbpassd:使用samba自带工具也就是smbpassd给系统用户配置密码,客户端使用这个密码访问服务器。
tdbsam:该方式会使用数据库文件建立用户数据库。
load printers = no
解释:是否启动samba服务就共享打印机。如果你没有打印机就是no
[home] -- 共享设置
comment = smaba share directory
解释:共享描述,描述该共享。
path = /home/smb/share
解释:要共享的目录。
browseable = no/yes
解释:设置该目录是否可以浏览。
writable = no/yes
解释:该共享目录是否可写,这里设置可写不一定有效。
valid users = smb
解释:允许访问该目录的用户,该用户首先必须是linux下存在的用户。后面会介绍这部分。
invalid users = smb
解释:同理,不允许访问该目录的用户。
配置写好后,可以使用testparm -v验证语法是否正确。
七 设置账户
前面的配置文件中出现了用户的访问,这些用户首先必须是linux系统中存在的用户。切换到root下面添加一个用户:
添加一个用户,并且设置密码:


两次确认输入密码后用户将新建完毕,此时还需要在Samba中添加账户

这个命令用于在Samba下面添加一个linux账户。
设置完毕后,启动Samba服务,你可以使用

这个命令来启动服务,参数可以有restart重启,stop停止,status状态等。
八 windows中无法访问
此时你很可能依然无法访问服务器,原因在于防火墙,使用setenforce 0关闭防火墙即可。
九 windows连接
在windows下win键+r,弹出运行窗口,输入\\服务器ip,如\\192.168.1.17

确认,弹出登陆窗口,输入用smapassd添加的账户,输入密码即可:

登陆之后看到被共享的文件夹:

到此就完毕了,希望对各位有用。

浙公网安备 33010602011771号