26 使用 Samba 实现文件共享

Samba 文件共享服务

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

详细配置请转Samba服务

安装

[root@localhost ~]# yum install samba -y

Samba 服务程序的主配置文件,只有 37 行。

第 5~8 行参数中所提到的 cups的全称为 Common UNIX Printing System(通用 UNIX 打印系统),依然是用于打印机或打印服务器的。

第 17~22 行代表共享每位登录用户的家目录内容。虽然在某些情况下这可以更方便地共享文件,但这个默认操作着实有些危险,

第 24~29 行是用 SMB 协议共享本地的打印机设备,方便局域网内的用户远程使用打印机设备。当前我们没有打印机设备,

第 31~37 行依然为共享打印机设备的参数,

上面说的都可以删掉

[root@localhost ~]# cat /etc/samba/smb.conf

[global]
        workgroup = SAMBA
        security = user

        passdb backend = tdbsam
[root@localhost ~]#

security 参数代表用户登录 Samba 服务时采用的验证方式。总共有 4种可用参数。

  • share:代表主机无须验证密码。这相当于 vsftpd 服务的匿名公开访问模式,比较方便,但安全性很差。
  •  user:代表登录 Samba 服务时需要使用账号密码进行验证,通过后才能获取到文件。这是默认的验证方式,最为常用。
  • domain:代表通过域控制器进行身份验证,用来限制用户的来源域。
  •  server:代表使用独立主机验证来访用户提供的密码。这相当于集中管理账号,并不常用。

配置共享资源 

Samba 服务程序的主配置文件包括全局配置参数和区域配置参数。

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

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

创建共享资源的方法很简单,只要将参数写入到 Samba 服务程序的主配置文件中,然后重启该服务即可。 

 [database]         共享名称为 database
comment = 。。。。  注释,说明
path = /home/database         共享目录为/home/database
public = no         关闭“所有人可见”
writable = yes         允许写入操作

 Samba 服务程序默认使用的是用户密码认证模式(user)。只有建立账户信息数据库之后,才能使用用户密码认证模式。另外,Samba 服务程序的数据库要求账户必须在当前系统中已经存在,

pdbedit

用于管理 Samba 服务程序的账户信息数据库,“pdbedit [选项]账户”。

在第一次把账户信息写入到数据库时需要使用-a 参数,以后在执行修改密码、删除账户等操作时就不再需要该参数了。

-a 用户名 建立 Samba 用户
-x 用户名 删除 Samba 用户

-u 用户名,不会 再询问你这些信息以创建新的用户账号。
-L 列出用户列表
-Lv 列出用户详细信息的列表

[root@localhost ~]# pdbedit -a -u trick
new password:
retype new password:
Unix username:        trick
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-4277232344-3989409239-715028539-1000
Primary Group SID:    S-1-5-21-4277232344-3989409239-715028539-513
Full Name:            trick
Home Directory:       \\localhost\trick
HomeDir Drive:
Logon Script:
Profile Path:         \\localhost\trick\profile
Domain:               LOCALHOST
Account desc:
Workstations:
Munged dial:
Logon time:           0
Logoff time:          Wed, 06 Feb 2036 23:06:39 CST
Kickoff time:         Wed, 06 Feb 2036 23:06:39 CST
Password last set:    Wed, 31 Jan 2024 18:13:04 CST
Password can change:  Wed, 31 Jan 2024 18:13:04 CST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@localhost ~]#

创建用于共享资源的文件目录。在创建时,要考虑到文件读写权限的问题,而且/home 目录是系统中普通用户的家目录。

递归地将 /home/database 目录下的所有文件和子目录的所有者(owner)和所属组(group)都修改为 trick

[root@localhost ~]# mkdir /home/database
[root@localhost ~]# chown -Rf trick:trick /home/database/

正确的文件上下文值应该是 samba_share_t,所以只需要修改完毕后执行restorecon 命令,就能让应用于目录的新SELinux 安全上下文立即生效。 

[root@localhost ~]# semanage fcontext -a -t samba_share_t /home/database/
[root@localhost ~]# restorecon -Rv /home/database/

 执行 getsebool 命令,筛选出所有与 Samba 服务程序相关的 SELinux 域策略,根据策略的
名称(和经验)选择出正确的策略条目进行开启

[root@localhost ~]# getsebool -a |grep samba
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_load_libgfapi --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
tmpreaper_use_samba --> off
use_samba_home_dirs --> off
virt_use_samba --> off
[root@localhost ~]# setsebool -P samba_enable_home_dirs on

配置文档

[root@localhost ~]# vim /etc/samba/smb.conf
[global]
        workgroup = SAMBA
        security = user
        passdb backend = tdbsam
[database]
        comment = 不能删除数据库里面的文件
        path = /home/database
        public = no
        writable = yes

 重启 smb 服务并加入到启动项中

[root@localhost ~]# systemctl restart smb
[root@localhost ~]# systemctl enable smb
Created symlink /etc/systemd/system/multi-user.target.wants/smb.service → /usr/lib/systemd/system/smb.service.

将 iptables 防火墙清空,再把 Samba 服务添加到firewalld 防火墙中,

[root@localhost ~]# systemctl restart smb
[root@localhost ~]# systemctl enable smb
Created symlink /etc/systemd/system/multi-user.target.wants/smb.service → /usr/lib/systemd/system/smb.service.
[root@localhost ~]# iptables -F
[root@localhost ~]# iptables-save
[root@localhost ~]# firewall-cmd --zone=public --permanent --add-service=samba
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# systemctl status smb               ● smb.service - Samba SMB Daemon
   Loaded: loaded (/usr/lib/systemd/system/smb.service>
   Active: active (running) since Wed 2024-01-31 18:25>
     Docs: man:smbd(8)
           man:samba(7)
           man:smb.conf(5)
 Main PID: 78883 (smbd)
   Status: "smbd: ready to serve connections..."
    Tasks: 4 (limit: 12391)
   Memory: 33.6M
lines 1-10

测试

输入用户名,密码(Samba 服务程序使用的账户信息数据库中trick的密码,不是系统用户trick的Miami) 

 可以执行查看、写入、更名、删除文件操作

Linux 挂载共享

Samba 服务程序还可以实现 Linux 系统之间的文件共享。

# dnf install cifs-utils

安装好软件包后,在 Linux 客户端创建一个用于挂载 Samba 服务共享资源的目录。这个
目录可以与服务器上的共享名称同名,

mount 命令中的-t 参数用于指定协议类型,

-o 参数用于指定用户名和密码,最后追加上服务器 IP 地址、共享名称和本地挂载目录即可。

 mkdir /database
mount -t cifs -o username=linuxprobe,password=redhat //192.168.2.100/database /database

可以按照 Samba 服务的用户名、密码、共享域的顺序将相关信息写入一个认证文
件中,然后让/etc/fstab 文件和系统自动加载它 

vim auth.smb
username=trick
password=trick
domain=SAMBA

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

//192.168.2.100/database database cifs credentials=/root/auth.smb 0 0

 NFS(网络文件系统)

 autofs 自动挂载服务

        autofs 自动挂载服务可以帮我们解决。与 mount 命令不同,autofs 服务程序是一种 Linux 系统守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统,autofs 服务程序则是在用户需要使用该文件系统时才去动态挂载,从而节约了网络资源和服务器的硬件资源。

 安装

dnf install autofs

在 autofs 服务程序的主配置文件中需要按照“挂载目录 子配置文件”的格式进行填写。挂载目录是设备挂载位置的上一级目录。

例如,光盘设备一般挂载到/media/cdrom 目录中,那么挂载目录写成/media 即可。

对应的子配置文件则是对这个挂载目录内的挂载设备信息作进一步的说明。子配置文件需要用户自行定义,文件名字没有严格要求,但后缀建议以.misc 结束。

vim /etc/auto.master
  1 #
  2 # Sample auto.master file
  3 # This is a 'master' automounter map and it has the following format:
  4 # mount-point [map-type[,format]:]map [options]
  5 # For details of the format look at auto.master(5).
  6 #
  7 /media /etc/iso.misc
  8 /misc   /etc/auto.misc

        在子配置文件(iso.misc)中,应按照“挂载目录 挂载文件类型及权限 :设备名称”的格式进行填写。
        例如,要把光盘设备挂载到/media/iso 目录中,可将挂载目录写为 iso,而-fstype 为文件系统格式参数,iso9660 为光盘设备格式,ro、nosuid 及 nodev 为光盘设备具体的权限参数,/dev/cdrom则是定义要挂载的设备名称。

vim /etc/iso.misc
iso -fstype=iso9660,ro nosuid,nodev, :/dev/cdrom

配置完成后再顺手将 autofs 服务程序启动并加入到系统启动项中:

systemctl start autofs
systemctl enable autofs

 我们可以使用 cd 命令切换到这个 iso 子目录中,而且光盘设备会被立即自动挂载上,然后也就能顺利查看光盘内的内容了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

仰暮计划|“用心感悟使我获取了艺术真谛,自律如始让我获得了人生成功,我将继续在艺术道路上走下去”

口述人:郭敬东(男) 整理人:马静 口述人与整理人关系:姥爷与外孙女 口述人基本信息:现60岁,1963年出生于湖北省大悟县刘集镇金鼓村,1987年移居到河南省焦作市,现居河南省焦作市高新区。 引言:在得知要讲述自己的经历…

企业数字化转型面临什么挑战?

数字化转型是一个复杂且持续的过程,涉及将数字技术集成到组织的各个方面,从根本上改变组织的运营方式和为客户提供价值的方式。虽然具体的挑战可能因企业的性质和规模而异,但一些常见的挑战包括: 1.抵制变革: 文化阻…

STM32单片机的基本原理与应用(七)

超声波测距实验 基本原理 超声波测距实验是STM32单片机通过控制HC-SR04超声波模块,使其发送超声波,遇到物体反射回超声波来实现距离测量,其原理就是在发射超声波到接收超声波会有一段时间,而超声波在空气中传播的速度为声速&…

python打包exe,并发布windows服务实践

操作实践 1、编写python程序,按照自己的需求编写 以下是案例 # -*- coding:utf-8 -*- import win32serviceutil import win32service import win32event import win32timezone #不加导入,打包后运行会报错,原因未知,暂时不…

小白Linux学习笔记-Linux内核

Linux内核 文章目录 Linux内核WHEREWHATmoudules.dep 文件depmod 命令depmod 实验lsmod 命令modinfo 命令内核模块的观察实验 内核模块的加载与移除:insmod, modprobe, rmmodinsmod 命令modprobe 命令rmmod 命令内核模块的加载与移除实验 内核模块的额外参数设定:/etc/modprobe…

二道经典OJ题带你入门回溯剪枝算法

风起于青萍之末 浪成于微澜之间 🎥个人主页 🔥个人专栏 🎥前期回顾-环形链表 目录 回溯算法的简介 N皇后问题 思路 代码测试 N皇后 思路 判断一竖列是否有皇后 判断对角线是否有皇后 代码测试 回溯算法的简介 回溯是递归的副产品&#xff0…

计算机设计大赛 深度学习+python+opencv实现动物识别 - 图像识别

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数:3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 inception_v3网络5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 *…

5-2、S曲线计算【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】,查看本系列全部文章 摘要:本节介绍S曲线的基本变换,将基本形式的S曲线变换成为任意过两点的S曲线,为后续步进电机S曲线运动提供理论支撑 一.计算目标 ①计算经过任意不同两点的S曲线方程 ②可调节曲线平…

Zephyr NRF7002 实现AppleJuice

BLE的基础知识 ble的信道和BR/EDR的信道是完全不一样的。但是范围是相同的,差不多也都是2.4Ghz的频道。可以简单理解为空中有40个信道0~39信道。两个设备在相同的信道里面可以进行相互通信。 而这些信道SIG又重新编号: 这个编号就是把37 38 39。 3个信道…

「HarmonyOS」CustomDialogController自定义弹窗使用方法

需求背景: 在开发的过程中,总会遇到一些功能需要使用到弹窗进行信息的输入和修改,如用户个人信息的修改;在UI设计上每个App通常都会有各自的样式,而不是使用系统的标准样式,所以通常我们需要进行自定义弹窗…

C++学习Day04之常函数和常对象

目录 一、程序及输出1.1 常函数1.1.1 不能修改对象的成员变量1.1.2 常函数可以被常对象和非常对象调用 1.2 常对象1.2.1 对象的成员变量不能被修改1.2.2 只能调用常函数,不能调用非常函数1.2.3 const_cast 调用非常函数 1.3 常函数中或常对象修改成员变量 二、分析与…

DevOps落地笔记-17|度量指标:寻找真正的好指标?

前面几个课时端到端地介绍了软件开发全生命周期中涉及的最佳实践,经过上面几个步骤,企业在进行 DevOps 转型时技术方面的问题解决了,这个时候我们还缺些什么呢?事实上很多团队和组织在实施 DevOps 时都专注于技术,而忽…

zxxxxczzvdsgbhfdb

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 磁盘满的本质分析 专栏:《Linux从小白到大神》 | 系统学习Linux开发、VIM/GCC/GDB/Make工具…

【Docker】.NET Core 6.0 webapi 发布上传到Docker Desktop并启动运行访问,接口返回数据乱码解决方法

欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《Docker容器》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对…

进程控制(Linux)

进程控制 一、进程创建1. 再识fork2. 写时拷贝 二、进程终止前言——查看进程退出码1. 退出情况正常运行,结果不正确异常退出 2. 退出码strerror和errno系统中设置的错误码信息perror异常信息 3. 退出方法exit和_exit 三、进程等待1. 解决等待的三个问题2. 系统调用…

使用pandas将excel转成json格式

1.Excel数据 2.我们想要的JSON格式 {"0": {"raw_data1": "Sam","raw_data2": "Wong","raw_data3": "Good","layer": "12v1"},"1": {"raw_data1": "Lucy…

外汇天眼:大量的平庸操作无济于事,少数的杰出操作改变人生

回顾我们的人生,道路虽然漫长,经历虽然众多,但紧要处其实只有关键的几步。 在关键时刻处理得最好的人就会拥有最成功的事业; 回顾我们所交过的朋友,虽然数量像天上的繁星,但真正对自己的人生有重大影响的,不…

NUUO 网络摄像头命令执行漏洞

一、设备简介 NUUO NVR是中国台湾省NUUO公司旗下的一款网络视频记录器,该设备存在远程命令执行漏洞,攻击者可利用该漏洞执行任意命令,进而获取服务器的权限。 网络视频记录器的CPU为Marvell Kirkwood 88F6281,CPU架构为基于ARMv5…

LLM(大语言模型)——大模型简介

目录 概述 发展历程 大语言模型的概念 LLM的应用和影响 大模型的能力、特点 大模型的能力 涌现能力(energent abilities) 作为基座模型支持多元应用的能力 支持对话作为统一入口的能力 大模型的特点 常见大模型 闭源LLM(未公开源…

GADM 4.1 全球国家行政区划下载

扫描文末二维码,关注微信公众号:ThsPool 后台回复g004,领取最新 GADM 4.1 全球国家行政区划 GADM概述 GADM,全称 Database of Global Administrative Areas,是一个开放获取的全球行政区划数据库,包含各国、…