在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

相关文章

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

如何通过Python实现一个消息队列

《如何通过Python实现一个消息队列》这篇文章主要为大家详细介绍了如何通过Python实现一个简单的消息队列,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录如何通过 python 实现消息队列如何把 http 请求放在队列中执行1. 使用 queue.Queue 和 reque

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import