1.samba服务简介

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。

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

windows系统共享文件时用到的协议是smb
smb由miscrosoft+sun公司研发产生。

2.samba基本信息

服务启动脚本:smb.service
主配置目录:/etc/samba
主配置文件:/etc/samba/smb.conf
安全上下文:samba_share_t
端口:139、445
安装包:samba 、samba-common

3.samba的安装与启用

samba的安装:

dnf install samba samba-common samba-client -y

samba习题 samba部署_服务器


samba的启动:

systemctl enable --now smb ##开启smb服务,并设置为开机启动
firewall-cmd --permanent --add-service=samba  ##火墙开启samba服务
firewall-cmd --reload ##刷新火墙

samba习题 samba部署_linux_02


测试:

smbclient -L //192.168.43.12    ##当要输入root密码时,直接回车

samba习题 samba部署_linux_03

4.samba用户的建立

1.samba用户必须是本地存在的用户
2.samba用户的建立:

smbpasswd -a haha ##添加smb用户
pdbedit -L ##查看用户列表
pdbedit -x haha ##删除haha用户

samba习题 samba部署_samba习题_04

5.samba 用户访问家目录

访问方法:
在windows下:

\\192.168.43.12  ##访问
net use ##查看访问记录
net use * /del ##删除访问记录

在linux下:

smbclient //192.168.43.12/westos -U haha

【注】:
当selinux开启时,默认访问不到分享主机的家目录文件,要想访问,需执行以下:

getsebool -a | grep samba ##查看selinux对于samba软件的内部开放情况
setsebool -P samba_enable_home_dir on ##开启家目录访问

samba习题 samba部署_bc_05

5.samba服务共享目录

mkdir /westosdir  ##建立目录
touch /westosdir/linux{1..5} #在westosdir目录下面建立文件
vim /etc/samba/smb.conf  ##编辑主配置文件

samba习题 samba部署_samba习题_06

systemctl restart smb #重启服务
semanage fcontext -a -t sma_share_t  '/westosdir(/.*)?'  ##修改安全上下文
restorecon -RvvF /westosdir/  ##刷新

samba习题 samba部署_linux_07


测试:

smbclient //192.168.43.12/westosdir -U westos

samba习题 samba部署_samba习题_08

7.samba的访问控制

host allow 192.168.43.11 ##只允许192.168.43.11可以
host deny 192.168.43.13##除192.168.43.13外,其他都能访问控制
【注】:当写在单独共享时只对此共享生效,当写在global时对samba整体生效。

8.samba常用配置参数

writable = yes ##可写
 write list = westos ##指定用户可写
 write list = +westos ##指定组可写
 write list=@westos
 valid users = +lee | @lee ##指定访问组
 browseable = yes | no ##是否隐藏共享
 map to guest = bad user ##写到全局设定中
 guest ok=yes ##允许匿名用户访问
 admin users = lee ##指定共享的超级用户身份

9.samba的多用户挂载

意义:当客户端如果用普通的挂载方式,没有通过用户认证的人也可以访问到samba服务,为了解决这个漏洞,使用samba的多用户挂载。

首先生成一个文件vim /root/smbpassd

samba习题 samba部署_samba习题_09

接着多用户挂载
mount -o credentials=/root/smbpassd,sec=ntlmssp,multiuser //192.168.43.12 /mnt