一、前言

家庭服务器的首选功能就是配置文件共享功能,此功能由smb服务实现。

smb是微软自主研发的,用于在Windows间文件共享的协议。我们在Linux服务器上搭建此服务,可将服务器作为文件存储的介质,并实现网络之间的共享。

二、安装smb服务

yum install samba samba-client

安装samba服务端和控制端

三、配置smb服务

1、创建smb账号

smb账号和系统账号相互独立,但smb账号依赖于系统账号。

首先我们先来创建一个系统账号并创建密码

useradd hanran
passwd hanran
#输入密码并重复

然后我们使用smb账户管理工具添加一个smb账号

smbpasswd -a hanran
#输入密码并确认

需要注意的是,smb账号必须要建立在已有的系统账号中。否则就会报错。

image-20230304193936505.png

2、编辑配置文件

smb的配置文件在/etc/samba/smb.conf中

我们使用vim编辑器进行编辑

vim /etc/samba/smb.conf

我们新建一个代码块

[hanran_files]
    path = /home/hanran/files
    browseable = yes
    writable = yes
    valid users = hanran
    available = yes
    create mode = 0664
    directory mode = 0775

image-20230304194429790.png

其中中括号为共享的文件夹名称;

path为共享文件夹的路径;

browseable表示文件夹是否可见;

若不可见,则无法通过输入IP地址直接发现此共享文件夹;

writable从smb层控制账户的可写权限;

最后两行分别声明了创建的文件和文件夹的权限。

我们再编辑一下全局配置。

image-20230304194650065.png

其中passdb backend表示密码的数据库方式。

在centos的默认配置中使用tdbsam。

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

此方式不符合我个人的使用习惯,当Windows客户端登录时,此方式的操作用户为与服务器系统用户相同组的一个用户、我们将它改成smbpasswd,这样我们的操作用户就是系统用户本身了。

保存并退出。

systemctl enable smb
systemctl start smb

设置自启动并生效smb服务。

三、关闭selinux和防火墙

selinux是一种保护Linux系统的软件,它不允许网络上的计算机更改本服务器中的系统资源。

所以我们将selinux关闭。

1、查看selinux状态

image-20230304200308931.png

2、编辑selinux配置文件

image-20230304200553974.png

vim /etc/selinux/config

我们将selinux参数设置为0

这表示一切行为不会被阻止,但会被记录在日志中,即“permissive”模式。

3、配置centos防火墙
systemctl stop firewalld
systemctl disable firewalld

或者也可以放行相应端口

smb端口为137、138、139、445,我们将其放行。

firewall-cmd --zone=public --add-port=137/tcp --permanent
firewall-cmd --zone=public --add-port=138/tcp --permanent
firewall-cmd --zone=public --add-port=139/tcp --permanent
firewall-cmd --zone=public --add-port=445/tcp --permanent

四、大功告成!

在Windows上的文件资源管理器中键入IP地址即可访问资源。

用户名和密码为我们刚才所设置的参数。

一切大功告成!

标签: none

添加新评论