在VMware上利用Samba实现资源共享

2024-05-09 22:28

本文主要是介绍在VMware上利用Samba实现资源共享,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、背景

FTP协议能让主机之间的文件传输变得简单方便,但是FTP协议的本质是传输文件。

举个栗子:当客户端想修改服务器上的test.txt,需要先get test.txt将文件下载下来,修改后再put test.txt

有没有一种方式能使客户端直接修改服务器的test.txt并自动更新服务器的上test.txt?那就是资源共享

二、基本概念

(1)SMB协议:服务器消息协议,旨在解决局域网内的文件或打印机等资源共享的问题。

(2)Samba服务程序:是实现SMB协议的免费软件。

三、安装和配置Samba

1、安装Samba服务程序的软件包,

yum install samba

运行后见到Complete!就成功了

2.建立访问共享资源的账户信息。Samba服务程序的账户信息数据库要求账户必须在当前系统中已经存在(简单的说就是选择一个目前系统中已经有的用户作为访问共享资源的用户)

pdbedit -a -u bjy  //-a选项为建立Samba账户 -u选项为指定Smaba用户的名称为bjy,即选择bjy这个已经存在的用户作为访问共享资源的用户

执行了pdbedit指令之后会让你输入两次密码,这个密码可以与该用户之前登录linux时的相同,也可以不相同

3.创建用于共享资源的文件目录

mkdir /home/database        // database就是共享目录,里面放的文件和文件夹等资源用于共享
chown -Rf bjy:bjy /home/database         //将这个目录的用户和用户组修改为bjy用户下和bjy用户组下,这样可以使得bjy这个用户对database有读写的权限,方便后续操作
semanage fcontext -a -t samba_share_t /home/database            //因为其他主机要访问/home/database,即要访问家目录下面的的东西,增加SElinux安全上下文,允许访问的操作
restorecon -Rv /home/database           //让新的安全上下文立即生效

 4、设置SElinux服务与策略,使其允许通过Samba服务程序访问普通用户家目录

 5.配置Samba服务程序的配置文件

# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.[global]workgroup = MYGROUP           security = userserver string = Samba Server Version %vlog file = /var/log/samba/log.%mmax log size=50passdb backend = tdbsamprinting = cupsprintcap name = cupsload printers = yescups options = raw[homes]comment = Home Directoriesvalid users = %S, %D%w%Sbrowseable = Noread only = Noinherit acls = Yes[printers]comment = All Printerspath = /var/tmpprintable = Yescreate mask = 0600browseable = No[print$]comment = Printer Driverspath = /var/lib/samba/driverswrite list = @printadmin rootforce group = @printadmincreate mask = 0664directory mask = 0775
[database]    //这里的database是简历的共享会话名,最好和共享文件夹同名,避免混淆comment= Do not arbitrarily modify the database filepath=/home/database    //这里要按照自己的共享文件的位置进行更改public=nowritable=yes

6.重启Samba服务程序并清空防火墙

systemctl restart smb      //samba服务程序在linux系统中的名字就叫smb
systemctl enable  smb
iptables -F
iptables-save > /etc/sysconfig/iptables     //这句话是为了把防火墙当前的配置保存在文件里,使配置永久生效

四、功能验证1:Windows与linux之间共享文件

1、在windows上输入\\+linux的ip地址,点打开

2、如果是第一次使用,会让你输入用户和密码,这时候就输入3.2节所创建的用于共享资源访问的用户和密码,随后可以看见共享文件database,至于为什么用户bjy的家目录也会成为共享的文件,目前不是很清楚。另外需要注意的是,如果共享会话文件夹名更改为share,只要不改变Samba配置文件中的共享会话名(见第三节),下面这个database文件夹就还是叫database,而不会变为share。

3、在bjy和database里创建和修改文件、文件夹等,在linux上也可以同步看得见。

举个栗子:在database里新建 hhh.txt,在linux里可以看到这个文件

 五、功能验证2:Linux和linux之间资源共享

因为实验环境有限,我在一个VMWare上面开了两个centos,模拟两个linux之间的共享

其中centos1 ip地址为192.168.153.129  (视为服务器)

centos2 ip地址为192.168.153.132    (视为客户端)

1、在centos2上安装支持文件共享服务的软件包cifs-utils

yum install cifs-utils

2、按照Samba服务的用户名、密码、共享域的顺序写入一个认证文件中。

vim auth.smb    //新建一个auth.smb文件

在auth.smb中写入

username=wukong     //写入的是centos2所配置的共享账户
password=123456      //如果不小心写成了centos的共享账户或者其他七七八八的账户
domain=MYGROUP       //后面挂载的时候会被samba服务器拒绝挂载

修改认证文件的权限,仅root管理员才能够读写

chmod 600 auth.smb

3、在客户端上建立共享资源的目录/database,并把服务器共享资源的目录(/home/wukongshare)挂载在/database下。通俗一点说类似于:你和同学共享一本书(共享资源),轮到你看书时,你需要把书从同学的书架(/home/wukongshare)转放在你自己的书架(/database)上,随后你才能随时查看、改写。转放的过程就是挂载。

mkdir /datatbase   //客户端创建共享目录
vim /etc/fstab//打开文件之后写入://192.168.153.129/wukongshare /database cifs credential=/root/auth.smb 0 0

现对写入内容的各参数进行解释:

  (1) //192.168.153.129/wukongshare 是cent0s2(服务器)的ip地址和共享会话名称,不要以为/wukongshare是共享目录的绝对路径,其实这个/只是起分割作用,wukongshare是共享会话名称,在samba.conf文件中可以查询得到(见第三节)

(2)/database 是centos1(客户端)的共享目录 也是服务器共享目录的挂载点,这里是绝对路径

(3)cifs :表明使用CIFS协议进行挂载

(4)credential=/root/auth.smb:指定用于访问远程共享的凭据文件,即使用/root/auth.smb文件中存储的凭据进行身份验证。

(5)两个0 0 是默认参数

随后,对fstab里的文件进行挂载

mount -a

4、在客户端创建文件夹kkk

在服务器的wukongshare下面能看见 kkk这个文件,同理在服务器的wukongshare下删除、创建文件时,在客户端的database里也能看见

六、思考与总结

1、挂载点问题

在第三节配置时共享文件是设置的/home/database,因为是家目录下的文件,需要考虑SElinux安全上下文的限制,在第三节配置时添加了一条安全上下文。由此,实现了linux和windows的通信。

在linux与linux之间共享资源时,客户端新建了/database文件作为共享文件,因为是在根目录下,此时没有改selinux的安全上下文。但是为什么要多此一举创建两个共享目录?能否直接将将/home/database当作挂载点?

答:亲测,可以的。先利用umount    /database   解挂载

然后在vim /etc/fstab 里把挂载点改在 /home/database上。

但是此时windows无法访问/home/database这个共享目录了,这是正常的,如果能访问那就危险了。想象,如果windows和centos1共享的文件能同时被centos2看到,那windows和centos1之间还有什么隐私可言?所以我们在设置挂载点的时候,最好不用之前的共享文件。

2.auth.smb文件里面的用户名和密码是是谁的重要吗?因为挂载后发现切换其他的用户也可以实现linux与linux之间的共享

答:重要。必须使用服务器(centos2)的账户和密码,否则挂载会失败。

这篇关于在VMware上利用Samba实现资源共享的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/974678

相关文章

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

Spring Security+JWT如何实现前后端分离权限控制

《SpringSecurity+JWT如何实现前后端分离权限控制》本篇将手把手教你用SpringSecurity+JWT搭建一套完整的登录认证与权限控制体系,具有很好的参考价值,希望对大家... 目录Spring Security+JWT实现前后端分离权限控制实战一、为什么要用 JWT?二、JWT 基本结构

Java实现优雅日期处理的方案详解

《Java实现优雅日期处理的方案详解》在我们的日常工作中,需要经常处理各种格式,各种类似的的日期或者时间,下面我们就来看看如何使用java处理这样的日期问题吧,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言一、日期的坑1.1 日期格式化陷阱1.2 时区转换二、优雅方案的进阶之路2.1 线程安全重构2

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB

Redis消息队列实现异步秒杀功能

《Redis消息队列实现异步秒杀功能》在高并发场景下,为了提高秒杀业务的性能,可将部分工作交给Redis处理,并通过异步方式执行,Redis提供了多种数据结构来实现消息队列,总结三种,本文详细介绍Re... 目录1 Redis消息队列1.1 List 结构1.2 Pub/Sub 模式1.3 Stream 结