网络服务之SAMBA

1、Samba的介绍

概述:

SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同操作系统的计算机之间提供文件及打印机等资源的共享服务。SMB 协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。

samba与vsftpd的对比

  • vsftpd的优缺点

    • 优点:文件传输:应用层协议、可以跨平台
    • 缺点:只能实现文件传输、无法实现文件系统挂载;无法直接修改服务器端的文件
  • samba:
    • 使用smb/cifs协议:可以跨平台、可以实现文件系统挂载、可以实现服务器端修改文件

smb协议和cifs之间的关系

随着 Internet 的流行,Microsoft 希望将这个协议扩展到 Internet 上去,成为 Internet 上计算机之间相互共享数据的一种标准。因此它将原有的几乎没有多少技术文档的 SMB 协议进行整理,重新命名为CIFS(Common Internet File System),它使程序可以访问远程 Internet 计算机上的文件并要求此计算机提供服务。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。CIFS 是公共的或开放的 SMB 协议版本,并由 Microsoft 使用。SMB 协议在局域网上用于服务器文件访问和打印的协议。

2、samba服务讲解

基础信息:

  • 协议:smb/cifs协议
  • 服务:smb(实现资源共享、权限认证)
  • 使用TCP协议—>端口号:139/445
  • 配置文件路径:/etc/samba/
    • 主配置文件:smb.conf
    • 别名配置文件:smbusers

登陆模式(安全级别)

  • 匿名验证:share
  • 本地用户验证:user(Samba服务器默认的安全级别,用户在访问共享资源之前必须提供用户名和密码进行验证)
    • tdbsam:使用一个数据库文件来验证,涉及的数据库文件:passdb.tdb
    • pdbedit -a 用户名:新建samba用户
    • pdbedit -x 用户名:删除用户
    • pdbedit -L 列出samba用户列表

常见的配置参数

全局配置:[global]用于定义Samba服务器的总体特性,其配置项对所有共享资源生效

workgroup = WORKGROUP
#设定 Samba Server 所要加入的工作组或者域。server string = Samba Server Version %v
#设定 Samba Server 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号。interfaces = lo eth0 192.168.75.130/24
#设置Samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址。hosts allow = 127. 192.168.1. 192.168.10.1
#表示允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。hosts deny = 127. 192.168.1. 192.168.10.1#hosts deny 与hosts allow 刚好相反(二选一)。#举例说明:hosts allow=172.17.2. EXCEPT172.17.2.50#表示容许来自172.17.2.*.*的主机连接,但排除172.17.2.50hosts allow=172.17.2.0/255.255.0.0#表示容许来自172.17.2.0/255.255.0.0子网中的所有主机连接log file = /var/log/samba/log.%m
#设置Samba Server日志文件的存储位置以及日志文件名称。在文件名后加个宏%m(主机名),表示对每台访问Samba Server的机器都单独记录一个日志文件。max log size = 50
#设置Samba Server日志文件的最大容量,单位为kB,0代表不限制security = user
#设置用户访问Samba Server的验证方式。passdb backend = tdbsam
load printers = yes/no
#设置是否在启动Samba时就共享打印机

普通的设置

[homes]用于设置用户宿主目录的共享属性(特殊共享)[homes]    #共享名(特殊共享,泛指每个用户对应的家目录)comment = Home Directories     #共享描述browseable = no   #共享是否可被查看writable = yes    #共享是否可写;valid users = %S   #允许访问该共享的用户#例如:valid users = bob,@bob(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@组名”表示。)[printers]用于设置打印机共享资源的属性(特殊共享,共享打印设备,现在基本不用)[printers] #共享名comment = All Printers #共享描述path = /var/spool/samba #共享路径browseable = no #共享是否可被查看guest ok = no #是否可以匿名访问,类似于publicwritable = no #是否可写printable = yes #是否可以打印[自定义]自定义共享区域[自定义] #共享名comment = the share is xbz #共享描述path = /share/zdy #共享路径public = yes #是否可以匿名访问,类似于guest okbrowseable = yes #共享是否可被查看writable = yes #是否可写(同时设置目录的W)

配置文件检查工具

  • testparm :若显示"Loaded services file OK."信息表示配置文件的语法是正确的
  • -v:显示samba所支持的所有选项

访问控制

写入权限的控制方式也是受到两方面的影响

  • 一个:配置文件,samba的配置文件需要开放权限

    • writable = yes
    • setfacl 或者是 chmod 777
  • 第二个:本来目录的权限也要设置
    • 文件系统开启,配置文件严格控制
    • read only = yes
    • wirite list = 用户 或者是@用户组

服务的启动:

  • 设置启动,关闭、重启等等—>systemctl
  • 开机自启动管理

登陆方式的讲解

  • linux登陆:

    • smbclient -U 用户名 -L //服务器ip —>用于查看服务器共享的情况
    • smbclient -U 用户名 -L //服务器ip/共享目录–>直接登陆服务器查看
  • windows系统登陆:
    • window的共享功能

      • 控制面板–>程序–>启用和关闭windows功能–>找到smb
    • \双斜杠服务器ip
    • 此电脑—>右键—>映射网络驱动器–>然后就能有一个网络共享的位置–>直接共享使用
    • 如果想要清楚共享的记录
      • cmd—>输入:net use * /del

3、实验的设置与部署

我们做实验的时候,一定再次强调要关闭selinux和防火墙

[root@node0 ~]# systemctl stop firewalld
[root@node0 ~]# systemctl disable firewalld
[root@node0 ~]# iptables -F
[root@node0 ~]# setenforce 0

部署的流程:

  • 服务器安装samba–>yum -y install samba
  • 确认相关的命令是否安装好了
    • rpm -q samba-client
    • rpm -q samba-common
  • 创建共享区域
    • mkdir /samba-share
  • 备份主配置文件
    • 这里还要创建独立的共享区域
  • 最后启动服务—>并且客户端尝试登陆
    • systemctl start smb
#安装相关的软件
[root@node0 ~]# yum -y install samba samba-common samba-client#创建共享的区域
[root@node0 ~]# mkdir /samba-share
[root@node0 ~]# chmod 777 /samba-share#本非一下配置文件
[root@node0 ~]# cp -a /etc/samba/smb.conf{,.bak}#修改配置文件使得/samba-share共享出来
[root@node0 ~]# vim /etc/samba/smb.conf#找一个空白的地方输入一下内容
[samba-share]comment = samba-share Directoriesvalid users = zhangsan,lisibrowseable = YESread only = Yes#创建一下两个关联的账户
[root@node0 ~]# useradd -s /sbin/nologin  zhangsan
[root@node0 ~]# useradd -s /sbin/nologin  lisi#然后授权samba的密码
[root@node0 ~]# pdbedit -a zhangsan
new password:
retype new password:
[root@node0 ~]# pdbedit -a lisi
new password:
retype new password:#到这里,服务器启动程序
[root@node0 ~]# netstat -antlup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      7417/smbd   #然后使用linux登陆查看
[root@Node1 ~]# smbclient -U zhangsan -L //192.168.75.130
Enter SAMBA\zhangsan's password: Sharename       Type      Comment---------       ----      -------print$          Disk      Printer DriversIPC$            IPC       IPC Service (Samba 4.8.3)zhangsan        Disk      Home Directories
Reconnecting with SMB1 for workgroup listing.Server               Comment---------            -------Workgroup            Master---------            -------#默认的是可以登陆到自己家目录的
[root@Node1 ~]# smbclient -U zhangsan  //192.168.75.130/zhangsan
Enter SAMBA\zhangsan's password:
Try "help" to get a list of possible commands.
smb: \> ls.                                   D        0  Thu Nov 10 14:42:31 2022..                                  D        0  Thu Nov 10 14:42:50 2022.bash_logout                        H       18  Wed Oct 31 01:07:12 2018.bash_profile                       H      193  Wed Oct 31 01:07:12 2018.bashrc                             H      231  Wed Oct 31 01:07:12 201818351104 blocks of size 1024. 16768432 blocks available

windows登陆

  • 直接打开文件夹–>\192.168.75.130\zhangsan–>登陆成功

本地验证实验—>实现登陆、上传、下载

#修改一下配置文件
[root@node0 ~]# vim /etc/samba/smb.conf
.....
[samba-share]comment = samba-share Directoriespath = /samba-sharepublic = yesbrowseable = YESwritable = yes
#测试一下配置文件
[root@node0 ~]# testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[samba-share]"
Processing section "[printers]"
Processing section "[print$]"
Loaded services file OK.
.........#重启服务
[root@node0 ~]# systemctl restart smb#客户端登陆查看
[root@Node1 ~]# smbclient -U zhangsan //192.168.75.130/samba-share
Enter SAMBA\zhangsan's password:
Try "help" to get a list of possible commands.#上传文件
smb: \> put aa.txt
putting file aa.txt as \aa.txt (0.0 kb/s) (average 0.0 kb/s)
smb: \> ls.                                   D        0  Thu Nov 10 14:58:14 2022..                                 DR        0  Thu Nov 10 14:17:03 2022aa.txt                              A        0  Thu Nov 10 14:58:14 202218351104 blocks of size 1024. 16767560 blocks available

实现访问控制权限–>通过配置限制

valid users 仅允许部分用户访问共享区域

注:前提条件是指定目录权限给到最大,通过修改配置文件来实现实验结果

#设置zhangsan能够登陆samba服务器,lisi不能登录#修改配置文件
[root@node0 ~]# systemctl restart samba
[samba-share]comment = samba-share Directoriespath = /samba-sharepublic = yesbrowseable = YESwritable = yesvalid users = zhangsan #加入这一行
#重启验证
[root@node0 ~]# systemctl restart smb#张三可以登陆
[root@Node1 ~]# smbclient -U zhangsan //192.168.75.130/samba-share
Enter SAMBA\zhangsan's password:
Try "help" to get a list of possible commands.
smb: \> #李四不能登录
[root@Node1 ~]# smbclient -U lisi //192.168.75.130/samba-share
Enter SAMBA\lisi's password:
tree connect failed: NT_STATUS_ACCESS_DENIED#设置部分用户拥有写权限,张三可以写,李四不能写
[root@node0 ~]# vim /etc/samba/smb.conf
............
[samba-share]comment = samba-share Directoriespath = /samba-sharepublic = yesbrowseable = YESwritable = yesvalid users = zhangsan,lisiread only = yeswrite list = zhangsan
[root@node0 ~]# systemctl restart smb#登陆验证-->zhangsan可以写
[root@Node1 ~]# smbclient -U zhangsan //192.168.75.130/samba-share
Enter SAMBA\zhangsan's password:
Try "help" to get a list of possible commands.smb: \> mkdir haha
smb: \> ls.                                   D        0  Thu Nov 10 15:06:55 2022..                                 DR        0  Thu Nov 10 14:17:03 2022aa.txt                              A        0  Thu Nov 10 14:58:14 2022haha                                D        0  Thu Nov 10 15:06:55 202218351104 blocks of size 1024. 16767980 blocks available#登陆验证-->lisi不可以写
[root@Node1 ~]# smbclient -U lisi //192.168.75.130/samba-share
Enter SAMBA\lisi's password:
Try "help" to get a list of possible commands.
smb: \> mkdir lisi
NT_STATUS_ACCESS_DENIED making remote directory \lisi#设置上传的文件的默认权限#修改配置文件
[root@node0 ~]# vim /etc/samba/smb.conf
[samba-share]comment = samba-share Directoriespath = /samba-sharepublic = yesbrowseable = YESwritable = yesvalid users = zhangsan,lisiread only = yeswrite list = zhangsancreate mask = 644directory mask = 755
#重启验证
[root@Node1 ~]# smbclient -U zhangsan //192.168.75.130/samba-share
Enter SAMBA\zhangsan's password:
smb: \> put aa.txt
#回到服务器验证
[root@node0 ~]# ls -l /samba-share/
总用量 0
-rw-r--r-- 1 zhangsan zhangsan 0 11月 10 15:10 aa.txt

用户别名(虚拟用户实验)

#添加一下别名的文件---->这个文件需要自己添加
[root@node0 ~]# vim /etc/samba/smbusers
zhangsan = zs#然后在修改配置文件--->在全局里边添加
[root@node0 ~]# vim /etc/samba/smb.conf
.......
[global]workgroup = SAMBAsecurity = userusername map = /etc/samba/smbuserspassdb backend = tdbsam
#重启验证登陆
[root@node0 ~]# systemctl restart smb
[root@Node1 ~]# smbclient -U zs //192.168.75.130/samba-share
Enter SAMBA\zs's password:
Try "help" to get a list of possible commands.
smb: \>

映射网络驱动器—->挂载实验

Linux系统下的挂载

#创建一个挂载的目录
[root@Node1 ~]# mkdir /smb-client#临时挂载
[root@Node1 ~]# mount -t cifs -o username=zs,password=123456 //192.168.75.130/samba-share /smb-client
[root@Node1 ~]# ls /smb-client/
aa.txt  haha#永久挂载就要写入/etc/fstab文件当中
[root@Node1 ~]# vim /etc/fstab
.....
//192.168.75.130/samba-share    /smb-client     cifs    defaults,username=zs,password=123456    0       0
[root@Node1 ~]# mount -a

Windows下实现映射

  • 此电脑–>映射网络驱动器—>输入\192.168.75.130/samba-share—>点击完成即可

图形化管理web界面

  • 上网找到samba-swat的zip包

samba服务器讲解相关推荐

  1. samba服务器详解

     1. Samba协议基础 自从出现NetBIOS协议,Microsoft用他实现了网络文件/打印服务,即大家熟知的打印和共享服务,他是基于SMB(Server Message Block)协议,实现 ...

  2. CentOS 6.3下Samba服务器的安装与配置(转)

    一.简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的 ...

  3. CentOS6 下Samba服务器的安装与配置

    原地址:http://www.cnblogs.com/mchina/archive/2012/12/18/2816717.html 一.简介 Samba是一个能让Linux系统应用Microsoft网 ...

  4. Samba服务器(一):windows访问samba服务器共享文件的简单实现(图文并茂)

    From:http://linux.chinaunix.net/techdoc/beginner/2009/07/09/1122864.shtml 一.linux的文件共享(当然也包括和windows ...

  5. RHEL5配置Samba服务器实现文件共享

    为了Windows主机与Linux服务器之间的资源共享,同时实现访问的控制,Linux操作系统提供的Samba服务可以实现这样的控管.Samba服务为两中不同的操作系统架起了一座桥梁,使Linux系统 ...

  6. CentOS 6.3下Samba服务器的安装与配置

    一.简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的 ...

  7. CentOS 7下Samba服务器的安装与配置 win 共享磁盘

    一.简介 Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的 ...

  8. Linux网络实战——Samba服务器搭建

    Linux网络实战--Samba服务器搭建 安装Samba服务软件 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Message ...

  9. Samba服务器的安装与配置

    一.什么是Samba? Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成. 实现Windows主机与Linux服务器之间的资源共享. 二.安装samba ...

最新文章

  1. 百分点集团发布中国首个行业AI决策系统产品Deep Matrix
  2. 聚类分析:创建,可视化以及可解释性
  3. Faster RCNN总结
  4. linux怎么添加工作组,linux 用户与工作组
  5. 关于华为海思Hi35XX系列开发的思考与总结
  6. GIS工具篇(二):GIS最全数据下载指南
  7. 2013款MacBook Air装Windows7单系统
  8. bootstrap-导航菜单
  9. vc 编译器的一些精典报错
  10. 用计算机考试有老师引导,河北省教师计算机考试评价题及答案
  11. 华为交换机查看发光收光
  12. JAVA继承类初始化顺序
  13. 解决Adobe PhotoShop用户界面字体过小的问题
  14. latex中输入matlab代码,Latex插入matlab代码
  15. ENVI5.4中Himawari-8数据处理(向日葵8号卫星H-8)
  16. python实现输出日历_python实现输入日期打印日历
  17. 企业服务总线 ESB 介绍和用例
  18. SpotMicro 12自由度四足机器人制作(两套方案)
  19. iOS 全息备份研究
  20. 【window】解决word,excel,PowerPoint 等office图标不显示问题

热门文章

  1. 计算机水平考试 初级,计算机水平考试-初级程序员下午试题模拟38
  2. Redis设计与实现——数据结构
  3. 计算机房精密空调术语,精密空调8大制冷形式,40个专业术语
  4. synaptics linux驱动程序,Synaptics
  5. Switch用String做参数
  6. Android MTK Camera驱动代码分析
  7. 【5G系列】MICO学习总结(1)
  8. 【2019年秋PAT乙级考试】回顾 +题解+思路2019-9-8
  9. 一个简单的socket套接字服务器,Python
  10. 关于接口测试--面试题