配置与管理Samba服务器(详细教程)

news2024/12/26 22:39:50

目录

一、基础理论

二、samba工作流程

三、项目实训

3.1目的

3.2准备工作

 3.2.1服务器安装samba服务软件包

 3.2.2客户端安装软件包

3.3配置Samba服务

 3.3.1开启Samba服务,并设置开启自启动

 3.3.2创建共享文件夹

 3.3.3创建群组

 3.3.4修改文件用户权限

 3.3.5修改配置文件

​ 3.3.6设置samba服务用户

 3.3.7让samba服务被安全上下文允许使用

3.4测试结果 

 Windows客户端(Win 10)

 Linux客户端

一、基础理论

samba最先在Linux和Windows两个平台之间架起了一座桥梁,正式由于Samba的出现,我们才可以在Linux系统和Windows系统之间互相通信,如复制文件,实现不同操作系统之间的资源共享等,可以将其架设成一个功能非常强大的文件服务器,也可以将其架设成打印服务器提供本地和远程联机打印,甚至可以使用Samba Server完全取代NT/2K/2K3中的域控制器,对域进行管理也非诚方便。

Samba服务功能强大,这与其通信基于SMB协议有关。SMB不仅提供目录和打印机共享,还支持认证,权限设置。在早期,SMB运行与NBT协议上,使用UDP的 137、138、端口,后期SMB经过开发,可以直接运行与TCP/IP上,没有额外的NBT层,使用TCP的445端口。

二、samba工作流程

  1. 协议协商。  客户端在访问Samba服务器时,发送negprot指令数据包,告知目标计算机其支持的SMB类型,Samba服务器根据客户端的情况,选择最优的SMB类型并做出回应
  2. 建立连接。  当SMB类型确认后,客户端会发送session setup 指令数据包,提交账号和密码,请求与Samba服务端建立连接,如果客户端通过身份验证,Samba服务器会对session setup报文做出回应,并为用户分配唯一的UID,在客户端与其通信时使用
  3. 访问共享资源。  客户端访问Samba共享资源时,发送tree connect 指令数据包,通知服务器需要访问的共享资源名,如果设置允许,Samba服务器会为每个客户端与共享资源连接分配TID,客户端即可访问需要的共享资源
  4. 断开连接。  共享使用完毕,客户端服务器发送tree disconnect报文关闭共享,与服务器断开连接

三、项目实训

3.1目的

利用samba服务实现linux和linux及windows主机之间进行文件资源的共享

并且模拟企业真实部门情况,对各部门进行权限管理分配

3.2准备工作

linux服务器(IP:192.168.1.2/24)

linux客户端(IP:192.168.1.3/24)

windows客户端(IP:192.168.1.100/24)

所有主机在同一局域网内,并且保证网络连通性

安装samba软件包

3.2.1服务器安装samba服务软件包

使用yum命令查看Samba服务软件包信息

使用yum命令安装服务器Samba服务

 使用   rpm -qa |grep samba   查询是否成功安装

 服务器安装用户软件包“samba-client.x86_64”

3.2.2客户端安装软件包

使用yum install samba-client.x86_64 -y安装客户机samba软件包

3.3配置Samba服务
3.3.1开启Samba服务,并设置开启自启动

 允许防火墙通过Samba服务

3.3.2创建共享文件夹

server上创建共享文件夹和其子文件夹

创建7个文件夹(四个组文件)

mkdir /share-----------------------------------------------------------创建默认共享文件夹(默认共享)

mkdir /share/system-------------------------------------------------------------------------系统组文件夹

mkdir /share/develop---------------------------------------------------------------------------开发组文件

mkdir /share/test---------------------------------------------------------------------------------测试组文件

mkdir /share/product------------------------------------------------------------------------产品测试文件

mkdir /share/developandtest----------------------------------------------------开发和测试共享文件

mkdir /share/public--------------------------------------------------------------------------------临时文件

mkdir /share/ziliaoku---------------------------------------------------------------------------资料库文件

 

 3.3.3创建群组

groupadd system---------------------------------------------------------------------------------创建系统组

groupadd develop--------------------------------------------------------------------------------创建开发组

groupadd test--------------------------------------------------------------------------------------创建测试组

groupadd product--------------------------------------------------------------------------------创建产品组 

 创建相应用户并划分组

更改文件所有者和所属组 

3.3.4修改文件用户权限

 

使用setfacl命令精确修改共享文件权限

用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } 文件路径...

-m,    --modify-acl 更改文件的访问控制列表

-M,    --modify-file=file 从文件读取访问控制列表条目更改

-x,    --remove=acl 根据文件中访问控制列表移除条目

-X,    --remove-file=file 从文件读取访问控制列表条目并删除

-b,    --remove-all 删除所有扩展访问控制列表条目

-k,    --remove-default 移除默认访问控制列表

     --set=acl 设定替换当前的文件访问控制列表

     --set-file=file 从文件中读取访问控制列表条目设定

     --mask 重新计算有效权限掩码

-n,    --no-mask 不重新计算有效权限掩码

-d,    --default 应用到默认访问控制列表的操作

-R,    --recursive 递归操作子目录

-L,    --logical 依照系统逻辑,跟随符号链接

-P,     --physical 依照自然逻辑,不跟随符号链接

     --restore=file 恢复访问控制列表,和“getfacl -R”作用相反

          --test 测试模式,并不真正修改访问控制列表属性

-v,    --version           显示版本并退出

-h,    --help              显示本帮助信息

查看修改后的/share/system文件具有的权限 

 3.3.5修改配置文件

修改samba的主配置文件:vim /etc/samba/smb.conf

重启samba服务 

 3.3.6设置samba服务用户

 将用创建的四个用户添加到samba用户(统一密码:123456

smbpasswd -a user1(回车后直接输入密码)

smbpasswd -a user2(回车后直接输入密码)

smbpasswd -a user3(回车后直接输入密码)

smbpasswd -a user4(回车后直接输入密码)

 3.3.7让samba服务被安全上下文允许使用

chcon -t samba_share_t /share/ -R---更改共享目录的context值或者禁用SELinux

或者: 

3.4测试结果 
Windows客户端(Win 10)

在“启用或关闭windows”功能里开启有关SMB的这几项

Win+R   输入\\192.168.1.2  即可访问  

输入账号/密码(这里使用“user2/123456”进行验证)

进入samba空间

根据之前设置的权限:develop组在develop和public具有777权限(最大),对zilioaku具有只读权限,所以:

user2可以在develop组的develop文件里操作,并创建文件

 

user2在其他组所属的文件中没有权限访问,例如system组的文件system 

 user2在ziliaoku只读,没有操作权限,无法创建文件夹

 

 Linux客户端

输入smbclient //192.168.1.2/share -U user2

根据之前设置的权限:develop组在develop和public具有777权限(最大)

对zilioaku具有只读权限,所以:

user2可以在develop文件里操作,并创建文件

 

user2在ziliaoku没有操作权限 也可以使用其他用户进行权限验证

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

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

相关文章

LabVIEW人工模拟肺控制系统开发

开发了一种创新的主被动一体式人工模拟肺模型,通过LabVIEW开发的上位机软件,实现了步进电机驱动系统的精确控制和多种呼吸模式的模拟。该系统不仅能够在主动呼吸模式下精确模拟快速呼吸、平静呼吸和深度呼吸,还能在被动模式下通过PID控制实现…

训练CDN基础代码

文章目录 时间整体流程训练细节小结 时间 从开始在平台上搭建到现在可以在平台上训练已经4天了 有GPU平台一般是autoDL平台,白嫖200元平台是:https://cloud.lanyun.net/ 整体流程 1.注册平台,以蓝耘为例子 卡从好变坏依次是:…

C语言:指针详解(5)

目录 一、sizeof()函数和strlen()函数的对比 1.sizeof()函数 2.strlen()函数 3.sizeof()函数和strlen()函数的对比 二、数组和指针笔试试题解析 1.一维数组 2.字符数组 (1)代码1 (2)代码2 (3)代码…

【数组、特殊矩阵的压缩存储】

目录 一、数组1.1、一维数组1.1.1 、一维数组的定义方式1.1.2、一维数组的数组名 1.2、二维数组1.2.1、二维数组的定义方式1.2.2、二维数组的数组名 二、对称矩阵的压缩存储三、三角矩阵的压缩存储四、三对角矩阵的压缩存储五、稀疏矩阵的压缩存储 一、数组 概述:数…

香橙派AIpro:体验强劲算力,运行ROS系统

文章目录 前言一、香橙派AIpro开箱及功能介绍1.1香橙派AIpro开箱1.2香橙派AIpro功能介绍 二、香橙派AIpro资料下载及环境搭建2.1资料下载2.2环境搭建2.3使用串口启动进入开发板2.4使用HDMI线接入屏幕启动 三、部署ROS系统四、香橙派AIpro的使用和体验感受 前言 本篇文章将带体…

sip协议栈简介

SIP协议栈简介 SIP协议栈流程 数据链路层:当SIP消息从网络中传输到达TCP/IP协议栈时,首先被接收到的是数据链路层的数据帧。数据链路层会对数据帧进行解封装,得到网络层的IP数据报。 网络层:网络层会对IP数据报进行解析&#xf…

js实现 JSON数据格式化的两种方法

本次方法不使用JS库直接采用原生JS 完整HTML代码如下&#xff0c;您可以复制代码然后&#xff0c;新建一个.html的网页进行保存即可体验 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><b…

Xcode 16 beta3 真机调试找不到 Apple Watch 的尝试解决

很多小伙伴们想用 Xcode 在 Apple Watch 真机上调试运行 App 时却发现&#xff1a;在 Xcode 设备管理器中压根找不到对应的 Apple Watch 设备。 大家是否已将 Apple Watch 和 Mac 都重启一万多遍了&#xff0c;还是束手无策。 Apple Watch not showing in XCodeApple Watch wo…

android13 文件管理器无法安装apk 奔溃问题

总纲 android13 rom 开发总纲说明 目录 1.前言 2.我们简单写个apk测试下 3.排查客户apk 4.frameworks源码排查 5.编译验证 6.彩蛋 1.前言 客户提供的文件管理apk不能安装apk文件,一点击就奔溃。 2.我们简单写个apk测试下 private void installApk(File apkFile) {i…

从0开始学习informer

目录 informer特点informer原理attention计算KL散度 backbone网络部分encoder输入输出部分embadding这里就不讲了 和transfomer一样EncoderStack decoder部分接下来就是最关键的结构 关于如何将输入经过注意力得到结果 结束&#xff0c;代码会放到下一篇讲 这里是原理 informer…

[Vulnhub] Sedna BuilderEngine-CMS+Kernel权限提升

信息收集 IP AddressOpening Ports192.168.8.104TCP:22, 53, 80, 110, 111, 139, 143, 445, 993, 995, 8080, 55679 $ nmap -p- 192.168.8.104 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2 …

PTX入门教程与实战

PTX入门教程 官方文档的目录结构 1 PTX指令 官方文档链接 1.1 指令形式 指令的操作数个数从0-4不等&#xff0c;其中d代表的是目的操作数&#xff0c;a,b,c是源操作数 p opcode;p opcode a;p opcode d, a;p opcode d, a, b;p opcode d, a, b, c;2 编程模型 2.…

人工智能算法工程师(中级)课程9-PyTorch神经网络之全连接神经网络实战与代码详解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(中级)课程9-PyTorch神经网络之全连接神经网络实战与代码详解。本文将给大家展示全连接神经网络与代码详解&#xff0c;包括全连接模型的设计、数学原理介绍&#xff0c;并从手写数字识别到猫狗识…

JVM监控及诊断工具-命令行篇-jstat命令介绍

JVM监控及诊断工具-命令行篇01-jstat&#xff1a;查看JVM统计信息 一 基本情况二 基本语法2.1 option参数1. 类装载相关的&#xff1a;2. 垃圾回收相关的-gc&#xff1a;显示与GC相关的堆信息。包括Eden区、两个Survivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息…

基于51单片机的多路报警器Protues仿真设计

一、设计背景 随着社会的发展和技术的进步&#xff0c;安全问题越来越受到重视。各种工业设施、家庭、商业场所以及公共场所的安全保障成为了重点。报警器作为安全防护系统的重要组成部分&#xff0c;在预防和及时应对各种突发事件中发挥着至关重要的作用。传统的报警器通常在功…

【C++】哈希(散列)表

目录 一、哈希表的基本概念1.哈希的概念2.哈希冲突2.1 哈希函数2.2 哈希冲突的解决办法2.2.1 闭散列2.2.2 开散列 二、哈希表的实现1.闭散列的实现1.1 闭散列的结构1.2 闭散列的插入1.3 闭散列的删除1.4 闭散列的查找 2.开散列的实现2.1 key值不能取模的情况2.2 开散列的结构2.…

Redis的安装配置及IDEA中使用

目录 一、安装redis&#xff0c;配置redis.conf 1.安装gcc 2.将redis的压缩包放到指定位置解压 [如下面放在 /opt 目录下] 3.编译安装 4.配置redis.conf文件 5.开机自启 二、解决虚拟机本地可以连接redis但是主机不能连接redis 1.虚拟机网络适配器网络连接设置为桥接模式…

STM32智能空气质量监测系统教程

目录 引言环境准备智能空气质量监测系统基础代码实现&#xff1a;实现智能空气质量监测系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;空气质量监测与优化问题解决方案与优化收尾与总结 1. 引言 智能空…

【练习】分治--归并排序

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f525;个人专栏&#xff1a;算法(Java)&#x1f4d5;格言&#xff1a;吾愚多不敏&#xff0c;而愿加学欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 归并排序 代码实现 交易逆序对的总数 题目描述 ​编辑 题解 代码实…

基于Vue和UCharts的前端组件化开发:实现高效、可维护的词云图与进度条组件

基于Vue和UCharts的前端组件化开发&#xff1a;实现高效、可维护的词云图与进度条组件 摘要 随着前端技术的迅速发展和业务场景的日益复杂&#xff0c;传统的整块应用开发方式已无法满足现代开发的需求。组件化开发作为一种有效的解决方案&#xff0c;能够将系统拆分为独立、…