Linux7.4成家记-共享Samba服务器搭建(一)

背景:又到了几年一次的设备更新时间了,这次淘汰下了Mac mini,一个小主机,虽然跑一些性能的应用比较吃力,但弃之不用还是比较浪费,灵机一动,何不把它改造成一个家庭的服务器托管中心呢,重新安装了Centos 7.4的系统,接下来就是各种折腾了。

一、安装Samba服务

什么是Samba服务?简单来说就是类似于Windows上的网上邻居,通过它可以实现多种设备访问Linux系统共享的资源,Samba的安装非常简单,只需一个命令即可。

yum -y install samba samba-client samba-common

Samba服务安装后,会生成配置文件目录 /etc/samba,其中/etc/samba/smb.conf是它的核心配置文件,/usr/lib/systemd/system/smb.service是它的启动/关闭文件。

二、Samba服务的组成与使用

Samba由两个服务组成,一是smb,另一个由是nmb。

  • smb服务是Samba的核心启动服务,只有smb服务启动,才能实现文件的共享。
  • nmb服务是负责 解析用的,类似于dns的功能,它可以把LINUX系统共享的工作组名与其IP对应起来,如果nmb服务没有运行,就只能通过IP地址来访问了。

Samba服务安装好后,就可以通过以下的命令进行启动服务了:

systemctl start smb

这个命令执行后没有任何返回结果,如果想来检查smb服务是否正常运行,可以通过下面的命令进行检查:

ps -ef | grep smbd
#以下是返回结果
root     16655     1  0 09:51 ?        00:00:00 /usr/sbin/smbd --foreground --no-process-group
root     16657 16655  0 09:51 ?        00:00:00 /usr/sbin/smbd --foreground --no-process-group
root     16658 16655  0 09:51 ?        00:00:00 /usr/sbin/smbd --foreground --no-process-group
root     16659 16655  0 09:51 ?        00:00:00 /usr/sbin/smbd --foreground --no-process-group
root     16924 12084  0 09:52 pts/1    00:00:00 grep --color=auto smbd

三、Samba服务核心配置文件smb.conf

smb.conf是Samba服务最重要的配置文件,里面有很多选项和内容,通过vim命令查看里面的内容,可以看到是这样的:

# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]
        workgroup = SAMBA
        security = user

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw

[homes]
        comment = Home Directories
        valid users = %S, %D%w%S
        browseable = No
        read only = No
        inherit acls = Yes

[printers]
        comment = All Printers
        path = /var/tmp
        printable = Yes
        create mask = 0600
        browseable = No

[print$]
        comment = Printer Drivers
        path = /var/lib/samba/drivers
        write list = @printadmin root

在定制属于自己的Samba服务器之前,先来看一下这个配置文件中有哪些内容?

  • [global] 表示以下 的内容为全局配置,是必选项。
  • workgroup用来定义工作组,也就是Windows中的工作组的概念。
  • passdb backend就是用户后台的意思。目前有三种后台:smbpasswd、tdbsam和ldapsam,默认值为tdbsam,表示使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb用户数据库可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。
  • printing 设置Samba共享打印机的类型,建议默认。
  • load printers 设置是否在启动Samba时就共享打印机。
  • cups options 打印机的选项设置,很复杂,就不说明了,有兴趣的可以自行百度。
  • homes 用来设置在Windows中显示出来的共享目录的名称。
  • comment 对于共享目录的描述。
  • path 用来指定共享目录的路径,是必选项。
  • valid users 设置允许访问该共享的用户,可以直接写用户名,如果需要设置用户组的话,可以在组名前加上@即可,各用户或者组名之间使用逗号隔开。
  • browseable 取值为yes/no,用来指定该共享是否可以被浏览。
  • read only 取值为yes/no,用来指定此共享是否只读。
  • inherit acls 取值为yes/no,设置是否从父目录中继承选项设置。
  • printable 取值为yes/no,如果设置为yes,则客户端可以将打印任务提交至打印池。
  • create mask 设置对新创建文件的权限,如0600就表示为对创建者是可读可写,对其他用户禁止访问。
  • write list 用来设置访问此目录的读写权限用户列表,如write list = root,@students

除了示例文件中的参数项外,Samba还提供了更多的参数项目,感兴趣的同学可以通过网文具体细节可以查看网文《smb.conf文件详细介绍》来自行学习。

四、创建可匿名访问的共享SAMBA服务

话不多说,下面就开始创建属于自己的Samba服务吧!先来创建一个共享的目录,即可以给所有人进行访问。

1、修改配置文件

首先将原本的配置文件进行备份,这是一个好习惯,Linux服务大多都会有自带的配置文件,在对此文件进行修改时,应养成即时备份的习惯,我习惯使用如下命令进行文件备份。

cp -a smb.conf smb.conf.bak

备份完成后,使用vim编辑器打开smb.conf配置文件,保留[global]区域的内容(但需增加匿名访问内容),其他的删除,并加上如下的共享目录,最终的文件内容如下:

[global]
        workgroup = SAMBA
        security = user
        map to guest = Bad User
        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw

[share]
        comment = 家庭共享文件目录
        path = /share_files
        writeable = yes
        browseable = yes
        log file = /share_files/access.log
        public = yes

可以看到多了几个新的选项:

  • log file 指定访问此目录的日志文件。
  • guest ok 指定是否允许匿名用户访问。

保存此配置文件,并退出!

2、创建共享目录

在配置文件中,设置了共享目录为/share_files,设置的日志文件为access.log,下面就建立这两个目录/文件。

mkdir /share_files
touch /share_files/access.log

除了创建这两个目录/文件外,还需要对它们设置文件访问权限,所以只需再补上下面的命令:

chmod -R 777 /share_files

3、重启smb服务

完成上两步操作后,便可以执行如下命令重启smb服务了。

systemctl restart smb.service

4、测试smb服务

找一台Windows电脑,然后在资源管理器(或计算机)地址栏中输入 以下的地址:\\192.168.3.222\,其中的IP地址是Samba服务器的地址,建议访问前先确保Windows与Linux机器的连通,可以使用ping命令简单测试。

如果发现没有成功访问Samba服务,可能是由于防火墙的原因,可以关闭防火墙,为了一劳永逸,我就直接把防火墙给关闭了,也可以将Samba服务添加至防火墙的例外中,这里就不演示了,后面再写一篇关于防火墙的内容。

systemctl stop firewalld
systemctl disable firewalld

如果您使用的是Windows 10系统,由于组策略的原因,在使用匿名访问的时候也会报错,如下图所示:

图示 Windows 10组策略影响

关闭组策略的相应项目过程操作如下,打开组策略窗口,并找到相应项目

图示 启用来宾组策略修改(一)
图示 启用来宾组策略修改(二)

启用完“启用不安全的来宾登录”项目后,再次利用地址访问,便可以看到共享目录share了,如下图所示:

图示 成功访问共享目录

五、使用SAMBA服务

1、在电脑中访问SAMBA服务

打开Windows资源管理器,选择添加一个网络位置,操作的过程界面如下列所示:

图示 添加网络位置(一)
图示 添加网络位置(二)
图示 添加网络位置(三)
图示 添加网络位置(四)
图示 添加网络位置(五)

点击完成按钮完成网络位置的添加,回到资源管理器主界面,可以发现在网络位置区域出现了家庭共享文件系统图标,如下图所示:

图示 资源管理器网络位置

进入到此位置中,就如同使用本地盘符一样,这里我们上传一个电影看一下效果。

图示 上传效果测试

可以发现上传的速度还是非常可观的!!!我们也可以在服务器上外接硬盘用来扩充容量,让废弃的电脑变成一个家庭文件服务器。

2、在移动设备中访问SAMBA服务

作为一个深度的电影爱好者,拿着手机观看下载的视频是一件非常享受的事,有了SAMBA服务器,将影片通过迅雷或者百度云下载至SAMBA服务器上,然后可以使用多个终端访问观看,可以避免许多问题。

接下来以iphone为例,演示如何使用APP连接并管理SAMBA服务器的资源。

这里用到的APP是FE文件管理器,是一个免费的应用,也没有令人生厌的弹出广告,下载完打开后的界面是这样的。

图示 FE文件管理器主界面

点击右上角的“+”号,添加连接服务,打开连接服务的列表。

图示 FE文件管理器连接服务列表

选择“Linux”图标,新建至Linux服务器的连接,系统会自动识别本网络中的Linux邻居,如图所示:

图示 FE文件管理器连接创建界面

点击Linux服务器图标,弹出登录界面,此处选择“访客”项目。

图示 FE文件管理器SAMBA登录界面
图示 FE文件管理器SAMBA文件列表

成功登录至SAMBA服务后,找到在前一项目中上传的视频文件,便可以观看影片了,亲测速度非常流畅。

图示 影片播放界面

六、后记

Linux对于多数人来说是一个比较专业的技术,但如果仅仅是为了提高生活及工作的效率,其实有很多种玩法,笔者并不是一个专业的系统运维方面的专家,对Linux也是一知半解,只是尝试将Linux融入工作和生活,提高工作的效率和生活的乐趣,一起共勉!

你可能感兴趣的:(Linux7.4成家记-共享Samba服务器搭建(一))