• 使用Samba实现文件共享


    1987年,微软公司和英特尔公司,共同制定了SMB(Server Messages Block 服务消息块)协议,指在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之间共享文件变得越来越简单.到了1991年,当时还在读大学的Tridgwell为了解决Linux系统与Windows系统的文件共享问题,基于SMB协议,开发出了SMBServer服务程序,后来由于名称冲突,改名为Samba,而如今Samba服务已经成为了,Linux系统与Windows系统之间数据传输的最佳选择.


    ♥ 文章声明 ♥
    该系列文章部分文字描述,整理于以下文献,化繁为简.
    《鸟哥的Linux私房菜 (基础学习篇 第三版)》 - 作者:鸟哥
    《Linux就该这么学》 - 作者:刘遄
    《linux运维之道》- 作者:丁明一


    Samba 服务概述

    Samba是SMB的一种实现方法,主要用来实现Linux系统的文件和打印服务.Linux用户通过配置使用Samba服务器可以实现与Windows用户的资源共享.守护进程smbd和nmbd是Samba的核心,在全部时间内运行.nmbd程序使得通过企图计算机可以浏览Linux服务器.

    SMB (Server Messages Block 信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务.SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源.通过设置 "NetBIOS over TCP/IP" 使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源.

    smb: 实现资源共享、权限验证 -> TCP 139 445
    nmb: 实现计算机名解析 -> UDP 137

    Samba和FTP的区别

    Samba可以实现跨平台的文件传输,并且支持在线修改,这一点是它和FTP服务器的明显区别.

    Linux 系统之间的资源共享,我们使用的是NFS协议.
    Windows 系统之间的资源共享,我们使用的是NetBIOS协议.
    Linux 和 Windows 之间资源共享我们就要使用SMB协议了.CIFS协议.

    Samba的作用

    1.共享文件与打印机等资源的服务
    2.支持跨平台访问的身份验证和权限设置,支持SSL
    3.解析NetBIOS名字:Samba通过nmbd服务可以搭建NBNS(NetBIOS Name Service)服务器,提供名称解析,将 计算机的NetBIOS名解析为IP地址,实现主机之间的访问定位(windows独有).

    匿名验证Samba配置

    匿名Samba的主要作用是,在局域网内编辑共享文件,比如你有一个word文件需要让大家填写,此时我们就可以使用Samb服务将Word文档匿名分享出去,让大家填写文档

    ◆配置服务端◆

    1.首先通过yum,来安装samba服务程序,恰巧samba服务名也是samba

    [root@localhost ~]# yum install -y samba samba-client
    Loaded plugins: product-id, search-disabled-repos, subscription-manager
    This system is not registered with an entitlement server. You can use subscription-manager.
    Package samba-4.7.1-6.el7.x86_64 already installed and latest version
    Package samba-client-4.7.1-6.el7.x86_64 already installed and latest version
    Nothing to do
    

    2.然后创建一个共享目录,这个目录主要用来存储一些文件,后期要共享出去

    [root@localhost ~]# mkdir /smb_file
    [root@localhost ~]#
    [root@localhost ~]# chmod 755 -R /smb_file/
    [root@localhost ~]#
    

    3.编辑Samba主配置文件,在配置文件最下面创建匿名共享区域,如果有多个匿名区域可以继续往下写配置

    [root@localhost ~]# vim /etc/samba/smb.conf
    
      6 [global]
      7         workgroup = SAMBA
      8         security = user
      9         map to guest=Bad User   #添加此项,开启免密码认证
    
     .....
     38
     39 [smb_file]                       #共享目录显示的名称
     40         comment=hello guest      #描述信息(可以自定义)
     41         path=/smb_file           #共享的目录
     42         browseable=yes           #共享目录是否对所有人可见
     43         guest ok=yes             #允许匿名用户访问
     44         writable=yes             #匿名用户可写
     45         public=yes               #所有人可见
    

    4.重启SMB服务,并设置开机自启动

    [root@localhost ~]# systemctl restart smb
    [root@localhost ~]# systemctl enable smb
    

    ◆配置Linux客户端◆

    1.首先想要使用Samba资源,需要在Linxu客户端安装一个Samba的客户端工具,下面就开始安装吧

    [root@localhost ~]# yum install -y samba-client
    Loaded plugins: product-id, search-disabled-repos, subscription-manager
    This system is not registered with an entitlement server. You can use subscription-manager.
    Package samba-client-4.7.1-6.el7.x86_64 already installed and latest version
    Nothing to do
    

    2.匿名用户访问,我们可以直接使用下面的命令无需输入密码直接扫描资源,并使用

    [root@localhost ~]# smbclient -L //服务器IP	             #查看smaba共享目录
    
    Enter SAMBA root s password:
    
            Sharename       Type      Comment
            ---------       ----      -------
            print$          Disk      Printer Drivers
            smb_file        Disk      hello guest
            IPC$            IPC       IPC Service (Samba 4.7.1)
    Reconnecting with SMB1 for workgroup listing.
    
            Server               Comment
            ---------            -------
    
            Workgroup            Master
            ---------            -------
    
    [root@localhost ~]# smbclient //服务器IP/共享名			#查看共享文件
    
    Enter SAMBA root s password:
    Try "help" to get a list of possible commands.
    smb: > ls
      .                                  DR        0  Mon Nov  5 04:53:30 2018
      ..                                 DR        0  Mon Nov  5 04:45:11 2018
                    17811456 blocks of size 1024. 16582792 blocks available
    smb: >
    

    ◆配置Windows客户端◆

    运行CMD(Win+R) > 输入:\服务器IP	共享资源名			#访问目录
    
    C:UsersLyShark>net use * /del               #清理windows目录缓存
    你有以下的远程连接:
    
                        \192.168.1.20smb_file
    继续运行会取消连接。
    
    你想继续此操作吗? (Y/N) [N]: y
    命令成功完成。
    

    密码验证Samba配置

    基于密码验证的Samba的常用作用是,在局域网内,实现加密访问,只有知道相应密码的人才能访问指定资源

    ◆配置服务端◆

    1.首先通过yum,来安装samba服务程序,恰巧samba服务名也是samba

    [root@localhost ~]# yum install -y samba samba-client
    Loaded plugins: product-id, search-disabled-repos, subscription-manager
    This system is not registered with an entitlement server. You can use subscription-manager.
    Package samba-4.7.1-6.el7.x86_64 already installed and latest version
    Package samba-client-4.7.1-6.el7.x86_64 already installed and latest version
    Nothing to do
    

    2.然后创建一个共享目录,这个目录主要用来存储一些文件,后期要共享出去

    [root@localhost ~]# mkdir /smb_file
    [root@localhost ~]#
    [root@localhost ~]# chmod 755 -R /smb_file/
    [root@localhost ~]#
    

    3.编辑Samba主配置文件,在配置文件最下面创建共享区域,如果有多个区域可以继续往下写配置

    [root@localhost ~]# vim /etc/samba/smb.conf
    
     39 [smb_file]                       #共享目录显示的名称
     40         comment=hello admin      #描述信息(可以自定义)
     41         path=/smb_file           #共享的目录
     42         browseable=yes           #共享目录是否对所有人可见
     43         guest ok=no              #允许匿名用户访问
     44         writable=yes             #可写
    

    4.通过命令管理,创建一个系统用户,并转换为Samba用户

    [root@localhost ~]# useradd -M -s /sbin/nologin admin      #创建一个系统用户
    [root@localhost ~]# smbpasswd -a admin                     #将系统用户转化成Samba用户
    -----------------------------------------------------------------
    [参数说明]
    
    smbpasswd [选项] 账户名称
    
      -a        #添加账户并设置密码
      -x        #删除SMB账户
      -d        #禁用SMB账户
      -e        #启用SMB账户
    -----------------------------------------------------------------
    
    [root@localhost ~]# useradd -M -s /sbin/nologin guest      #创建一个系统用户
    [root@localhost ~]# pdbedit -a guest                       #将系统用户转化成Samba用户
    new password:
    retype new password:
    Unix username:        guest
    NT username:
    Account Flags:        [U          ]
    User SID:             S-1-5-21-2500030998-3215874083-1041928306-1001
    Primary Group SID:    S-1-5-21-2500030998-3215874083-1041928306-513
    Full Name:
    Home Directory:       \localhostguest
    HomeDir Drive:
    Logon Script:
    Profile Path:         \localhostguestprofile
    Domain:               LOCALHOST
    Account desc:
    Workstations:
    Munged dial:
    Logon time:           0
    Logoff time:          Wed, 06 Feb 2036 10:06:39 EST
    Kickoff time:         Wed, 06 Feb 2036 10:06:39 EST
    Password last set:    Mon, 05 Nov 2018 06:23:37 EST
    Password can change:  Mon, 05 Nov 2018 06:23:37 EST
    Password must change: never
    Last bad password   : 0
    Bad password count  : 0
    Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    
    
    [root@localhost ~]# pdbedit -L                             #列出所有Samba用户
    admin:1001:
    guest:1002:
    

    5.重启SMB服务,并设置开机自启动

    [root@localhost ~]# systemctl restart smb
    [root@localhost ~]# systemctl enable smb
    

    ◆配置Linux客户端◆

    1.首先想要使用Samba资源,需要在Linxu客户端安装一个Samba的客户端工具,下面就开始安装吧

    [root@localhost ~]# yum install -y samba-client
    Loaded plugins: product-id, search-disabled-repos, subscription-manager
    This system is not registered with an entitlement server. You can use subscription-manager.
    Package samba-client-4.7.1-6.el7.x86_64 already installed and latest version
    Nothing to do
    

    2.用户访问,我们可以直接使用下面的命令输入密码扫描资源,并使用

    [root@localhost ~]# smbclient -U 用户名 -L //服务器IP               #查看共享目录
    Enter SAMBA dmin s password:
    
            Sharename       Type      Comment
            ---------       ----      -------
            print$          Disk      Printer Drivers
            smb_file        Disk      hello admin
            IPC$            IPC       IPC Service (Samba 4.7.1)
            admin           Disk      Home Directories
    Reconnecting with SMB1 for workgroup listing.
    
            Server               Comment
            ---------            -------
    
            Workgroup            Master
            ---------            -------
    
    [root@localhost ~]# smbclient -U 用户名 //服务器IP/共享文件名      #查看共享文件
    Enter SAMBA dmins password:
    Try "help" to get a list of possible commands.
    smb: > ls
      .                                   D        0  Mon Nov  5 06:30:02 2018
      ..                                 DR        0  Mon Nov  5 06:17:37 2018
      lyshark                             N      988  Mon Nov  5 06:23:28 2018
    
                    17811456 blocks of size 1024. 16584148 blocks available
    

    ◆Linux挂载Samba◆

    1.将远程的smb_file共享目录,挂载到本地的/mnt下,我们可以执行以下命令

    [文件格式]  [/smb_file共享目录][挂载到/mnt] [username=smb用户名][password=smb密码]
    
    [root@localhost ~]# mount -t cifs //192.168.1.20/smb_file /mnt -o username=admin,password=123123
    [root@localhost ~]#
    [root@localhost ~]# df -h
    Filesystem               Size  Used Avail Use% Mounted on
    /dev/mapper/rhel-root     17G  1.2G   16G   7% /
    //192.168.1.20/smb_file   17G  1.2G   16G   7% /mnt
    

    Samba ACL权限控制

    允许单个IP拒绝所有

    [common]
    
    comment=Common Share 
    hosts allow =  IP地址
    hosts deny =  IP地址
    

    允许单个网段,拒绝所有

    [common]
    
    path =/common 
    hosts allow =127.0.0.0/24  example
    hosts deny =127.0.0.0/24  example
    
    

    Samba 给用户取别名

    1.修改主配置文件

    vim /etc/samba/smbusers
    
    用户名=别名1 别名2
    
    lyshark= wang rui
    
    

    2.主配置文件加入以下内容

    vim /etc/samba/smb.conf
    username map = /etc/samba/smbusers
    

    版权声明: 本博客,文章与代码均为学习时整理的笔记,博客中除去明确标注有参考文献的文章,其他文章【均为原创】作品,转载请务必【添加出处】,您添加出处是我创作的动力!

    警告:如果您恶意转载本人文章,则您的整站文章,将会变为我的原创作品,请相互尊重!
  • 相关阅读:
    Win10 Theano Install Guide
    mysql 查看版本和是否支持分区
    [mysql]Date和String相互转换(DATE_FORMAT&STR_TO_DATE)
    mysql运用now(3)存储时间到毫秒
    mysql按天,按周,按月,按季度,按年统计数据
    对象的copy
    定时调度任务quartz
    mysql使用navicat编写调用存储过程
    mysql批量插入,批量更新
    Mybatis分页插件pagehelper的使用
  • 原文地址:https://www.cnblogs.com/LyShark/p/11857942.html
Copyright © 2020-2023  润新知