背景:又到了几年一次的设备更新时间了,这次淘汰下了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系统,由于组策略的原因,在使用匿名访问的时候也会报错,如下图所示:
关闭组策略的相应项目过程操作如下,打开组策略窗口,并找到相应项目
启用完“启用不安全的来宾登录”项目后,再次利用地址访问,便可以看到共享目录share
了,如下图所示:
五、使用SAMBA服务
1、在电脑中访问SAMBA服务
打开Windows资源管理器,选择添加一个网络位置
,操作的过程界面如下列所示:
点击完成
按钮完成网络位置的添加,回到资源管理器主界面,可以发现在网络位置
区域出现了家庭共享文件系统
图标,如下图所示:
进入到此位置中,就如同使用本地盘符一样,这里我们上传一个电影看一下效果。
可以发现上传的速度还是非常可观的!!!我们也可以在服务器上外接硬盘用来扩充容量,让废弃的电脑变成一个家庭文件服务器。
2、在移动设备中访问SAMBA服务
作为一个深度的电影爱好者,拿着手机观看下载的视频是一件非常享受的事,有了SAMBA服务器,将影片通过迅雷或者百度云下载至SAMBA服务器上,然后可以使用多个终端访问观看,可以避免许多问题。
接下来以iphone为例,演示如何使用APP连接并管理SAMBA服务器的资源。
这里用到的APP是FE文件管理器
,是一个免费的应用,也没有令人生厌的弹出广告,下载完打开后的界面是这样的。
点击右上角的“+”号,添加连接服务,打开连接服务的列表。
选择“Linux”图标,新建至Linux服务器的连接,系统会自动识别本网络中的Linux邻居,如图所示:
点击Linux服务器图标,弹出登录界面,此处选择“访客”项目。
成功登录至SAMBA服务后,找到在前一项目中上传的视频文件,便可以观看影片了,亲测速度非常流畅。
六、后记
Linux对于多数人来说是一个比较专业的技术,但如果仅仅是为了提高生活及工作的效率,其实有很多种玩法,笔者并不是一个专业的系统运维方面的专家,对Linux也是一知半解,只是尝试将Linux融入工作和生活,提高工作的效率和生活的乐趣,一起共勉!