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

Linux中Samba服务配置与使用指南

Linux中Samba服务配置与使用指南

一、Samba服务核心组件

进程功能描述端口
smbd管理共享目录/打印机、认证、SMB资源共享139, 445
nmbdNetBIOS域名解析、共享资源浏览服务137, 138

二、Samba工作原理

  1. 连接请求
    客户端发送协议版本请求 → 服务器验证请求有效性(失败则终止连接)。
  2. 协议协商
    服务器返回支持的协议版本和端口信息。
  3. 认证阶段
    客户端提交认证信息 → 服务器验证(失败则终止连接)。
  4. 资源访问
    认证成功后,客户端通过命令访问共享资源。

三、独立服务器选项

1. security 认证模式
参数值描述
user使用Samba自有数据库验证用户身份
share无需密码,任何人可直接访问共享资源
server由其他SMB服务器代理验证(已弃用)

2. passdb backend 用户数据库类型
参数值描述存储位置
tdbsam使用数据库文件 passdb.tdp/etc/samba/passdb.tdb
ldapsam使用LDAP方式进行验证外部LDAP服务器
smbpasswd使用 smbpasswd 为系统用户设置samba密码/etc/samba/smbpasswd

四、共享目录设置常见参数

参数名描述可选值默认值使用示例/说明
comment共享描述信息任意字符串comment = this is a directory
path定义具体的共享目录共享目录的绝对路径必填项path = /smbshare
browseable是否可以浏览yes / noyesbrowseable = no(隐藏共享)
read only共享权限是否只读yes / noyeswritable冲突,优先级低于writable
writable共享权限是否可写yes / nonowritable = yes(开启写权限)
write list具体读写共享权限的用户列表用户或组名write list = username1, @groupname1
guest ok是否允许匿名yes / nonoguest ok = yes
valid users可以访问共享的samba用户列表用户或组名所有用户valid users = username2, @groupname2
public是否为公共共享yes / nonopublic = yes

五、Samba服务部署流程

1、Samba服务器端

前提

  1. 已经配置好本地的 yum 仓库
  2. 已经禁用 firewall(防火墙)
  3. 已经禁用 selinux
  1. 下载软件包(samba,samba-client)

    yum -y install samba samba-client		# 下载 samba samba-client
    
  2. 创建共享目录和测试文件

    mkdir /smbshare							# 创建共享目录touch /smbshare/file1					# 在共享目录下创建测试用文件
    touch /smbshare/file2
    
  3. 创建并设置为samba用户

    将用户设置为不可登录状态,防止系统用户直接登录系统或通过ssh登录系统

    useradd -s /sbin/nologin rose			# 创建用户,设置为不可登录状态
    useradd -s /sbin/nologin marrysmbpasswd -a rose						# 设置 samba 用户
    smbpasswd -a marrypdbedit -L								# 查看 samba 用户
    

    在这里插入图片描述

  4. 设置用户权限

    setfacl -m u:rose:r-x /smbshare/		# 设置用户 rose 对 /smbshare 的权限为读,执行
    setfacl -m u:marry:rwx /smbshare/		# 设置用户 marry 对 smbshare 的权限为读写,执行
    

    注意:应当要保证samba用户的访问权限和服务设置的权限一致

    保证用户访问权限与服务设置权限一致,是系统安全和稳定运行的核心原则

  5. 编辑配置文件(/etc/samba/smb.conf)

    vim /etc/samba/smb.conf					# 编辑配置文件[myshare]							# 名称,可自定义path = /smbshare			# 路径browseable = yes			# 可以浏览valid users = rose,marry	# 可访问用户列表write list = marry			# 可读写用户列表systemctl restart smb nmb				# 重启服务
    systemctl enable smb nmb				# 下次开机自启
    

    在这里插入图片描述

2、Samba客户端使用

samba对应的文件系统:

cd /usr/lib/modules/3.10.0-957.el7.x86_64/kernel/fs/cifs/
  1. 下载软件包(samba-client cifs-utils)

    yum -y install samba-client cifs-utils		# 下载 samba-client cifs-utils
    
  2. 匿名用户浏览 samba 服务器共享资源列表

    smbclient -L 192.168.100.10					# 匿名访问,直接回车,不需要输入密码
    

    在这里插入图片描述

  3. 匿名用户浏览 samba 服务器共享资源(无法访问)

    smbclient //192.168.100.10/myshare			# 匿名用户不需要密码
    

    在这里插入图片描述

  4. samba 用户 rose(只读)浏览 samba 服务器共享资源

    smbclient //192.168.100.10/myshare -U rose	# 输入 rose 的密码,只读权限
    

    在这里插入图片描述

  5. samba 用户 marry(读写)浏览 samba 服务器共享资源

    smbclient //192.168.100.10/myshare -U marry	# 输入 marry 密码,读写权限
    

    在这里插入图片描述

  6. 将samba服务器共享资源临时挂载到本地目录

    mount -t cifs -o username=marry //192.168.100.10/myshare /smbmount/
    # 交互式挂载mount -t cifs -o username=marry,password=marry,sec=ntlmssp //192.168.100.10/myshare /smbmount/
    # 非交互式挂载
    

    在这里插入图片描述

    在这里插入图片描述

    注意:重新挂载前,先使用 umonut 命令卸载挂载

  7. 将samba服务器共享资源永久挂载到本地目录

    vim /etc/fstab		# 编辑配置文件//192.168.100.10/myshare /smbmount cifs username=rose,password=rose,sec=ntlmssp 0 0# 路径 挂载路径 类型 用户名,密码,安全认证选项 0 0mount -a			# 根据配置文件自动挂载所有文件系统
    

    在这里插入图片描述

  8. 将samba服务器共享资源永久挂载到本地目录,多用户挂载

    vim /etc/fstab		# 编辑配置文件//192.168.100.10/myshare /smbmount cifs multiuser,username=rose,password=rose,sec=ntlmssp 0 0# 路径 挂载路径 类型 多用户挂载选项,用户名,密码,安全认证选项 0 0mount -a			# 根据配置文件自动挂载所有文件系统
    

    在这里插入图片描述

  9. 普通用户临时切换Samba权限

    su - yanyvhang								# 切换用户为 yanyvhang
    cifscreds add 192.168.100.10 -u marry		# 使用 marry 凭证
    

    普通用户 yanyvhang 使用 cifscreds 命令向 samba 服务器提交 samba 用户 marry 的凭证
    此时普通用户 yanyvhang 临时具有 samba 用户 marry 的权限,实现其对 myshare 共享具有 marry 的读写权限

http://www.xdnf.cn/news/17941.html

相关文章:

  • 计算机毕设大数据选题推荐 基于spark+Hadoop+python的贵州茅台股票数据分析系统【源码+文档+调试】
  • 百川开源大模型Baichuan-M2的医疗能力登顶第一?
  • Flink CDC 实战:实时监听 MySQL Binlog 并同步到 Kafka
  • 《贵州棒球百科》体育赛事排名·棒球1号位
  • 面试题:如何用Flink实时计算QPS
  • 【120页PPT】人工智能与数字化转型的业财融合(附下载方式)
  • 计算机视觉第一课opencv(二)保姆级教
  • 解决SQL Server连接失败:Connection refused: connect
  • H.264、H.265 到 H.266:编码标准演进、RTSP支持与实时视频系统实战
  • 嵌入式学习(day26)frambuffer帧缓冲
  • Vue内置组件全解析:从入门到面试通关
  • 三种DuckDB电子表格插件的union all查询性能对比
  • 基于C语言基础对C++的进一步学习_C和C++编程范式、C与C++对比的一些补充知识、C++中的命名空间、文件分层
  • 流处理 or 批处理?大数据架构还需要流批一体吗?
  • 看懂 Linux 硬件信息查看与故障排查
  • LRU缓存
  • ABP vNext 的工业时间序列治理:InfluxDB vs TimescaleDB 落地对比
  • C++ list模拟实现
  • 推荐系统论文分享之多任务模型--PLE(二)
  • 内存可见性和伪共享问题
  • 【COMSOL】Comsol学习案例时的心得记录分享
  • nginx高性能web服务器实验
  • FPGA+护理:跨学科发展的探索(四)
  • 集成电路学习:什么是Image Processing图像处理
  • AI + 数字孪生:解锁物业 “立体透明” 新范式
  • 学习日志33 python
  • 第二十二天:指针与内存
  • 安全点(Safepoint)完成后唤醒暂停线程的过程
  • Ant Design 的 `Image` 组件,通过 `preview.src` 加载本地图片文件
  • 【3D渲染技术系列】AI 大模型贴图研究总结报告