文件服务器之二: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

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

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

相关文章

Python环境搭建—安装PyCharm开发工具

🥇作者简介:CSDN内容合伙人、新星计划第三季Python赛道Top1 🔥本文已收录于Python系列专栏: 零基础学Python 💬订阅专栏后可私信博主进入Python学习交流群,进群可领取Python视频教程以及Python相关电子书合…

基于SpringBoot的“网上书城管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“网上书城管理系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 系统首页界面图 用户注册界面…

传输层 --- TCP (上篇)

目录 1. TCP 1.1. TCP协议段格式 1.2. TCP的两个问题 1.3. 如何理解可靠性 1.4. 理解确认应答机制 2. TCP 报头中字段的分析 2.1. 序号和确认序号 2.1.1. 序号和确认序号的初步认识 2.1.2. 如何正确理解序号和确认序号 2.2. TCP是如何做到全双工的 2.3. 16位窗口大小…

[C++初阶]初识C++(二)

建议先看完上篇:[C初阶]初识C(一)—————命名空间和缺省函数-CSDN博客 本篇部分代码和文案来源:百度文库,知乎,比特就业课 1.函数重载 自然语言中,一个词可以有多重含义,人们可以通过上下文来判断该词真…

低代码革新:软件开发的未来潜力与创新路径探索

过去的一年,挑战与机遇并存。人们一边忧虑市场经济下行所带来的新的增长难题、裁员危机,一边惊叹于AIGC、量子技术等领域不断涌现新的创新成果。 时代发生了改变,传统“互联网”的模式已走入尾声,新一轮的科技革命与产业变革正在到…

当我入职了电商数据Python程序员时……

当年刚入职电商数据爬虫程序员这个岗位的时候,真的是慷慨激昂,富有激情和执着,每天开开心心投入到新工作中。然而,刚开始面对的第一个挑战是爬取电商网站的商品详情数据时遇到了滑块验证码。尝试了各种方法,但都无济于…

不妨借一步说话,你想知道的关于设计模式的种种

可以点击关于我联系我获取完整PDF (VX:mm14525201314) 1. 请列举出在 JDK 中几个常用的设计模式? 单例模式(Singleton pattern)用于 Runtime,Calendar 和其他的一些类中。 工厂模式(Factory pattern&…

java Web 辅助学习管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 java Web 辅助学习管理系统是一套完善的信息管理系统,结合java 开发技术和bootstrap完成本系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 前段主要技术 bootstr…

代码随想录-算法训练营day02【滑动窗口、螺旋矩阵】

专栏笔记:https://blog.csdn.net/weixin_44949135/category_10335122.html https://docs.qq.com/doc/DUGRwWXNOVEpyaVpG?uc71ed002e4554fee8c262b2a4a4935d8977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II ,总结 建议…

@RequstBody,IOC,DI,@Autowired,@Resource,lombok,

要使用Jason数据格式必须用post方法,因为是通过请求体传送的,get没有请求体 Data不包括有参构造和无参构造方法

AI绘图cuda与stable diffusion安装部署始末与避坑

stable diffusion的安装说起来很讽刺,最难的不是stable diffusion,而是下载安装cuda。下来我就来分享一下我的安装过程,失败了好几次,几近放弃。 一、安装cuda 我们都知道cuda是显卡CPU工作的驱动(或者安装官网的解释…

揭示GPU上的批处理策略

本文深入探讨了批处理在现代GPU上的工作原理,以及它是如何影响深度学习模型的推理速度,基于此,作者为模型优化提供了实用指导。通过优化批处理策略,研究人员和工程师可以更有效地利用计算资源,提高模型的推理效率。 &a…

攻防世界:mfw[WriteUP]

根据题目提示考虑是git库泄露 这里在地址栏后加.git也可以验证是git库泄露 使用GitHack工具对git库进行恢复重建 在templates目录下存在flag.php文件&#xff0c;但里面并没有flag 有内容的只有主目录下的index.php index.php源码&#xff1a; <?phpif (isset($_GET[page…

Scaling Law解析

文章目录 scaling law一个token的计算量幂律关系幂律规律实际指导 scaling law 幂律法则&#xff1a;对大模型数据量、参数量、算力之间的最优分配 不仅仅是对语言大模型&#xff0c;对主要基于tranformer的多模态大模型基本都有效 对于Decoder-only结构模型(GPT架构)&#…

解决Vue中仓库持久化的问题,不借助插件用原生JS实现仓库持久化。了解仓库的插件机制、监听的时机

1、演示 前言&#xff1a;目前Vue有两种仓库&#xff0c;一种是Vuex&#xff0c;一种是Pinia&#xff0c;懂得都懂&#xff0c;这里就不详细介绍这两者的区别了 2、什么是持久化 仓库里面的数据是需要跨越页面周期的&#xff0c;当页面刷新之后数据还在&#xff0c;在默认情况下…

【网站项目】平面设计课程在线学习平台系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

定风波:苏轼

定风波&#xff1a;苏轼 该片围绕诗文、书画、美食、旅游、民生等主题&#xff0c;多维度描绘苏东坡的为官之道、志趣审美和精神世界&#xff0c;深入解读苏东坡在21世纪的价值。 生平 1.出生于眉山 2.进京参加会考 3.母亲去世&#xff0c;回乡奔丧 4.开始担任官职 5.恰逢王…

《债务与国家的崛起》西方民主制度的金融起源 - 三余书屋 3ysw.net

债务与国家的崛起&#xff1a;西方民主制度的金融起源 你好&#xff0c;今天我们来聊聊由英国知名经济与金融历史学家詹姆斯麦克唐纳所著的《债务与国家的崛起》这本书。19世纪世界历史上发生了一次巨变&#xff0c;即“大分流”。当时西方通过工业革命实现了科技和经济的飞速…

Java 学习和实践笔记(51):二分法查找(折半检索)

二分法查找&#xff08;折半检索&#xff09;又叫binary search. 要在一堆数据中查找是否存在某一个已知数&#xff0c;二分法查找的步骤&#xff1a; 第一步&#xff0c;对数据实现排序 第二步&#xff0c;将该数与排序后的数据集的中间一个数进行比较 第三步&#xff0c;…

SAP S/4HANA的常见部署方式

SAP S/4HANA是SAP面向企业数字化转型推出一代商务ERP 套件&#xff0c;与传统的SAP ERP系统相比&#xff0c;它基于内存计算和先进的数据处理技术&#xff0c;提供更快的数据处理速度、实时分析和更好的用户体验。SAP S/4HANA可以根据企业的需求以多种部署方式进行实施&#xf…