一、Samba服务概述

在Windows网络环境中、机之间进行文件打印和共享是通过微软自己的SMB/CIFS协议来实现的、SMB(服务消息块)和CIFS(通用互联网文件系统)这两个都是微软的私有协议

而Samba它在Linux中实现了微软的SMB/CIFS网络协议、从而使得跨平台的文件共享变得更加容易、SMB也是基于C/S架构的、所以它既可以充当文件共享服务器、也可以充当客户端

1)Samba软件包组成

在CentOS7中可以找到几个关于Samba的软件包、默认已经安装了客户端 samba-client和服务端samba

[root@node1 ~]# rpm -qa | grep samba
samba-client-libs-4.7.1-6.el7.x86_64		#客户端软件
samba-common-libs-4.7.1-6.el7.x86_64		#所需要的库
samba-common-4.7.1-6.el7.noarch				#提供服务端与客户端程序的公共组件

2)Samba程序组件

Samba服务提供smbd、nmbd两个服务程序、它们分别完成不同的功能

smbd:负责为客户端提供服务器中共享资源的访问
nmbd:负责提供基于NetBIOS协议的主机名称解析

安装好samba软件之后、系统会自动添加名为smb和nmb的标准系统服务、使用netstat 可查看监听端口

smbd负责监听TCP协议的139端口(SMB协议)、445端口(CIFS协议)、nmbd负责监听UDP协议的137-138端口(NetBIOS)

二、Samba部署及配置文件说明

1)Samba部署

提示:安装Samba时我们可以使用yum的方式来安装、同时也可以去官网下载最新的源码包来进行安装

[root@node1 ~]# yum -y install samba*
[root@node1 ~]# systemctl enable smb
[root@node1 ~]# systemctl enable nmb
[root@node1 ~]# systemctl start smb
[root@node1 ~]# systemctl start nmb
tcp        0      0 0.0.0.0:445             0.0.0.0:*                  1861/smbd
tcp        0      0 0.0.0.0:139             0.0.0.0:*                  1861/smbd
udp        0      0 0.0.0.0:137             0.0.0.0:*                  1873/nmbd
udp        0      0 0.0.0.0:138             0.0.0.0:*                  1873/nmbd

2)Samba配置文件说明

Samba的主配置文件位于:/etc/samba/smb.conf

其中以#号打头的为注释、以;号打头的为配置样例、Samba的配置文件主要分为三个部分、如下所示:  

[global]全局设置:		#此配置项对整个Samba服务器都有效
[homes]宿主共享设置:	  #设置用户的默认共享 对应用户宿主目录
[printers]打印机共享:   #如果我们需要共享打印机设备、可在此项设置

3)Samba的常见配置项说明

workgroup:				#设置工作组名称
server string:			#设置服务器介绍信息
comment:				#设置共享目录说明信息
path:					 #设置共享目录的位置
browseable:				 #设置网上邻居是否课件
guest ok:				#是否所有人可以访问共享目录 与public作用相同
writable:				 #是否所有人可以写入、与 read only 配置项作用相反
max log size = 60:		#定义日志的最大容量为60KB
passwd backend:		    #共享账户文件类型、默认使用tdbsam
log file = path/log.%m: #设置日志文件的位置 %.m 表示客户端的IP
security:				#设置Samba的安全验证方式 可设置为:user、share、server、domain
              share:	可匿名访问
		                  user:	由本地服务器验证用户名及密码
              domain:由域控制器来验证用户名和密码
		              server:指定另一台服务器来验证用户名及密码

三、构建文件共享服务器

1)部署可匿名访问的共享

提示:设置匿名共享文件夹需要在主配置文件调整两个地方:

其一:添加一段共享目录

其二:到全局配置项中添加 map to guest = Bad user 以允许匿名访问

1、创建共享目录并定义配置文件

如下所示、我们设置共享目录的路径为:/var/share 然后允许匿名访问

[root@node1 ~]# mkdir /var/share
[root@node1 ~]# vim /etc/samba/smb.conf
[global]
        workgroup = SAMBA
        security = user
        passdb backend = tdbsam
        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
        map to guest = Bad user
[test]
        comment = test file			#说明
        path = /var/share			#路径
        public = yes				#允许所有访问
        read only = yes				#设置为只读

提示:配置好之后我们可以使用 testparm工具来检查配置文件是否有错误、如果有则会给出相应的提示  

提示:最后只需重启服务即可:systemctl restart smb nmb

2、验证可匿名访问的共享

如下所示访问成功

接下来我们可以看到、不能上传文件至服务器、只能下载文件

匿名用户我们一般也不会给写入权限、如果要写入权限、则设置UGO权限然后再添加 writable = yes 即可

2)部署需用户验证的共享

1、建立Samba用户数据库

提示:创建账号的时候必须有与它同名的系统用户、以便主机对共享访问的读写权限进行控制、但是密码不需要

常用的命令如下所示:

pdbedit -a 用户:		#添加用户
pdbedit -x -u 用户:	#删除用户
pdbedit -L:			#列出所有用户
pdbedit -vL 用户:		#列出单个用户并输出详细信息

如下所示我将创建两个用户分别为:test01和test02

[root@node1 ~]# useradd test01
[root@node1 ~]# useradd test02
[root@node1 ~]# pdbedit -a test01		#根据提示设置对应的密码
[root@node1 ~]# pdbedit -a test02
[root@node1 ~]# pdbedit -L
test01:1001:
test02:1002:

2、设置用户访问授权

共享目录的用户授权主要由:valid user、write list 配置项指定、前者为谁可以访问、后者为谁可以写

当我们需要授权多个用户的时候可以使用逗号或者空格分隔、如果要授权一个用户组则使用 @组名的形式来设置

如下所示:我将允许 test01和02可以访问 但只允许test01写

[test]
        comment = test file
        path = /var/share
        public = no
        valid users = test01,test02
        write list =  test01

注意:用户最终是否拥有读写权限、除了设置用户授权以外、还需设置本地文件夹的权限、即UGO 如下所示:

[root@node1 ~]# ll -lh /var/ | grep share				#查看权限
drwxr-xr-x   2 root root  145 4月  28 11:18 share
[root@node1 ~]# chmod 757 /var/share/					#设置权限
[root@node1 ~]# ll -lh /var/ | grep share
drwxr-xrw-   2 root root  145 4月  28 11:18 share		#确认权限

另外当用户上传文件的时候、对于用户所上传的文件以及子目录的默认授权、可分别使用如下配置项指定

directory mask = 0755		#表示上传目录的权限为0755
create mask = 0644			#表示上传文件的权限为0644

3、验证需用户访问的共享

(1)验证test01用户、查看是否能读取和写入

通过下图我们可以看到、test01可以上传文件至服务器

(2)验证test02用户、查看是否能读取和写入

登录进来之后、通过下图我们可以看到、test02的权限 为读不能写

四、共享用户映射及访问地址限制

提示:为了进一步提高Samba的安全性、除了设置用户授权以外我们还可以采取用户映射和访问地址限制等措施

1)共享用户映射

提示:所谓的映射也就是别名、别名设置完以后我们可以通过别名登录、从而降低了账号密码泄露的风险

别名的设置格式为:共享用户名 = 别名1 别名2

CentOS7中默认没有那个配置文件、我们需要在/etc/samba/目录下新建一个、即smbusers然后设置别名即可、如下所示:

[root@node1 ~]# touch /etc/samba/smbusers
[root@node1 ~]# vim  /etc/samba/smbusers
test01 = benet
test02 = accp

以上的配置添加完成以后还需要在主配置文件的全局选项里添加如下配置项、这样方能生效、如下所示:

[root@node1 ~]# vim /etc/samba/smb.conf
[global]
username map = /etc/samba/smbusers

最后即可通过 benet 或者 accp 登录了、因为操作已经完成、如下所示我们使用benet登录、可以看见登录成功、因为它的真实用户名是test01、所以它具有读写权限、如下所示:

2)访问地址限制

访问限制我们可通过 host allow 以及 host deny 配置项来进行访问限制、前者用于指定仅允许访问共享的客户机地址、后者用于指定仅拒绝访问共享的客户机地址

访问限制一般用于global部门、也可用于某个具体的共享配置段部分 限制的对象可以是:IP、网络地址

配置的格式为:hosts allow = IP

如下所示:限制客户机地址为 192.168.3.12的、不准访问我的服务器、如果允许则将deng 改为 allow 即可

hosts deny = 192.168.3.12

这个时候我们再去访问一下、就会如下图所示:

五、Linux平台访问共享目录

1)直接访问共享目录

1、查询目标主机的共享资源列表

提示:通过下图我们可以看到、目标主机共享的目录标识为 test

2、登录并访问共享目录

登录的格式为:smbclient  //IP/共享名 	#注意 这是匿名访问
如果是登录需要用户验证的访问共享则为:smbclient  -U 用户名  //IP/共享名

如下所示我们直接使用 benet这个别名登录 、登录成功之后则会出现如下图所示的交互页面

同时我们也可以在服务器上看有谁在线、如下所示: 对应的命令为 smbstatus

3、上传与下载文件

get和mget:#下载文件	后者为下载大文件
put和mput:#上传文件	后者为上传大文件

如果要用其他命令、可在交互式页面输入 help 查看在线帮助信息

如下所示:我们下载一个openvpn文件、然后上传一个 pass.txt文件

smb: \> mget openvpn-install-2.3.10-I601-x86_64.exe
smb: \> mput pass.txt

如下所示:下载成功

如下所示:上传成功  

2)挂载共享目录至本地

为何要挂载?smbclient不是用的好好地吗?

如果不挂载我们只有将文件下载下来之后才能查看、如果是使用 mount工具挂载、那就相当于访问本地目录一样

挂载的命令格式为:mount  -o  username=用户  //IP地址/共享名  /挂载点

挂载之前先安装软件包、不然会报错:yum -y install cifs-utils、这个软件包有些系统已经自带

[root@node2 ~]# mount -o username=benet //192.168.3.11/test /study		#将共享挂载至study
Password for benet@//192.168.3.11/test:  *******
[root@node2 ~]# df -hT | tail -1										#查看挂载结果
//192.168.3.11/test     cifs       17G  4.0G   14G   24% /study
[root@node2 ~]# echo "//192.168.3.11/test /study cifs defaults 0 0" >> /etc/fstab 	#开机自动挂载
[root@node2 ~]# mount -a
[root@node2 ~]# tail -1 /etc/fstab
//192.168.3.11/test /study cifs defaults 0 0

最后我们直接进入 study目录即可访问相应的文件、如下所示:

【只是为了打发时间】

文件共享服务之Samba的更多相关文章

  1. Linux文件共享服务之Samba

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

  2. CentOS6.5下搭建文件共享服务(Samba)

    Samba服务: 本内容为samba服务学习者提供参考 案例描述: 某公司的管理员需要搭建SAMBA服务器,IP地址及允许的访问网段自定义.SAMBA服务器的安全级别为user级,所在工作组为WORK ...

  3. Linux文件共享服务之Vsftp

    目录 FTP Vsftp服务的搭建 ftp.sftp.vsftp.vsftpd的区别 FTP FTP的工作原理: FTP会话时包含了两个通道,一个叫控制通道,一个叫数据通道.控制通道是和FTP服务器进 ...

  4. Linux文件共享服务之NFS

    NFS(Network File System) 网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中,本地NFS的客户端应用可 ...

  5. Samba文件共享服务

    Samba起源: 早期网络想要在不同主机之间共享文件大多要用FTP协议来传输,但FTP协议仅能做到传输文件却不能直接修改对方主机的资料数据,这样确实不太方便,于是便出现了NFS开源文件共享程序:NFS ...

  6. samba文件共享服务的配置

    samba文件共享服务的配置 服务端配置 一.安装samba软件包 命令:yum -y install samba 查看是否安装samba. [root@Centos7-Server haha]# [ ...

  7. Linux基础学习-Samba文件共享服务

    使用Samba文件共享服务 Samba起源: 早期网络想要在不同主机之间共享文件大多要用FTP协议来传输,但FTP协议仅能做到传输文件却不能直接修改对方主机的资料数据,这样确实不太方便,于是便出现了N ...

  8. Samba搭建Linux和Windows文件共享服务

    一.Samba简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享 ...

  9. nfs samba文件共享服务

    (注意:实验之前强关闭selinux和防火墙) 一丶nfs ① 1.服务端 启动服务 systemctl start nfs.service   配置文件 vim /etc/exports share ...

随机推荐

  1. Match3 Module For Game(THDN)

    介绍    THDN的核心机制为Match3的利用,本文对Match3 Gameplay进行记录,并对其进行改良.THDN作为RogueLIke性质的游戏,玩家在随机生成的dungeon里进行探索并获 ...

  2. react根据传参的不同动态注册不同的子组件

    上一篇文章介绍了关于Vue如何根据传参的不同动态注册不同的子组件,实现过程请查阅Vue.extend动态注册子组件,由Vue的这个功能我就自然联想到了使用react该如何实现同样的功能呢.其实,用re ...

  3. rabbitmq系列(三)消息幂等性处理

    一.springboot整合rabbitmq 我们需要新建两个工程,一个作为生产者,另一个作为消费者.在pom.xml中添加amqp依赖: <dependency> <groupId ...

  4. cogs 397. [USACO Oct09] 热浪 Dijkstra

    397. [USACO Oct09] 热浪 ★☆   输入文件:heatwvx.in   输出文件:heatwvx.out   简单对比时间限制:1 s   内存限制:128 MB 德克薩斯純樸的民眾 ...

  5. hdu - 4965

    One day, Alice and Bob felt bored again, Bob knows Alice is a girl who loves math and is just learni ...

  6. Java 几道常见String面试题

    String s1="abc"; String s2="abc"; System.out.println(s1==s2); System.out.println ...

  7. 「扫盲」Elasticsearch

    前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 不知道大家的公司用Elasticsearch多不 ...

  8. 10.JavaSE之包机制

    包机制: 为了更好的组织类,Java提供了包机制,用于区别类名的命名空间 包语句的语法格式为: package pkg1[ . pkg2[ . pkg3...]]; package com.duan. ...

  9. C#图片采集软件 自动翻页 自动分类(收集美图必备工具)(一)

    网站管理员希望将别人的整站数据下载到自己的网站里或者将别人网站的一些内容保存到自己的服务器上.从内容中抽取相关的字段,发布到自己的网站系统中.有时需要将网页相关的文件也保存到本地,如图片.附件等. 图 ...

  10. 2020年十大OA办公系统排行榜

      最近几年办公信息化的不断发展,走向千家万户(企业),从刚开始的大型公司,政府企业到现在中小企业的加入,市场更加的庞大,产业前进很好,在协同办公这片市场中,有哪些公司独领风骚? 泛微OA:(www. ...