Centos 8 搭建samba文件共享服务(超详细)

一、samba文件共享服务简介

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

CIFS: Common Internet File System通用网络文件系统,是windows主机之间共享的协议,samba实现了这个协议,所以可以实现wondows与linux之间的文件共享服务。

Samba服务程序logo:
Ucs3od.png

二、搭建及设置步骤

实验环境:VMware Workstation 15.5 、X Shell、Windows 10 专业工作站版

1、首先,为服务器安装DHCP服务

[root@localhost ~]# yum -y install dhcp*

2、dhcp服务模板路径为/etc/dhcp/dhcpd.conf,但打开后提示你到/usr目录中去寻找模板,所以我们要将/usr中的模板复制一份到/etc目录中

[root@localhost ~]# cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖'/etc/dhcp/dhcpd.conf'? yes    ## 替换掉原先的空白文件

3、修改dhcp服务配置文件

option domain-name "test.com";    ## 修改DNS服务器域名
option domain-name-servers 192.168.50.133;    ## 修改DNS服务器IP

subnet 192.168.50.0 netmask 255.255.255.0 {   ## 设置网段及子网掩码
  range 192.168.50.140 192.168.50.200;     ## 设置可分配的IP地址池
  option routers 192.168.50.133;      ##  设置网关
   } 
【注意】:每一行末必须有以分号结尾且最后以一个大括号结束

4、开启dhcp服务

[root@localhost ~]# systemctl start dhcpd

5、打开另一台win10客户端,尝试使用dhcp自动获取IP

首先设置网卡,将“自动获得IP复制“及”自动获得DNS服务器地址“两个选项勾上
UcsGFA.png

在搜索框中输入cmd打开”命令提示符“,因为之前我为这台机器配置过IP,所以先释放一下原先IP地址

C:\Users\GYW>ipconfig /release

UcsJJI.md.png

再获取一下新地址

C:\Users\GYW>ipconfig /renew

UcsNSP.md.png

可以看出客户端已经成功获取到dhcp服务器提供的地址了,那我们再来测试一下客户机与服务器的连通性

Ping一下dhcp服务器ip,发现可以ping通,配置完成实验继续:
UcsUQf.md.png

6、安装samba服务

[root@localhost ~]# yum -y install samba

7、查看并修改samba服务配置文件

[root@localhost samba]# cd /etc/samba | ll     ## 进入samba服务目录并查看该目录下所有内容
总用量 20
-rw-r--r--. 1 root root    20 4月  24 10:41 lmhosts
-rw-r--r--. 1 root root   706 4月  24 10:41 smb.conf    ## 这个就是配置文件
-rw-r--r--. 1 root root 11327 4月  24 10:41 smb.conf.example

因为配置文件模板中有很多注释内容用不到而且影响阅读,所以需要删选出来导入smb.conf文件中

[root@localhost samba]# grep -v "#" smb.conf.example.bak > smb.conf   ## 反向筛选出不带“#”的内容后输出到smb.conf中

编辑配置文件并修改内容

[root@localhost samba]# vi smb.conf ## 编辑配置文件

修改并添加如下内容:
17         security = user   ## 修改为匿名身份验证
18         map to guest = Bad User

【特别注意!】:在原先的samba3中的security=share在samba4中已经不再支持了,如果希望实现匿名访问必须调整参数!
如果你安装的是samba3,则可以继续使用security = share

如果不知道版本的化可以使用以下命令进行查看:
[root@localhost opt]# rpm -qa samba
samba-4.11.2-13.el8.x86_64


在文件末尾插入以下内容:

[share]               
path=/opt/abc            ## 指定文件路径
public=yes               ## 是否共享
browseable=yes           ## 是否能够访问
writable=yes             ## 是否能够写入
create mask=0644         ## 所有新建的文件权限都是644
directory mask=0755      ## 所有在该目录下新建的子目录的权限为777

配置完成后保存退出

8、修改/opt/目录下在/abc目录权限

[root@localhost opt]# chmod 777 /opt/abc

9、关闭系统核心防护及防火墙功能

[root@localhost opt]# setenforce 0
[root@localhost opt]# systemctl stop firewalld

10、开启samba服务

[root@localhost opt]# systemctl start smb

11、查看服务是否启动(查看端口号是否开启)

[root@localhost opt]# netstat -antp | grep -E "139|445"

tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      33985/smbd          
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      33985/smbd          
tcp6       0      0 :::445                  :::*                    LISTEN      33985/smbd          
tcp6       0      0 :::139                  :::*                    LISTEN      33985/smbd 
【PS】:samba服务的端口号为139和445
       grep -E :开启扩展(Extend)的正则表达式

12、从客户端进行远程访问服务器

在地址栏中输入服务器IP,回车即可访问
UcsYWt.md.png

在目录中随便创建一个文件
Ucsay8.md.png

回到服务端查看该文件的创建者,发现是nobody

[root@localhost opt]# cd /opt/abc/ | ll
总用量 0
-rw-r--r--. 1 nobody nobody 0 7月  18 00:10 test.txt

[root@localhost abc]# id nobody 
uid=65534(nobody) gid=65534(nobody) 组=65534(nobody)

13、众所周知,匿名就代表着谁都可以访问服务器进行文件的编辑,这是非常危险的,所以生产环境中需要开启身份验证,下面就来实操一下

编辑samba服务配置文件

[root@localhost abc]# vi /etc/samba/smb.conf

参照之前创建的模板插入以下内容:

[def]
path=/opt/def
browseable=yes
create mask=0644
directory mask=0755
valid users=tom, jerry   ## 允许tom和jerry用户进行访问
write list=tom    ## 仅允许tom用户进行写入

编辑完成后保存退出

UcsdOS.png

14、因系统中还没这两个用户,先来创建一下

[root@localhost abc]# useradd tom        ## 创建tom用户
[root@localhost abc]# useradd jerry      ## 创建jerry用户

[root@localhost abc]# smbpasswd -a tom   ## 为tom用户创建密码
New SMB password:                        ## 输入密码
Retype new SMB password:                 ## 确认密码
Added user tom.                          ## 创建成功!

jerry用户创建操作相同,这里就不再演示了

创建完成后使用命令查看一下创建的用户:

[root@localhost abc]# pdbedit -L
tom:1001:
jerry:1002:

15、因为/opt目录下还没有def这个目录,所以来创建一个

[root@localhost abc]# mkdir /opt/def         ## 创建def目录
[root@localhost abc]# chmod 777 /opt/def/    ## 设置目录权限为777

16、重启samba服务

[root@localhost abc]# systemctl restart smb

15、下面就可以使用win10客户机来尝试登陆访问了

注意:因为之前登陆过会有信息缓存,所以要先清空缓存

打开命令提示符输入一下命令:

C:\Users\GYW>net use * /d

Ucs0eg.md.png

16、登陆服务器,输入刚才创建的用户名及密码进行登陆
UcsyYn.md.png

登陆成功!

尝试创建一个文件:
UcssFs.md.png

也是OK的

17、以上说明tom用户使用正常,现在来测试jerry用户

注意:在登录之前同样要清空缓存
UcsBwQ.md.png

尝试对刚才创建的文件进行改名
UcsDoj.md.png

发现没有操作权限

18、samba中还可以设置别名登录

编辑配置文件

[root@localhost samba]# vi /etc/samba/smbusers
【注意】:在samba4中没有这个文件,所以可以使用vi命令可以自动创建一个

添加如下内容:
tom = guest01 guest 02

修改samba主配置文件,并增加一行内容:vi /etc/samba/smb.conf

security = user
map to guest = Bad User
passdb backend = tdbsam
username map = /etc/samba/smbusers    ## 添加这一行内容

修改完成后保存退出
别忘了重启samba服务:systemctl restart smb

19、回到客户端清空一下缓存,使用刚设置的用户别名重新进行登陆
Ucs6Wq.md.png

UcsgS0.md.png

登陆成功并可以创建文件

20、下面来设置一下访问控制列表,禁止某个(些)IP或网段访问samba服务

首先编辑配置文件

[root@localhost samba]# vi smb.conf

[def]
path=/opt/def
browseable=yes
create mask=0644
directory mask=0755
valid users=tom, jerry
write list=tom
hosts deny=192.168.50.140 192.168.100.   ## 禁止.140的IP及100段IP访问

修改完保存退出

21、重启samba服务并在客户机清除缓存重新尝试登录
UcseRx.md.png

这时候就会发现无论怎样访问都会提示权限拒绝!

22、最后我们来将windows中的目录挂载到Linux本地中

在L服务端根目录下创建一个data目录

[root@localhost ~]# mkdir /data

在客户端的E盘也创建一个文件夹
UcsViR.md.png
进入创建的文件夹,新建一个文件并随机往里面写入内容
UcsZJ1.md.png

23、因为想要实现的是从Linux访问客户端的文件,所以要在windows客户端进行设置

首先开启来宾用户

右击“我的电脑”选择“管理”,在计算机管理窗口中左侧选择“本地用户和组中的用户,在右侧就会显示”Guest“账户,默认是禁用的,现在我们将它启用
UcsAo9.md.png

UcskdJ.png

24、接着在搜索栏中输入“secpol.msc”打开“本地策略”,从“拒绝从网络访问这台计算机”中将Guest用户删除
Ucsmz6.md.png

25、在“安全选项”中的“网络访问:本地账户的共享和安全模型”中选择“仅来宾”项单击确定
UcsMLD.md.png

26、在全部设置按成后记得要更新一下本地策略

C:\Users\GYW>gpupdate /force

UcsuQK.png

27、更新完策略后右击需要共享的文件夹,选择“属性”,在“安全”选项卡中单击“共享”按钮,下拉列表中选择“Guest”后单击“共享“按钮即可
Ucs1dH.md.png

28、切换到“安全”选项卡,选择Guest账户,单击“编辑”按钮,选择Guest账户,并单击下面的“允许完全控制”按钮
Ucslee.md.png

29、从服务端查看共享文件夹

[root@localhost ~]# smbclient -L 192.168.50.140     ## 列出某个IP地址所提供的共享文件夹
Enter MYGROUP\root's password:      ## 因为是匿名,所以密码为空

	Sharename       Type      Comment
	---------       ----      -------
	ADMIN$          Disk      远程管理
	C$              Disk      默认共享
	D$              Disk      默认共享
	guazai          Disk                    ## 已经可以看到共享文件夹了
	IPC$            IPC       远程 IPC
SMB1 disabled -- no workgroup available

30、现在将客户端的guazai文件夹挂载到Linux的data目录中

[root@localhost ~]# mount.cifs //192.168.50.140/guazai /data     ## 将远程目录挂载到本地
Password for root@//192.168.50.140/guazai:    ## 密码为空,回车即可

查看磁盘挂载情况

[root@localhost ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   10M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/sda3               xfs       295G  6.3G  289G    3% /
/dev/sda1               ext4      976M  189M  721M   21% /boot
tmpfs                   tmpfs     376M  1.2M  375M    1% /run/user/42
tmpfs                   tmpfs     376M  3.5M  372M    1% /run/user/0
/dev/sr0                iso9660   7.7G  7.7G     0  100% /run/media/root/CentOS-8-2-2004-x86_64-dvd
//192.168.50.140/guazai cifs      200G  6.3G  194G    4% /data       ## 已经挂载成功了!

挂载完成后就可以任意上传下载、修改其中的文件了

猜你喜欢

转载自blog.csdn.net/u014042047/article/details/107425152