Linux实验记录:使用Samba或NFS实现文件共享

前言:

本文是一篇关于Linux系统初学者的实验记录。

参考书籍:《Linux就该这么学》

实验环境:

VmwareWorkStation 17——虚拟机软件

RedHatEnterpriseLinux[RHEL]8——红帽操作系统

备注:

  FTP实现了文件传输,而非文件共享。要想通过客户端直接在服务器上修改文件内容就要通过Samba文件共享服务。

Samba文件共享服务:

1987年,微软公司和因特尔公司共同制定了SMB(Server Messages Bolck,服务器消息块)协议,旨在解决局域网内的文件或打印机等资源共享问题,这也使得在多个主机之间共享文件变得越来越简单。

1991年,Tridgwell为了解决Linux系统与Windows系统之间的文件共享系统,基于SMB协议开发出了SMBServer服务程序。

Samba服务程序现在已经成为在Linux系统与Windows系统之间共享文件的最佳选择。

准备:

  Samba服务程序的配置:

安装Samba服务程序和一个samba-client软件包。

dnf install samba samba-client

打开Samba服务程序的主配置文件,删除【home】【printers】【print$】

Samba服务中的参数及作用:

security参数代表用户登录Samba服务时采用的验证方式:

share:代表主机无须验证密码。这相当于vsftpd服务的匿名公开访问模式

user:代表登录Samba服务时需要使用账号密码进行验证,、

domain:代表通过域控制器进行身份验证,用来限制用户的来源域

server:代表使用独立主机验证来访问用户提供的密码。

 在最早期的CentOS/RHEL系统中,Samba服务使用的是PAM(可插拔认证模块)来调用本地账号和密码信息。

RHEL8版本中,使用tdbsam数据库进行验证。这是一个专门用于保存Samba服务账号密码的数据库,用户需要用pdbedit命令进行独立的添加操作。

正文:

实验1:配置共享资源

全局配置参数用于设置整体的资源共享环境,对里面每一个独立的共享资源都有效。

区域配置参数则用于设置单独的共享资源,且仅对该资源有效。

参数作用
[database]

共享名称为database

comment = Do not arbitrarily modify警告用户不要最易修改数据库
path = /home/database共享目录为/home/database
public = no

关闭“所有人可见”

writable = yes允许写入

Step1:创建用于访问共享资源的账户信息

在RHEL8系统中,Samba服务程序默认使用的是用户密码认证模式(user)。

这种认证模式可以确保仅让有密码且受信任的用户访问共享资源。

Samba服务程序的数据库要求账户必须在当前系统中已存在,

pdbedit命令用于管理Samba服务程序的账户信息库。

id linuxprobe
pdbedit -a -u linuxprobe

账户:linuxprobe

密码:redhat

Step2:创建用于共享资源的文件目录

由于/home目录是系统中普通用户的家目录,因此还需要考虑应用于该目录的SELinux上下文所带来的限制。

查阅Samba帮助手册,正确的文件上下文应该是samba_share_t

修改完执行restorecon命令,就能让应用于目录的新SELinux安全上下文立即生效。

mkdir /home/database
chown -Rf linuxprobe:linuxprobe /home/database
semanage fcontext -a -t samba_share_t /home/database
restorecon -Rv /home/database

Step3:设置SELinux服务与策略,使其允许通过Samba服务程序访问普通用户家目录。

getsebool -a | grep samba
setsebool -P samba_enable_home_dirs on

Step4:在Samba服务程序的主配置文件中,写入共享信息。

vim /etc/samba/smb.conf
[global]workgroup = SAMBAsecurity = userpassdb backend = tdbsam
[database]comment = Do not arbitrarily modify the database filepath = /home/databasepublic = nowritable = yes              

 Samba服务程序的配置工作基本完毕。

Step5:重启smb服务并加入到启动项中,保证在重启后依然能够为用户持续提供服务

systemctl restart smb
systemctl enable smb

为了避免防火墙功能干扰,将iptables防火墙清空,再把Samba服务添加到firewalld防火墙中

iptables -F
iptables-save
firewall-cmd --zone=public --permanent --add-service=samba
firewall-cmd --reload

Step6:查看Samba服务状态

使用"systemctl status smb“命令查看服务器是否启动了Samba服务。

smbclient命令查看共享详情;

-U参数指定用户名称

-L参数列出共享清单

smbclient -U linuxprobe -L 192.168.31.128

实验2:Windows挂载共享

  无论Samba共享服务是部署Windows系统上还是部署在Linux系统上,通过Windows系统进行访问时,其步骤和方法都是一样的。

 实验3:Linux挂载共享

Samba不仅能解决Windows和Linux之间共享

还可以解决Linux和Linux之间的共享

主机名称操作系统IP地址
Samba共享服务器RHEL 8192.168.31.128
Linux客户端RHEL 8192.168.31.130
Windows客户端Windows 11 家庭中文版192.168.31.1

客户机:

dnf install cifs-utils
mkdir /database
mount -t cifs -o username=linuxprobe,password=redhat //192.168.31.128/database /database

 现在每次重启电脑后都要使用mount命令手动挂载远程目录。

可以按照Samba服务的用户名、密码、共享域的顺序将相关信息写入一个认证文件中。

让/etc/fstab文件和系统自动加载它。

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

vim auth.smb
username=linuxprobe
password=redhat
domain=SAMBA
chmod 600 auth.smb

将挂载信息写入/etc/fstab文件中,以确保共享挂载信息在服务器重启后依然生效:

mount -a

 看到了刚才在Windows上共享出的文件。

 

 总结:

ftp只能下载后修改,然后上传覆盖。

smb是在线修改的。

smb只能在Windows之间共享

samba可以在Linux和Windows之间共享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/449293.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

操作系统(10)----从写程序到程序运行

目录 一.从写程序到程序运行 二.链接 三.如何将逻辑地址转为物理地址 1.绝对装入 2.可重定位装入(静态重定位) 3.动态运行时装入(动态重定位) 一.从写程序到程序运行 程序员通过编辑器编辑源代码文件,通过编译后…

前端常见标签

<li> (List Item)&#xff1a;定义列表中的一个项目&#xff08;项&#xff09; <ul> (Unordered List)&#xff1a;定义无序列表 <ol> (Ordered List)&#xff1a;定义有序列表 <a> (Anchor Tag)&#xff1a;定义超链接 <ul><li>苹…

Datax问题记录

1、同步mysql&#xff1a;OS errno 24 - Too many open files 2023-11-20 12:30:04.371 [job-0] ERROR JobContainer - Exception when job run com.alibaba.datax.common.exception.DataXException: Code:[DBUtilErrorCode-07], Description:[读取数据库数据失败. 请检查您的…

Vue 上门取件时间组件

本文使用vue2.0elementui 制作一个上门取件时间组件&#xff0c;类似顺丰&#xff0c;样式如下&#xff1a; 大概功能&#xff1a;点击期望上门时间&#xff0c;下面出现一个弹框可以选择时间&#xff1a; 首先我们定义一些需要的数据&#xff1a; data() {return {isDropdown…

P1967 [NOIP2013 提高组] 货车运输

[NOIP2013 提高组] 货车运输 题目背景 NOIP2013 提高组 D1T3 题目描述 A 国有 n n n 座城市&#xff0c;编号从 1 1 1 到 n n n&#xff0c;城市之间有 m m m 条双向道路。每一条道路对车辆都有重量限制&#xff0c;简称限重。 现在有 q q q 辆货车在运输货物&#x…

delete、truncate和drop区别

一、从执行速度上来说 drop > truncate >> DELETE 二、从原理上讲 1、DELETE DELETE from TABLE_NAME where xxx1.1、DELETE属于数据库DML操作语言&#xff0c;只删除数据不删除表的结构&#xff0c;会走事务&#xff0c;执行时会触发trigger&#xff08; 触发器…

Nicn的刷题日常之打印菱形

目录 1.题目描述 2.解题思路 3.解题 1.题目描述 用C语言在屏幕上输出以下图案&#xff1a; 2.解题思路 仔细观察图形&#xff0c;可以发现&#xff0c;此图形中是由空格和*按照不同个数的输出组成的。 上三角&#xff1a;先输出空格&#xff0c;后输出*&#xff0c;每…

jvm基础篇之垃圾回收[3](垃圾回收器)

文章目录 分代GC代取划分原因垃圾回收器组合关系年轻代-Serial垃圾回收器老年代-SerialOld垃圾回收器年轻代-ParNew垃圾回收器老年代-CMS垃圾回收器年轻代-Parallel Scavenge垃圾回收器老年代-Parallel Old垃圾回收器 G1垃圾回收器G1内存结构G1回收方式年轻代回收混合回收FULL …

搭建k8s集群实战(四)k8s node 资源管理、避免系统无响应

Kubernetes 的节点可以按照 Capacity 调度。默认情况下 pod 能够使用节点全部可用容量。 这是个问题,因为节点自己通常运行了不少驱动 OS 和 Kubernetes 的系统守护进程。 除非为这些系统守护进程留出资源,否则它们将与 pod 争夺资源并导致节点资源短缺问题,从而导致系统无响…

OpenCV+ moviepy + tkinter 视频车道线智能识别项目源码

项目完整源代码&#xff0c;使用 OpenCV 的Hough 直线检测算法&#xff0c;提取出道路车道线并绘制出来。通过tkinter 提供GUI界面展示效果。 1、导入相关模块 import matplotlib.pyplot as plt import numpy as np import cv2 import os import matplotlib.image as mpimg …

React18构建Vite+Electron项目以及打包

一.先创建项目 cnpm create vite 选择React > JavaScript >cd react_vite > cnpm i >npm run dev 二.安装Electron依赖 指定版本相对稳定 cnpm i electron19.0.10 -D cnpm i vite-plugin-electron0.9.3 -D cnpm i electron-builder23.0.1 -D三.创建electron目录…

Vue中的计算属性和侦听器(监视器)

一、computed计算属性 1.概念 基于现有的数据&#xff0c;计算出来的新属性。 依赖的数据变化&#xff0c;自动重新计算。 2.语法 声明在 computed 配置项中&#xff0c;一个计算属性对应一个函数 使用起来和普通属性一样使用 {{ 计算属性名}} 3.注意 computed配置项和da…