当前位置: 首页 > news >正文

文件服务器之二:SAMBA服务器

文章目录

  • 什么是SAMBA
    • SAMBA的发展历史与名称的由来
    • SAMBA常见的应用
  • SAMBA服务器基础配置
    • 配置共享资源
    • Windows挂载共享
    • Linux挂载共享

什么是SAMBA

下图来自百度百科

image-20240401165038766

SAMBA的发展历史与名称的由来

Samba是一款开源的文件共享软件,它基于SMB(Server Message Block,服务器消息块)协议,并且让Linux系统能够与Windows系统进行文件共享。Samba的开发始于1991年,由当时还在读大学的Tidgwell为了解决Linux与Windows系统之间文件共享的问题而创建。他开发了SMBServer服务程序,通过简单的配置,使得Linux与Windows系统之间的文件共享变得简单而便捷。然而,当他想要将该软件命名为"SMBServer"并注册商标时,商标局以"SMB是没有意义的字符"为由拒绝了申请。后来,Tidgwell查看词典时偶然发现了“Samba”这个拉丁舞蹈的名字,而且它恰好包含了“SMB”。因此,Samba成为了这款软件的新名字,并且沿用至今。

SAMBA常见的应用

主要功能

  • 共享文件与打印机服务
  • 可以提供用户登陆SAMBA主机时的身份认证,以提供不同身份用户的个别数据
  • 可以进行Windows网络上的主机名解析
  • 可以进行设备的共享

SAMBA服务器的应用

  • 利用软件直接编辑WWW主机上面的网页数据
  • 做成可直接连接的文件服务器
  • 打印机服务器

SAMBA服务器基础配置

安装

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

配置文件/etc/samba/smb.conf

[root@localhost ~]# cat /etc/samba/smb.conf
[global]workgroup = SAMBAsecurity = userpassdb 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
参数作用
[global]Samba配置文件的全局设置
workgroup = SAMBA设置Samba服务器所在的工作组名称
security = userSamba服务器的安全性模式,共4种
passdb backend = tdbsam用于存储用户账号信息的后端数据库
printing = cups打印服务协议
printcap name = cups打印服务名称
load printers = yes是否加载打印机
cups options = raw打印机的选项
[homes]配置个人用户的家目录的访问权限和选项
comment = Home Directories描述信息
valid users = %S, %D%w%S指定允许访问该共享目录的用户列表
browseable = No共享信息是否在"网上邻居"中可见
read only = No共享目录是否只读
inherit acls = Yes是否继承文件的访问控制列表(ACL)
[printers]用于配置打印机的共享
comment = All Printers描述信息
path = /var/tmp共享路径
printable = Yes指定打印机是否可用于打印
create mask = 0600指定创建文件时的权限掩码
browseable = No共享信息是否在"网上邻居"中可见
[print$]用于配置打印机驱动程序的共享
comment = Printer Drivers描述信息
path = /var/lib/samba/drivers共享路径
write list = @printadmin root指定允许写入该共享目录的用户列表
force group = @printadmin强制所创建文件的所属组为指定的组
create mask = 0664指定创建文件时的权限掩码
directory mask = 0775指定创建目录时的权限掩码

security 参数代表用户登陆Samba服务时采用的验证方式。四种

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

配置共享资源

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

pdbedit 命令用于管理 Samba 服务程序的账户信息数据库,格式为【pdbedit [选项]账户】。在第一次把账户信息写人到数据库时需要使用【-a】参数,以后在执行修改密码、删除账户等操作时就不再需要该参数了

Samba服务程序的数据库要求账户必须在当前系统中已经存在,否则日后创建文件时将导致文件的权限属性混乱不堪,由此引发错误

参数作用
-a 用户名建立Samba用户
-x 用户名删除Samba用户
-L列出用户列表
-Lv列出用户详细信息的列表
[root@localhost ~]# id csq
用户id=1001(csq) 组id=1001(csq)=1001(csq)
[root@localhost ~]# pdbedit -a -u csq
new password:         # 输入该账户在Samba服务数据库种的密码
retype new password:  # 再次输入密码进行确认
Unix username:        csq   # Samba账号的用户名
NT username:                # Samba账号的Windows用户名为空
Account Flags:        [U          ]   # 账号标志为"U",表示账号可用
User SID:             S-1-5-21-1005164572-3626894132-1712046424-1000 # Samba账号的SID标识
Primary Group SID:    S-1-5-21-1005164572-3626894132-1712046424-513  # 账号的主组的SID标识
Full Name:            
Home Directory:       \\LOCALHOST\csq       # 账号的主目录路径
HomeDir Drive:        
Logon Script:         
Profile Path:         \\LOCALHOST\csq\profile  # 账号的配置文件路径
Domain:               LOCALHOST               # 账号所属的域名
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:          三, 06 22036 10:06:39 EST
Kickoff time:         三, 06 22036 10:06:39 EST
Password last set:    一, 01 42024 09:43:46 EDT
Password can change:  一, 01 42024 09:43:46 EDT
Password must change: never # 账号密码的过期时间设置为"never",即永不过期
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
# 登录小时的位图,其中所有位都是1,表示没有限制登录时间

第二步、创建用于共享资源的文件目录

创建用于共享资源的文件目录。在创建时,不仅要考虑到文件读写权限的问题,而且由于home 目录是系统中普通用户的家目录,因此还需要考虑应用于该目录的 SELimnux 安全上下文所带来的限制。在 Samba 的帮助手册中显示,正确的文件上下文值应该是 samba_share,所以只需要修改完毕后执行restorecon 命令,就能让应用于目录的新 SELinux 安全上下文立即生效。

[root@localhost ~]# mkdir /home/database
[root@localhost ~]# chown -R csq:csq /home/database/
[root@localhost ~]# semanage fcontext -a -t samba_share_t /home/database
[root@localhost ~]# restorecon -Rv /home/database/
Relabeled /home/database from unconfined_u:object_r:user_home_dir_t:s0 to unconfined_u:object_r:samba_share_t:s0

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

执行 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

第四步、在Samba服务程序的主配置文件种,根据下表下入共享信息

Samba的主配置文件(通常是/etc/samba/smb.conf)可以设置全局配置参数和区域配置参数。全局配置参数适用于整个Samba服务器环境,对所有共享资源都有效。区域配置参数用于设置单独的共享资源,并且只对该资源有效。

创建一个共享资源非常简单,只需将相关参数添加到Samba服务程序的主配置文件中,并重新启动该服务即可生效。

参数作用
[database]共享名称为database
comment = Do not arbitrarily modify the database file警告用户不要随意修改数据库
path = /home/database共享目录为/home/database
public = no关闭 “所有人可见”
writable = yes允许写入操作
[root@localhost ~]# vim /etc/samba/smb.conf
# 将使用不到的行注释掉
[global]workgroup = SAMBAsecurity = userpassdb backend = tdbsam
#        printing = cups
#        printcap name = cups
#        load printers = yes
#        cups options = raw
[database]comment = Do not arbitrarily modify the database filepath = /home/databasepublic = nowritable = yes
# 
# [homes]
#         comment = Home Directories
#         valid users = %S, %D%w%S
#         browseable = No
#         read only = No
#         inherit acls = Yes# [printers]
#         comment = All Printers
#         path = /var/tmp
#         printable = Yes
#         create mask = 0600
#         browseable = No
# 
# [print$]
#         comment = Printer Drivers
#         path = /var/lib/samba/drivers
#         write list = @printadmin root
#         force group = @printadmin
#         create mask = 0664
#         directory mask = 0775

第五步、Samba服务程序的配置工作基本完毕

重启生效修改的配置文件

[root@localhost ~]# systemctl restart smb
[root@localhost ~]# systemctl enable smb
[root@localhost ~]# systemctl status smb # 查看是否启动成功
[root@localhost ~]# firewall-cmd --add-service=samba --permanent
success
[root@localhost ~]# firewall-cmd --reload
success

第六步、查看Samba服务都共享了哪些目录,使用smbclient来查看共享详情

[root@localhost ~]# smbclient -U csq -L 192.168.200.10
# -U:指定了用户名称
# -L:列出共享清单
Password for [SAMBA\csq]:Sharename       Type      Comment---------       ----      -------database        Disk      Do not arbitrarily modify the database file# Sharename:共享名称# Type:共享类型,指示该共享是一个磁盘(Disk)#Comment:对共享的描述或备注信息IPC$            IPC       IPC Service (Samba 4.17.5)
SMB1 disabled -- no workgroup available # 这个报错可以不用管

Windows挂载共享

要在Windows系统访问共享资源,只需要单机 Windows系统的开始,输入两个反斜杠,如何再添加服务器的IP地址即可

然后就可以看到Samba共享服务的登陆界面了

输入对应的账号名称密码即可访问

创建文件写入信息

image-20240401224203296

[root@localhost ~]# ls /home/database/
hello.txt
[root@localhost ~]# smbclient  //192.168.200.10/database -U csq  # 在Linux端登陆查看
Password for [SAMBA\csq]:
Try "help" to get a list of possible commands.
smb: \> ls.                                   D        0  Mon Apr  1 10:41:58 2024..                                  D        0  Mon Apr  1 10:40:17 2024hello.txt                           A        9  Mon Apr  1 10:41:51 202417197056 blocks of size 1024. 12929692 blocks available

Linux挂载共享

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

[root@localhost ~]# yum install -y cifs-utils

安装完成后,在Linux创建一个用于挂载Samba服务共享资源的目录。这个目录可以与服务器上的共享名称同名,以便于日后查找

[root@localhost ~]# mkdir /database
[root@localhost ~]# mount -t cifs -o username=csq,password=000000 //192.168.200.10/database /database/
[root@localhost ~]# df -hT /database/
文件系统                  类型  容量  已用  可用 已用% 挂载点
//192.168.200.10/database cifs   17G  4.1G   13G   25% /database

如果在每次重启电脑后都需要使用 mount 命令手动挂载远程共享目录,很麻烦,可以按照 Samba 服务的用户名、密码、共享域的顺序将相关信息写人一个认证文件中,然后让/etc/fstab文件和系统自动加载它。为了保证不被其他人随意看到,最后把这个认证文件的权限修改为仅root 管理员才能够读写:

[root@localhost ~]# vim auth.smb
username=csq
password=000000
domain=SAMBA
[root@localhost ~]# chmod 600 auth.smb 
[root@localhost ~]# vim /etc/fstab 
# 添加如下信息
//192.168.200.10/database   /database           cifs  credentials=/root/auth.smb 0 0 
[root@localhost ~]# umount /database 
[root@localhost ~]# mount -a         
[root@localhost ~]# df -hT /database/     
文件系统                  类型  容量  已用  可用 已用% 挂载点
//192.168.200.10/database cifs   17G  4.1G   13G   25% /database
[root@localhost ~]# ls /database/
hello.txt

相关文章:

文件服务器之二:SAMBA服务器

文章目录 什么是SAMBASAMBA的发展历史与名称的由来SAMBA常见的应用 SAMBA服务器基础配置配置共享资源Windows挂载共享Linux挂载共享 什么是SAMBA 下图来自百度百科 SAMBA的发展历史与名称的由来 Samba是一款开源的文件共享软件,它基于SMB(Server Messa…...

20.安全性测试与评估

每年都会涉及;可能会考大题;多记!!! 典型考点:sql注入、xss; 从2个方面记: 1、测试对象的功能、性能; 2、相关设备的工作原理; 如防火墙,要了解防…...

阿里巴巴实习面经

本人bg:浙江大学,计算机研二,本科也是浙大计算机专业的。 在阿里巴巴达摩院实习,算法岗,我是去年拿到的阿里巴巴达摩院的实习offer,这个过程还是比较惊心动魄,所以我称之为惊心动魄版本&#xf…...

javaweb学习(day11-监听器Listener过滤器Filter)

一、监听器Listener 1 Listener介绍 Listener 监听器它是 JavaWeb 的三大组件之一。JavaWeb 的三大组件分别是:Servlet 程 序、Listener 监听器、Filter 过滤器 Listener 是 JavaEE 的规范,就是接口 监听器的作用是,监听某种变化(一般就是对…...

教你快速认识Java中的抽象类和接口

目录 引言 抽象类(Abstract Class) 抽象类的概念 抽象类的图标 抽象类的语法 抽象类的特点 接口(Interface) 接口的概念 接口的图标 接口的语法 接口的特点 接口的使用 接口的意义 抽象类与接口的区别 Object类 结…...

Linux第5课 Linux目录介绍

文章目录 Linux第5课 Linux目录介绍一、打开系统目录二、查看系统目录 Linux第5课 Linux目录介绍 系统目录就是指操作系统的主要文件存放的目录,目录中的文件直接影响到系统是否正常工作,了解这些目录的功能,对使用系统会有很大的帮助。 一…...

GitHub要求2FA?不慌,有它(神锁离线版)帮你!

GitHub宣布,到 2023 年底,所有用户都必须要启用双因素身份验证 (2FA),不能只用密码啦。 说实话,听到这消息小编是非常高兴的。 正如GitHub的首席安全官Mike Hanley所说,软件供应链是从开发者开始的,保护开…...

C语言第四十弹---预处理(下)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 预处理 1、#和## 1.1 #运算符 1.2、##运算符 2、命名约定 3、#undef 4、命令行定义 5、条件编译 6、头文件的包含 6.1、头文件被包含的方式 6.1.1、本地…...

SYS-2722音频分析仪SYS2722

181/2461/8938产品概述: Audio Precision 2722 音频分析仪是 Audio Precision 屡获殊荣的 PC 控制音频分析仪的旗舰型号,长期以来一直是音频设备设计和测试的全球公认标准。功能齐全的 SYS-2722 提供了测试转换器技术最新进展所需的无与伦比的失真和噪声…...

下载页面上的视频

引言:有些页面上的视频可以直接右键另存为或者F12检索元素找到视频地址打开后保存,但有些视频页面是转码后的视频,不能直接另存为视频格式,可以参考下本方法 以该页面视频为例:加载中...点击查看详情https://wx.vzan.c…...

静态路由协议实验综合实验

需求: 1、除R5的换回地址已固定外,整个其他所有的网段基于192.168.1.0/24进行合理的IP地址划分。 2、R1-R4每台路由器存在两个环回接口,用于模拟连接PC的网段;地址也在192.168.1.0/24这个网络范围内。 3、R1-R4上不能直接编写到…...

qt MVC软件设计模式

在Qt中使用MVC(Model-View-Controller)软件设计模式可以帮助你将数据模型、用户界面和控制逻辑有效地分离,从而使得代码更清晰,更易于维护和扩展。以下是在Qt中使用MVC模式的一般思路: Model(模型&#xff…...

代码随想录刷题随记15-二叉树回溯

代码随想录刷题随记15-二叉树回溯 110.平衡二叉树 leetcode链接 一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 求深度和求高度的区别: 求深度可以从上到下去查 所以需要前序遍历(中左右&#xff…...

基于SpringBoot Vue养老院管理

一、📝功能介绍 基于SpringBoot Vue养老院管理 角色:管理员、企业、老人子女、老人 管理员:管理员登录进入养老院管理系统可以对系统首页、个人中心、服务人员管理、老人管理、老人子女管理、老人档案管理、社区活动管理、活动记录管理、床…...

盘点编程方法论中的一些思想

背景 在日常编程开发中,虽然不同公司,业务不同,语言不同,但是工作久了,我们会发现一些编程思想几乎是不变的。这些编程思想,往往来自于大量实际问题场景的方法总结,可以很好的应对某一类问题。如…...

通过电机转速计算主轴旋转单圈所需时间(CODESYS ST代码)

1、伺服丝杠系统常用算法功能块 伺服丝杠系统常用算法功能块-CSDN博客文章浏览阅读353次。这篇博客主要介绍伺服、丝杠系统常用的运算功能块,其它相关运算可以查看下面文章链接:信捷PLC脉冲频率、位移、转速相关计算(C语言编程应用)_RXXW_Dor的博客-CSDN博客。https://rxxw-…...

多线程的入门(二)线程实现与初步使用

1.实现Runable接口 实现Runable接口,实现run方法; 这种方式创建的线程实现类执行时需要创建Thread实例去运行该任务 示例如下: package com.example.springbootdamo.Thread;import org.apache.logging.log4j.LogManager; import org.apach…...

数据结构(初阶)第二节:顺序表

数据结构(初阶)第一节:数据结构概论-CSDN博客 从本文正式进入对数据结构的讲解,开始前友友们要有C语言的基础,熟练掌握动态内存管理、结构体、指针等章节,方便后续的学习。 目录 顺序表(Sequen…...

鸿蒙OS元服务开发:【(Stage模型)设置应用主窗口】

一、设置应用主窗口说明 在Stage模型下,应用主窗口由UIAbility创建并维护生命周期。在UIAbility的onWindowStageCreate回调中,通过WindowStage获取应用主窗口,即可对其进行属性设置等操作。还可以在应用配置文件中设置应用主窗口的属性&…...

lua学习笔记6(经典问题输出99乘法表)

print("************for循环的99乘法表*************") for i 1, 9 dolocal line "" -- 创建一个局部变量来累积每行的输出--local 是一个关键字,用于声明一个局部变量。for j 1, i doline line .. j .. "*" .. i .. ""…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

在rocky linux 9.5上在线安装 docker

前面是指南&#xff0c;后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...