当前位置: 首页 > 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.dtcms.com/a/331712.html

相关文章:

  • USB 3.0 link command 定义
  • 知识的本质
  • 数域筛法GNFS---C语言实现
  • 20道CSS相关前端面试题及答案
  • Elasticsearch:如何使用 Qwen3 来做向量搜索
  • css中container和media的用法和区别
  • SRWare Iron:隐私保护与高效浏览的完美结合
  • C++ mutex的实现源码分析
  • Xsens动作捕捉与AI驱动人形机器人训练革新
  • WVP和ZLM部署与接入NVR指南环境准备
  • 【React】hooks 中的闭包陷阱
  • 三轴云台之脉宽调制技术篇
  • Qt基本槽
  • 链游(GameFi)开发破局:如何平衡可玩性与经济模型可持续性?
  • GraphRAG:AI理解复杂知识的未知领域,开启探索之旅
  • 《Python函数:从入门到精通,一文掌握函数编程精髓》
  • MySQL主从原理
  • Linux 文件系统简介
  • 解析 TrueType/OpenType 格式的可变字体(Variable Font),提取其所有命名实例(Named Instances) 的名称信息
  • ESP32S3的LVGL配置参数解释、动画播放优化(更新中)
  • 4.1vue3的setup()
  • 《WebGL中FBO的底层运行逻辑》
  • 编程与数学 02-017 Python 面向对象编程 01课题、面向对象
  • 【会员专享数据】2000-2024年我国乡镇的逐日PM₁₀数据(Shp/Excel格式)
  • linux初始化配置
  • 计算机网络知识
  • 基于Java飞算AI的Spring Boot聊天室系统全流程实战
  • 【奔跑吧!Linux 内核(第二版)】第6章:简单的字符设备驱动(三)
  • CMake include_directories()使用指南
  • 从零开始的云计算生活——第四十三天,激流勇进,kubernetes模块之Pod资源对象