在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

相关文章

Spring Security自定义身份认证的实现方法

《SpringSecurity自定义身份认证的实现方法》:本文主要介绍SpringSecurity自定义身份认证的实现方法,下面对SpringSecurity的这三种自定义身份认证进行详细讲解,... 目录1.内存身份认证(1)创建配置类(2)验证内存身份认证2.JDBC身份认证(1)数据准备 (2)配置依

利用python实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

PyQt6/PySide6中QTableView类的实现

《PyQt6/PySide6中QTableView类的实现》本文主要介绍了PyQt6/PySide6中QTableView类的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学... 目录1. 基本概念2. 创建 QTableView 实例3. QTableView 的常用属性和方法

PyQt6/PySide6中QTreeView类的实现

《PyQt6/PySide6中QTreeView类的实现》QTreeView是PyQt6或PySide6库中用于显示分层数据的控件,本文主要介绍了PyQt6/PySide6中QTreeView类的实现... 目录1. 基本概念2. 创建 QTreeView 实例3. QTreeView 的常用属性和方法属性

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

pandas中位数填充空值的实现示例

《pandas中位数填充空值的实现示例》中位数填充是一种简单而有效的方法,用于填充数据集中缺失的值,本文就来介绍一下pandas中位数填充空值的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是中位数填充?为什么选择中位数填充?示例数据结果分析完整代码总结在数据分析和机器学习过程中,处理缺失数