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

Linux与Windows文件共享:Samba配置指南

一、Samba 原理

Samba 是一套实现 SMB/CIFS 协议的开源软件,主要功能是在 Linux/Unix 系统与 Windows 系统之间提供文件和打印机共享服务。
工作原理:
1、由Samba客户端向Samba服务器端发送包含使用的协议版本等信息的数据请求包,
当服务器收到数据请求包后对数据包中的内容进行确认,
如果Samba服务器没有响应客户端的请求则本次会话请求连接失败。
2、当数据请求包的信息被Samba服务器确认后,
服务器就向客户端发送建议使用的协议版本、端口等相关信息
3、客户端在收到来自服务器端的信息后,开始根据服务器的要求确认自身的信息,
然后向服务器发送认证信息并等待服务器的响应,如果服务器端响应客户端的请求,
则本次会话请求连接成功,否则,则本次会话请求连接失败。
4、客户端与服务器端成功建立会话连接后,客户端就可以通过相应的命令访问所需的资源。
samba服务的进程由smbd和nmbd组成
smbd进程:主要负责管理服务器上的共享目录、打印机、提供登录认证、创建对话进程和SMB资源共享等功能 端口 139和445
nmbd进程:主要负责提供NetBIOS的域名解析和浏览共享资源的服务 端口 137和138

二、CentOS 7 下 Samba 配置步骤

1.部署要求

要求:
将samba服务器端目录/smbshare共享,共享名为myshare,共享可以浏览,允许用户rose和用户marry访问
用户rose具有只读权限,marry具有读写权限  (rose和marry系统存在的用户)

简要流程:

samba服务器部署:IP地址为192.168.100.10
安装服务所需软件包
yum -y install samba samba-client2,创建共享目录mkdir /smbsharecd /smbsharetouch test13.创建用户并设置权限useradd roseuseradd marrysetfacl -m u:rose :r-x /smbsharesetfacl -m u:marry:rwx /smbshare4.进入配置文件添加共享目录的权限vim /etc/samba/smb.conf[myshare]​           comment = this is a directory​           path = /smbshare​           browseable = yes ​            valid user = rose,marry​            write list marry5.设置samba用户的用户名和密码smbpasswd -a rosesmbpasswd -a marry6.关闭防火墙和selinux7.开启服务systemctl restart smbsystemctl restart nmbsystemctl enable smbsystemctl enable nmb客户端的部署IP地址为192.168.100.201.安装服务软件包yum -y install samba-client cifs-utils2.永久挂载mkdir /smbmountvim /etc/fstab//192.168.100.10/myshare /smbmount  cifs username=rose,passwd=rose,sec=ntlmssp 0 0windows登录//192.168.100.10

samba服务器部署 IP地址为192.168.100.10
1、安装samba服务器所需的软件包

yum -y  install samba  samba-client
会用到的工具
smbd:SMB服务器,为客户端提供文件和打印服务
nmbd:NetBIOS名称服务器,可以提供浏览支持
smbclient:SMB客户端程序,用于从Linux或其他操作系统上访问SMB服务器上的资源
smbmount:挂载SMB文件系统的工具
smbumount:卸载SMB文件系统的工具
smbpasswd::添加、删除及管理SMB账户口令

2.创建rose和marry这两个用户并写入权限

##创建共享目录并创建一个目录用于测试
mkdir /smbshare
cd /smbshare
mkdir tese1
创建用户
useradd rose
useradd marrysetfacl -m u:rose:r-x /smbshare
setfacl -m u:marry:rwx /smbshare
新建rose和marry用户设置为不可登录状态(关掉了selinux也可以不设置)
usermod -s /sbin/nologin rose
usermod -s /sbin/nologin  marry
为什么要将用户设置为不可登录状态? 因为将系统用户添加为samba用户后,防止系统用户直接登录系统或者通过ssh登录系统

3.进入/etc/samba/smb.conf配置文件添加共享目录信息

vim /etc/samba/smb.conf
[myshare]comment = this is a directorypath = /smbshare		//添加共享目录路径browseable = yes		//设置所有人可以浏览该共享目录valid users = rose,marry	//定义用户可以访问write list = marry		//定义用户具有写入权限
配置文件详细说明
1)模板配置文件
# Security-Enhanced Linux (SELinux) Notes:  ---selinux参数配置
# setsebool -P samba_enable_home_dirs on      ---共享用户家目录时,需要设置的bool值
# chcon -t samba_share_t /path/to/directory   ---共享自定义目录时,需要更改目录的context值
当文件系统重打标签时,通过chcon进行的更改将丢失
# setsebool -P samba_export_all_ro on   ---以只读权限共享目录时,需要设置的bool值
# setsebool -P samba_export_all_rw on ----以读写权限共享目录时,需要设置的bool值

[global]   ---全局设置起始标签
workgroup = MYGROUP                ----工作组名称设置
server string = Samba Server Version %v          ----samba服务器的版本信息
;       netbios name = MYSERVER           --------主机的NetBIOS设置
;       interfaces = lo eth0 192.168.12.2/24   192.168.13.2/24    ----定义samba服务监听的
ip或者网络接口
;       hosts allow = 127.   192.168.12.    192.168.13.      ---允许访问的主机列表

日志设置
log file = /var/log/samba/log.%m   ---日志文件路径及文件名设置
max log size = 50         ----日志文件最大大小设置,单位KB,若日志文件大小大于50KB,则循环写入

独立服务器选项
security = user       --------samba运行模式
passdb backend = tdbsam  ----存储用户信息
security参数值可以设置为3种模式 :
user:使用samba自身的数据库验证用户
share:无需共享密码,任何人都可以访问samba共享资源
server:在此级别下,身份验证由samba主机负责,但是不推荐使用
passdb backend参数值设置有3种:
tdbsam:使用数据库文件passdb.tdp,该文件存放在/etc/samba下,该参数值为默认
ldapsam:使用LDAP方式进行验证
smbpasswd:使用smbpasswd为系统用户设置samba密码

共享目录设置部分
[homes]        ----共享名,可以自定义
comment = Home Directories      ----共享描述信息
browseable = no             ----共享不可以浏览
writable = yes               ----共享权限为可写
;       valid users = %S           ---定义可访问的用户,这里表示所有合法登录的用户

共享设置部分有一系列的参数设置,常见的如下:
comment = :定义共享描述
path = :定义具体的共享目录(值为共享目录的绝对路径)
browseable = :定义是否可以浏览,yes为可以浏览,no为不能浏览,默认为yes
read only = :定义共享权限是否只读,yes表示只读,默认值为只读
writable = :定义共享权限是否可写,yes表示可写,no表示不可写,默认为no
write list = :定义具体读写共享权限的用户列表,不在列表的用户默认只有只读权限,参数值可以
设置为用户名和组名;设置用户名的格式为:username1,username2(中间用逗号隔开)  
设置组名的格式:@groupname1,@groupname2(中间用逗号隔开)
guest ok = :定义是否允许匿名,yes表示允许匿名,no表示不允许匿名
valid users = :定义可以访问共享的samba用户列表,格式username1,username2
不允许列表以外的samba用户访问共享,若列表为空白,则表示所有的samba用户均可访问共享
public = : 定义是否为公共共享,yes为公共共享  no表示非公共共享
设置目录共享时,一定要事先创建需要共享的目录,且留意共享目录的文件系统权限和共享权限的一致性。
rose  -----  r-x
marry -----rwx 

4.设置samba用户的用户名和密码

smbpasswd
-a:添加用户
-x:删除用户
-e:启用用户
-d:禁用用户

smbpasswd -a rose
smbpasswd -a marry

5.启动服务

systemctl restart smb.service
systemctl restart nmb.servicesystemctl enable smb.service
systemctl enable nmb.service

6.关闭防火墙和selinux

客户端IP地址为192.168.100.20

1.安装软件包

yum -y install samba-client cifs-utils
bash

2.通过samba指令远程访问

1)匿名用户访问samba服务器共享资源列表
【例:】smbclient -L [samba服务器的hostname或者IP]

smbclient -L [samba服务器的hostname或者IP]

2.samba用户浏览samba服务器共享资源
【例:】smbclient //[samba服务器的hostname或者IP]/[共享名] -U [samba用户]

smbclient //192.168.100.10/myshare  -U rose

3.挂载(永久和临时)

mkdir  /smbmount ##挂载目录
交互式挂载---等待你输入密码
mount -t cifs -o username=rose //192.168.100.10(服务器IP)/myshare   /smbmount  
----输入samba用户rose的samba密码
非交互式挂载---直接挂载上
mount -t cifs -o username=rose,password=rose,sec=ntlmssp //172.16.30.20/myshare   /smbmount
若想下次启动生效
vim  /etc/fstab
//192.168.100.10/myshare   /smbmount   cifs   username=rose,password=rose,sec=ntlmssp  0   0

多用户挂载,使用multiuser选项,
//192.168.100.10/myshare   /smbmount   cifs   multiuser,username=rose,password=rose,sec=ntlmssp  0   0

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

su  -   user
cifscreds  add 192.168.100.10  -u  marry

5,在window文件管理器打开samba服务器的共享文件夹

\\192.168.100.10   回车
输入用户的用户名和密码就可以登录

http://www.dtcms.com/a/331662.html

相关文章:

  • Linux软件编程:进程
  • GoLand 项目从 0 到 1:第八天 ——GORM 命名策略陷阱与 Go 项目启动慢问题攻坚
  • Go 并发控制利器 ants 使用文档
  • Uniapp 中的 uni.vibrate 震动 API 使用指南
  • 4. 索引数据的增删改查
  • ATAM:基于场景的软件架构权衡分析法
  • C语言指针使用
  • 机器翻译:Hugging Face库详解
  • Qwen-Image深度解析:突破文本渲染与图像编辑的视觉革命
  • 网站突然崩了,此站点遇到了致命错误!
  • 从零开始学习:深度学习(基础入门版)(第2天)
  • RCL 2025 | LLM采样机制的新视角:来自处方性偏移的解释
  • 区块链技术原理(10)-以太坊帐户
  • ​​vdbench 存储性能测试工具​​的详细使用教程,结合安装部署、参数配置、测试执行及结果分析
  • 电池模组奇异值分解降阶模型
  • Pandas数据处理与分析实战:Pandas数据转换与处理基础课程
  • 既然是长连接 ,资源已经占用,已经存在。那抢购就直接用长连接不更好?
  • 前端八股文-HTML5篇
  • AI绘画:从算法原理解读其风格、质量与效率变革
  • RLHF综述-GRPO之前
  • 《SeeClick: Harnessing GUI Grounding for Advanced Visual GUI Agents》论文精读笔记
  • 机器学习算法篇(八)-------svm支持向量机
  • 机器人“ChatGPT 时刻”倒计时
  • 码上爬第九题【协程+webpack】
  • 苹果正计划大举进军人工智能硬件领域
  • 【wpf】WPF 中的 MouseBinding 详解
  • Node-RED系列教程-V4版本Dashboard2使用教程
  • 【科研绘图系列】R语言绘制微生物丰度和基因表达值的相关性网络图
  • 数智先锋 | 告别运维黑盒!豪鹏科技×Bonree ONE构建全栈智能可观测体系
  • Java 中导出 Excel 文件的方法