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

22.Linux samba服务

Linux : samba服务

Samba 是一种在 Linux 和 Windows 系统之间实现文件共享的工具,基于 SMB(Server Message Block)协议。它允许 Linux 系统模拟 Windows 的文件共享功能,从而实现跨平台的文件和打印机共享

工作原理

  1. 请求连接
    • 客户端发送协议版本请求 → 服务器确认请求内容 → 无响应则失败。
  2. 协商
    • 服务器返回协议版本/端口信息 → 客户端确认自身配置。
  3. 认证
    • 客户端发送认证信息 → 服务器响应成功则建立会话。
  4. 访问
    • 会话建立后,客户端通过命令访问共享资源。

端口分配

进程端口协议功能
smbd139TCP传统SMB会话服务(基于NetBIOS)
445TCP现代直接SMB服务(无NetBIOS封装)
nmbd137UDPNetBIOS名称服务(域名解析)
138UDPNetBIOS数据报服务(浏览共享资源)
samba服务部署

关闭防火墙和selinux

安装samba软件包

yum install samba samba-client -y
rpm -q samba
-samba-4.8.3-4.el7.x86_64
rpm -q samba-client
-samba-client-4.8.3-4.el7.x86_64

创建共享目录/kiva,共享名为kiva,可以浏览,允许decade和 kami用户访问,decade拥有读写权限,kami拥有只读权限

mkdir /kiva
cd /kiva
touch kiva1 kiva2 kiva3
ls
-kiva1  kiva2  kiva3
useradd decade
useradd kami

编辑配置文件

vim /etc/samba/smb.conf

在这里插入图片描述

设置samba用户

smbpasswd -a decade
-New SMB password:
-Retype new SMB password:
smbpasswd -a kami
-New SMB password:
-Retype new SMB password:

给用户设置权限,确保用户的访问权限与服务权限一致

setfacl -m u:kami:r-x /kiva
setfacl -m u:decade:rwx /kiva

查看所有samba用户

pdbedit -L
-decade:1003:
-kami:1004:

重启服务

systemctl restart smb
systemctl enable smb
systemctl restart nmb
systemctl enable nmb
客户端配置

安装samba-client 软件包和 cifs-utils 软件包

yum install samba-client cifs-utils
rpm -q samba-client
-samba-client-4.8.3-4.el7.x86_64
rpm -q cifs-utils
-cifs-utils-6.2-10.el7.x86_64

以匿名用户访问samba服务器,匿名用户直接访问,不需要密码

smbclient -L 192.168.100.10

在这里插入图片描述

匿名用户访问samba服务器的共享资源

smbclient //192.168.100.10/kiva

在这里插入图片描述

匿名用户访问失败

samba用户访问共享目录列表

smbclient //192.168.100.10/kiva -U decade

在这里插入图片描述

输入密码后访问成功,

将samba服务器上的共享目录挂载到本地文件/kuga

mkdir /kuga
mount -t cifs -o username=decade //192.168.100.10/kiva /kuga  #交互式挂载
输入密码后成功挂载

查看挂载情况

df -h

在这里插入图片描述

mount -t cifs -o username=decade,password=555,sec=ntlmssp //192.168.100.10/kiva /kuga  #非交互式直接挂载,不需要输入密码

实现多用户挂载(multiuser可以让普通用户拥有samba用户的权限来访问共享目录)

vim /etc/fstab

在这里插入图片描述

普通用户使用cifscreds命令借用kami用户的权限

useradd kabuto
su - kabuto
cifscreds add 192.168.100.10 -u decade

测试是否能够创建目录

在这里插入图片描述

能够创建说明借用权限成功

在windows系统上进入共享目录

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

如果不能查看, 通常是因为当前用户已经与服务器建立了多个连接。为了解决这个问题 可以在计算机上打开命令窗口,输入 net use * /del /y 来终止所有共享连接

补充
组件/工具功能描述关键命令/操作使用场景
smbdSMB 服务器守护进程,提供文件和打印服务systemctl start smb systemctl status smb文件共享、打印机共享、用户认证
nmbdNetBIOS 名称服务守护进程,提供网络浏览支持systemctl start nmb systemctl status nmb局域网计算机发现、主机名解析
smbclientSMB 客户端工具,访问远程共享资源smbclient -L //server smbclient //server/share -U user浏览共享列表、交互式访问文件、调试连接
mount.cifs挂载 SMB 共享(现代替代 smbmountmount -t cifs //server/share /mnt -o user=name持久化挂载远程共享
umount卸载 SMB 共享(现代替代 smbumountumount /mnt安全卸载网络共享
smbpasswdSamba 用户密码管理工具smbpasswd -a user smbpasswd -e user smbpasswd -x user

Samba SELinux 配置

配置场景操作命令作用持久性说明
共享用户家目录setsebool -P samba_enable_home_dirs on允许用户通过 Samba 访问自己的家目录-P 参数确保重启后生效
共享自定义目录chcon -t samba_share_t /path/to/directory临时设置目录为 Samba 共享类型重启失效 文件系统重打标签时丢失
只读共享目录setsebool -P samba_export_all_ro on以只读权限共享目录时,需要设置的bool值-P 参数确保重启后生效
读写共享目录setsebool -P samba_export_all_rw on以读写权限共享目录时,需要设置的bool值-P 参数确保重启后生效
security 参数 (认证模式)
模式说明适用场景
user使用 Samba 本地数据库验证用户身份 (需通过 smbpasswd 添加用户)标准文件服务器 需要用户级访问控制的场景
share匿名共享模式 无需密码即可访问共享资源公共文件分发 打印机共享等无安全要求的场景
server委托其他服务器认证 (Samba 将凭据转发给外部认证服务器)旧版兼容场景(存在中间人攻击风险)

Samba 共享目录配置参数详解

参数可选值默认值详细说明
comment任意字符串共享描述信息,用于说明共享内容
path绝对路径必须配置:共享目录的物理路径 目录需事先创建且权限正确
browseableyes/noyes控制共享是否在网络中可见 yes:出现在网络邻居 no:隐藏共享(需直接访问路径)
read onlyyes/noyes全局只读控制 yes:所有用户只读 no:允许写操作(需配合writablewrite list
writableyes/nono全局可写控制 yes:所有用户可写 no:禁止写操作 注意:与read only冲突(后者优先级更高)
write list用户/组列表精确写控制:指定具有读写权限的用户/组 用户:user1,user2 组:@group1,@group2 未列用户仅读
guest okyes/nono是否允许匿名访问 yes:无需认证 no:必须认证
valid users用户/组列表所有用户访问白名单:允许访问的用户/组 空值=所有Samba用户 格式:user1,user2,@group1
publicyes/nonoguest ok别名:功能完全等同于guest ok (历史遗留参数,建议优先使用guest ok
读写权限规则
场景配置组合
完全只读共享read only = yes writable = no
认证用户可写read only = no writable = yes
仅管理员可写read only = no write list = @admins
http://www.lryc.cn/news/620957.html

相关文章:

  • 15、C语言预处理知识点总结
  • 18.14 全量微调实战手册:7大核心配置提升工业级模型训练效率
  • 并发编程原理与实战(二十三)StampedLock应用实战与其他锁性能对比分析
  • 深度学习ubuntu系统常用指令和技巧
  • VisDrone数据集,专为无人机视觉任务打造
  • Linux面试题及详细答案 120道(1-15)-- 基础概念
  • 9.【C++进阶】继承
  • 开源数据发现平台:Amundsen 快速上手指南
  • 微服务、分布式概念-以及集群部署 vs 分布式部署
  • C# LINQ 全面教程:从入门到精通
  • 【19-模型训练细节 】
  • Linux 编译过程中遇到 TMPDIR 空间不足的问题
  • 算法应用上新!自适应更新策略差分进化算法求解球形多飞行器路径规划问题,附完整MATLAB代码
  • 智慧城市SaaS平台/专项管理系统
  • PyCharm 2025.2:面向工程师的 AI 工具
  • Nginx学习笔记(九)—— Nginx Rewrite深度解析
  • 学习嵌入式第二十八天
  • python爬虫学习(2)
  • 大模型微调方法讲解
  • linux 软硬链接详解
  • 服务器数据恢复—误删服务器卷数据的数据恢复案例
  • ESXI 6.7服务器时间错乱问题
  • QT+Yolov8 推理部署,ONNX模型 ,实例分割+目标检测
  • 【会员专享数据】2000-2024年我国乡镇的逐日PM₁₀数据(Shp/Excel格式)
  • 6、C 语言指针初阶知识点总结
  • AI搜索优化专家孟庆涛:以技术温度重构“人机信息对话”新范式
  • 前端Vite介绍(现代化前端构建工具,由尤雨溪开发,旨在显著提升开发体验和构建效率)ES模块(ESM)、与传统Webpack对比、Rollup打包
  • 飞算JavaAI合并项目实战:7天完成3年遗留系统重构
  • 92、23种设计模式-单例模式
  • LeetCode 面试经典 150_数组/字符串_最后一个单词的长度(19_58_C++_简单)(反向遍历)