文件共享服务之Samba
一、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的更多相关文章
- Linux文件共享服务之Samba
目录 Samba Samba的配置 Samba Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ...
- CentOS6.5下搭建文件共享服务(Samba)
Samba服务: 本内容为samba服务学习者提供参考 案例描述: 某公司的管理员需要搭建SAMBA服务器,IP地址及允许的访问网段自定义.SAMBA服务器的安全级别为user级,所在工作组为WORK ...
- Linux文件共享服务之Vsftp
目录 FTP Vsftp服务的搭建 ftp.sftp.vsftp.vsftpd的区别 FTP FTP的工作原理: FTP会话时包含了两个通道,一个叫控制通道,一个叫数据通道.控制通道是和FTP服务器进 ...
- Linux文件共享服务之NFS
NFS(Network File System) 网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中,本地NFS的客户端应用可 ...
- Samba文件共享服务
Samba起源: 早期网络想要在不同主机之间共享文件大多要用FTP协议来传输,但FTP协议仅能做到传输文件却不能直接修改对方主机的资料数据,这样确实不太方便,于是便出现了NFS开源文件共享程序:NFS ...
- samba文件共享服务的配置
samba文件共享服务的配置 服务端配置 一.安装samba软件包 命令:yum -y install samba 查看是否安装samba. [root@Centos7-Server haha]# [ ...
- Linux基础学习-Samba文件共享服务
使用Samba文件共享服务 Samba起源: 早期网络想要在不同主机之间共享文件大多要用FTP协议来传输,但FTP协议仅能做到传输文件却不能直接修改对方主机的资料数据,这样确实不太方便,于是便出现了N ...
- Samba搭建Linux和Windows文件共享服务
一.Samba简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享 ...
- nfs samba文件共享服务
(注意:实验之前强关闭selinux和防火墙) 一丶nfs ① 1.服务端 启动服务 systemctl start nfs.service 配置文件 vim /etc/exports share ...
随机推荐
- 【Java基础总结】数据库编程
MySQL数据库查询 import java.sql.*; public class JdbcDemo1{ public static void main(String[] args){ try{ / ...
- SpringBoot+Neo4j在社交电商中,讲述你是怎么被绑定为下线的
上两篇文章我们主要讲解了Neo4j的基本知识以及Neo4j的基本使用,这篇文章我们就以实例来深入的理解一下,我们以社交电商中的绑定关系为例,使用SpringBoot+Neo4j来实现. Neo4j文章 ...
- 什么是aPaas?aPaas与低代码又是如何促进应用程序开发现代化的?
从软件即服务(SaaS)到基础设施即服务(IaaS),云计算的兴起使“一切皆服务”(XaaS)模型得以泛滥,而aPaaS可能是这些模型中最鲜为人知的模型.随着aPaaS市场预计将从2018年的近90亿 ...
- cogs 2. 旅行计划 dijkstra+打印路径小技巧
2. 旅行计划 ★★ 输入文件:djs.in 输出文件:djs.out 简单对比时间限制:3 s 内存限制:128 MB [题目描述] 过暑假了,阿杜准备出行旅游,他已经查到了某些城市 ...
- OpenGL ES for Android
经过半年的准备OpenGL ES for Android系列文章终于要和大家见面了,在这里定一个小目标-先吸引1000个粉丝,万一实现了呢.写关于OpenGL ES的文章开始是有一些犹豫的,因为Ope ...
- Vs中提交了代码但是不想推送到Git中
1:首先就是我fix code 是要提交上去的,所以我就开始提交呢,但是,一看提交后,还没有推送到git就是现在下面的这个状态 上面这个是==> 这是先新增的文件,第一步.但是第一步就差推送了, ...
- 自建CDN Xnign产品指标
Xnign-X1 Xnign-X1 性能参数 参考值 L7 HTTP RPS (128并发请求) 250W QPS L7 HTTP CPS (128并发请求) 110W QPS L7 HTTP RPS ...
- Qt Installer Framework翻译(5-2)
创建在线安装程序 联机安装程序获取二进制安装文件中的内容以及存储库描述(Updates.xml).请创建一个存储库,并将其上传到Web服务器.然后在用于创建安装程序的config.xml文件中指定存储 ...
- 《即时消息技术剖析与实战》学习笔记10——IM系统如何应对高并发
一.IM 系统的高并发场景 IM 系统中,高并发多见于直播互动场景.比如直播间,在直播过程中,观众会给主播打赏.送礼.发送弹幕等,尤其是明星直播间,几十万.上百万人的规模一点也不稀奇.近期随着武汉新型 ...
- Docker基础内容之数据持久化
数据卷的特性 数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS 数据卷可以在容器之间共享和重用,相当于将一个分区挂载到多个目录下面 数据卷内容的修改会立马生效 数据卷的更新,不会影响镜像: ...