samba客户端的使用与服务端的搭建

这篇具有很好参考价值的文章主要介绍了samba客户端的使用与服务端的搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

samba

samba是SMB文件共享协议的应用软件,可以让Linux系统和Windows系统之间相互共享资源。

在Linux系统中使用smbd服务器提供提供共享资源;使用smbclient去访问其他smbd服务器所提供的共享资源。

在Windows中有SMB/CIFS服务器和客户端。

SMB协议

SMB(Server Message Block)协议是一种在局域网上共享资源的协议,它可以为局域网中的Windows系统、Linux系统或是IOS系统提供文件系统、打印服务或其他一些信息。

SMB的工作原理基于NetBIOS(Network Basic Input/Output System)协议与SMB这两种协议。

  • NetBIOS:用于发现局域网内主机名;使用下列端口:UDP/137(NetBIOS 名称服务)、UDP/138(NetBIOS 数据报服务)、TCP/139(NetBIOS 会话服务);
  • SMB:用于文件传输;使用下列端口:TCP/139、TCP/445。

SMB连接过程

  1. 首先客户端发送一个 SMB Negotiate Protocol Request 请求数据报,并列出它所支持的所有SMB协议版本。

  2. 服务器收到请求信息后回应 Negotiate Protocol Response,并列出希望使用的协议版本;如果没有可使用的协议版本则返回0XFFFFH,结束通信。

  3. 协议确定后,客户端进程向服务器发起一个用户或共享的认证,这个过程是通过发送 Session Setup Request 请求数据报实现的;客户端发送一对用户名和密码或一个简单密码到服务器。

  4. 然后服务器通过发送一个 Session Setup Response 应答数据报来允许或拒绝本次连接。

  5. 当客户端和服务器完成认证之后,它会发送一个 Tree Connect Request 数据报并列出它想访问网络资源的名称

  6. 之后服务器会发送一个 Tree Connect Response 应答数据报以表示此次连接是否被接受或拒绝。

  7. 连接到相应资源后,SMB客户端就能够通过open SMB打开一个文件,通过read SMB读取文件,通过write SMB写入文件,通过close SMB关闭文件。

samba主要有两个进程

  1. smbd进程:用于控制共享目录、权限和文件传输。
  2. nmbd进程:用于名称解析,基于NEtBIOS协议获得计算机名称,解析为相应的IP地址。

Linux下搭建samba服务器实现文件共享

samba安装

sudo apt-get install samba

配置文件smb.conf介绍

vim /etc/samba/smb.conf

# 全局选项,为局部选项提供默认参数
[global]                            // 全局选项
    #...
# 局部选项,可以自己设置参数,覆盖全局选项
[homes]                             // 共享命令
    comment = Home Directories      // 描述
    browseable = no                 // 隐藏共享名称
    read only = yes                 // 只读的
    create mask = 0700              // 在共享目录中创建文件或目录权限
    directory mask = 0700           // 共享目录权限
    valid users = %S                // 有效用户

[printers]                          // 共享名称
    comment = All Printers          // 描述
    browseable = no                 // 隐藏共享目录
    path = /var/spool/samba         // 共享目录路径
    printable = yes                 // 可打印
    guest ok = no                   // 不可匿名访问,需要输入密码
    read only = yes                 // 只读的
    create mask = 0700              // 创建文件的权限

共享目录方式一

创建共享目录

mkdir /home/student/share

创建samba账户

sudo smbpasswd -a student

修改samba配置文件

sudo vim /etc/samba/smb.conf

# 在文件最后添加                   
[test]                              # 共享名称
    comment = This is a share dir   # 描述
    path = /home/student/share      # 共享的目录
    available = yes                 # 共享目录可用
    browseable = yes                # 共享目录可见
    valid users = student           # 可访问的samba用户
    read only = no                  # 可读写的,等价于 writable = yes
    # writable = yes                # 可读写的
    guest ok = no                   # 不可匿名访问,需要输入密码,等价于 public = no
    # public = yes                  # 不可匿名访问
    create mask = 0700              # 创建文件的权限,还受掩码影响
    directory = 0700                # 创建目录的权限
    write list = student,@student   # 允许某些用户可写,其他用户只读
    hosts deny = 192.168.0          # 拒绝某个网段
    hosts allow = 192.168.xxx.xxx   # 允许某个IP地址
    hosts deny = all                # 拒绝所有
    hosts allow = 192.168.0. EXCEPT 192.168.xxx.xxx     // 允许某个网段,但拒绝某个IP

重启smbd服务

每次修改完配置文件都需要重启smbd服务

sudo systemctl restart smbd.service

共享目录方式二

  1. 在桌面上创建一个文件加,例如 share

  2. 选择本地网络共享,选择共享此目录
    samba客户端的使用与服务端的搭建,Linux基础学习,服务器,网络,linux

  3. 选择创建共享,完成此目录的共享
    samba客户端的使用与服务端的搭建,Linux基础学习,服务器,网络,linux

这样共享的配置文件目录在/var/lib/samba/usershares/,每个共享目录的配置文件都以目录名命名

Windows下搭建SMB/CIFS服务器实现文件共享

Windows 10 Samba文件共享的设置方法

访问samba 共享的目录

Linux下访问共享的目录

  1. 通过smbclient来访问
smbclient //192.168.xxx.xxx/test -U student
  1. 可以通过 mount 命令进行挂载
sudo mount -t cifs -o username=student,password=123456 //192.168.xxx.xxx/test /mmt/test

Windows下访问共享的目录

  1. 输入IP地址和共享目录名
    samba客户端的使用与服务端的搭建,Linux基础学习,服务器,网络,linux

  2. 然后再输入用户名和密码
    samba客户端的使用与服务端的搭建,Linux基础学习,服务器,网络,linux

samba错误集合

  1. tree connect failed:NT_STATUS_BAD_NETWORK_NAME

    • 原因:共享名输入的不对或共享路径不存在
  2. NT_STATUS_ACCESS_DENIED making remote directory \temp

    • 原因:SELINUX没有关
    • 解决方法:SELINUX=disabled
  3. NT_STATUS_OBJECT_NAME_COLLISION making remote directory \temp

    • 原因:因为目录temp已存在
  4. protocol negotiation failed:NT_STATUS_INVALID_NETWORK_RESPONSE

    • 原因:hosts 网段不允许
  5. tree connect failed:NT_STATUS_ACCESS_DENIED

    • 原因:不允许该用户访问
    • 解决办法:在配置文件中添加该用户
  6. Connection to 192.168.xxx.xxx failed (Error NT_STATUS_IO_TIMEOUT)

    • 原因:可能是没网、或者防火墙做了限制
  7. session setup failed: NT_STATUS_LOGON_FAILURE

    • 原因:密码错误

smbpasswd命令

smbpasswd 用于管理samba用户及其密码。

参数 | 说明

参数 说明
-h 使用说明文档
-a 添加samba用户
-x 删除用户
-d 禁用用户
-e 解除禁用
-r 指定远程机器的用户
-U 指定用户名

实例

sudo smbpasswd -a user1     // 添加用户 user1
sudo smbpasswd -d user1     // 禁用用户
sudo smbpasswd -e user1     // 解除禁用
sudo smbpasswd -r 192.168.xxx.xx -U user2       // 修改远端用户 user2 的密码

smbclient命令

smbclient 用于交互式访问samba服务器的共享资源。文章来源地址https://www.toymoban.com/news/detail-784018.html

常用参数

参数 说明
-? , --help 使用说明文档
-V , --version 版本
-U , --user 指定用户名
-r 指定密码
-p , --port 指定服务器端TCP连接端口
-I , --ip-addr <IP地址> 指定服务器的IP地址
-E , --stderr 将信息写入到标准错误(stderr),默认是标准输出(stdou)
-L , --list 列出服务器所共享的所有资源
-T<tar选项> <备份文件> <要备份的文件> 备份服务端共享的文件,并打包成tar格式的文件
-N 不用询问密码
-w<工作群组> 指定工作群组名称
-b 设置传输过程中缓冲区大小
-c <命令> 执行指定命令后退出连接

实例

smbclient //192.168.xxx.xxx/share -U student -r 123456          // 指定用户名和密码连接samba服务器
smbclient //192.168.xxx.xxx/share -U student%123456             // 也可以这样指定用户名和密码
smbclient -c "ls" //192.168.xxx.xxx/share -U student -r 123456  // 执行一条命令,退出
smbclient -L 192.168.xxx.xxx -U student%8                       // 列出服务端所有共享的资源

登录samba服务器后可执行的指令

指令 说明
help , ? <命令> 查看指定命令的作用和用法,不指定命令就列出所有命令
cd 切换目录
ls 列出所有文件目录
dir 列出所有文件目录
del 删除当前文件下符合mask的文件
rd 删除目录
rmdir 删除空文件
rename 重命名
rm 删除当前目录下所有匹配mask的文件
tar 压缩文件
stat 查看文件信息
quit , exit 退出
showconnect 显示当前连接
put [remote file] 发送文件到服务器
mput 发送当前目录下所有匹配msak的文件到服务器
get 从服务器得到文件
mget 获取所有匹配mask的文件
du 列出目录信息和磁盘信息
more 查看文件内容

到了这里,关于samba客户端的使用与服务端的搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在Linux系统实现服务器端和客户端的套接字通信

    目录 一.创建一个socket文件夹用来存放编写的服务器端和客户端程序 二.编写服务器端代码 三.编写客户端代码 四.编译c语言程序 五.断开连接 六.可能涉及到的一些没接触过的知识点 (我系统里的文件在temp/socket$文件夹中)   在server.c中编写的代码: 在client中编写的代码:

    2024年02月07日
    浏览(34)
  • 网络基础静态综合实验,使用eNSP模拟给公司内网配置IP,路由。并连接到外网的以及服务端与客户端的远程登录和通信的综合实验。

    实验拓扑及要求图 实验给出网段为192.168.1.0/24,基于此网段进行IP规划。 一、看到拓扑中有6段骨干网段,以及需要配置8段环回地址的网段,将192.168.1.0/24先分为8个子网段,其中192.168.1.00000000/27用于配置骨干网段IP。 192.168.1.00100000/27    192.168.1.01000000/27   192.168.1.01100000/27  

    2024年02月20日
    浏览(42)
  • 【python】windows客户端的ui自动化框架搭建及使用(winappdriver)

    0.环境准备 安装jdk(8以上版本)及其环境配置 安装python3.10.4及其对应的三方包 安装winappdriver,下载地址:https://github.com/microsoft/WinAppDriver/releases/tag/v1.2.1 windows开启开发者模式,本地开启服务:https://jingyan.baidu.com/article/91f5db1bfc57df5d7e05e31d.html 1.思路 整体思路: 1、封装appdriver服

    2024年02月11日
    浏览(40)
  • Ubuntu搭建Samba服务-学习记录

    当前文章仅用于记录,在 Ubuntu中安装使用Samba,在Windows访问 系统环境:Ubuntu18.04.6(LTS)、Windows10 Samba版本:Version 4.7.6-Ubuntu sudo apt install samba /etc/samba/smb.conf pdbedit 命令用于管理SMB服务程序的账户信息数据库,格式为“pdbedit [选项] 账户” pdbedit 命令详细解析-linuxcool 参数 作用

    2024年02月16日
    浏览(34)
  • 【Linux入门指北】samba服务器搭建篇

    Linux之samba服务器 首先介绍一下samba的由来,Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。 原本SMB协议是windows和windows(网上邻居)之间分享资源的一种协议。Linux找到微软,也想把该协议用在window和Linux的文件共享上,可微软没有同意,于

    2024年02月04日
    浏览(47)
  • 使用Python创建websocket服务端并给出不同客户端的请求

    作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!😄 WebSocket 和HTTP一样,也是一种通讯协议,允许服务端主动向客户端推送数据。 在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据

    2024年01月17日
    浏览(31)
  • Linux系列:开发环境搭建:ubuntu图形界面安装samba服务器、SSH使用、mount -t cifs 挂载windows共享目录方法与问题解决

    samba一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。 通常linux开发环境要和windows平台进行文件交互,使用samba进行文件夹共享,这样会给开发带来很大的便利性,samba安装很简单,下面介绍一下在ubunt

    2024年02月21日
    浏览(73)
  • [云计算学习3] Linux基础 : 使用chrony搭建时间服务器并让下游NTP同步时间

    操作平台 : centos 7 (虚拟机) 配置: 2H4G 情景 : 主机1(服务器)搭建时间服务器并让主机2(客户端)进行NTP同步 在终端输入以下命令安装chrony 然后设置服务开机自启动 完成上述操作后,我们就可以进行下一步了 ⚠ : 此操作请在 主机1 (服务器) 操作 我们关闭SELinux 输入 vim /etc/selinu

    2024年02月15日
    浏览(46)
  • Linux基础网络设置和Samba文件共享服务

    ♥️ 作者:小刘在C站 ♥️ 个人主页:小刘主页 ♥️ 每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️ 夕阳下,是最美的绽放,树高千尺,落叶归根人生不易,人间真情 目录 一.    Linux基础网络设置 1.服务突然

    2024年02月02日
    浏览(44)
  • linux centos系统搭建samba文件服务器 NetBIOS解析 (超详细)

    作者主页: 点击! Linux专栏:点击! 前言———— Samba 是一个开源软件套件,可为 SMB/CIFS 客户端(包括 Windows)提供文件和打印服务。通过设置 Samba 文件服务器,您可以在网络上共享文件和资源,从而实现不同操作系统之间的无缝协作。 在CentOS上搭建Samba文件服务器的过程

    2024年03月11日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包