samba简介
    samba服务器可以使用户在不同的操作系统之间进行文件共享。samba服务器提供了在windows环境下共享linux中用户目录的一个工具。在linux中安装samba后,windows用户只需要进行简单的登陆,就可以利用资源管理器直接操作,linux的目录做的驱动器。
    SMB协议
    windows采用TCP/IP作为底层协议,发送NetBIOS请求,而在NetBIOS的上层,采用了SMB[(Server Message Block)服务器消息块]作为接口,实现windows的文件与打印等资源的共享
    SMB 是在会话层(session layer)和表示层(presentation layer)以及小部分应用层(application layer)的协议。SMB使用了NetBIOS的应用程序接口 (Application Program Interface,简称API)。另外,它是一个开放性的协议,允许了协议扩展——使得它变得更大而且复杂;大约有65个最上层的作业,而每个作业都超过120个函数,甚至Windows NT也没有全部支持到,最近微软又把 SMB 改名为 CIFS(Common Internet file System),并且加入了许多新的特色。
    SMB协议是基于TCP-NETBIOS下的,一般端口使用为139,445.
    SMB工作原理
    image.png
    (1)协议协商:先在客户端发送一个SMB negprot请求数据包,列出它支持的所有SMB协议版本。服务器收到请求信息后,会根据客户端的情况,选择最优版本回应。
    (2)建立连接:确定协议后,客户端会向服务器发送一个用户或共享的认证,这个过程是通过发送session setup请求数据包实现的。客户端发送一对用户名和密码或者是一次简单密码到服务器,然后服务器会回复一个session setup应答数据来允许或拒绝本次连接。
    (3)访问共享资源:当客户端和服务器完成协商和连接认证后,它会发送tree connect数据包并列出它想访问的网络资源的名字,然后服务器又回它一个tree connect的应当数据包表示允许或拒绝。如果设置允许,samba就会为每个客户端与共享资源连接分配TID,客户端就能访问需要的共享资源。
    (4)断开连接:共享完毕后,客户端会向服务器发送tree disconnect报文,关闭共享,与服务器断开连接 PS:(交往之初费尽心思,分手倒是挺果断的,渣男协议!)
    samba功能
    (1)文件和打印机共享:将文件和打印机发布到网络中,供用户访问。
    (2)身份验证和权限设置:通过smdb进程实现身份验证和权限设置,也可以通过加密方式保护共享的文件和打印机。
    (3)名称解析:通过nmbd进程搭建NBNS(NetBIOS Name Service)服务器,提供名称解析,将计算机的NetBIOS名解析成IP地址。
    (4)浏览服务:在局域网里,samba作为本地文件主浏览服务器,可以保存可用资源列表。还可以给客户端访问windows网络邻居提供浏览列表,显示共享目录,打印机等资源。
    安装samba服务器
    1.[root@izgt88z6l1kvd7z ~]# yum -y install samba //安装
    2.[root@izgt88z6l1kvd7z ~]# systemctl start smb.service //开启
    查看samba状态
    [root@izgt88z6l1kvd7z ~]# systemctl status smb.service
    ● smb.service - Samba SMB Daemon
    Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled; vendor preset: disabled)
    Active: active (running) since Sun 2020-05-10 14:59:07 CST; 5h 23min ago //活动状态
    Docs: man:smbd(8)
    man:samba(7)
    man:smb.conf(5)
    Main PID: 28614 (smbd)
    Status: “smbd: ready to serve connections…”
    CGroup: /system.slice/smb.service
    ├─28614 /usr/sbin/smbd —foreground —no-process-group
    ├─28616 /usr/sbin/smbd —foreground —no-process-group
    ├─28617 /usr/sbin/smbd —foreground —no-process-group
    └─28618 /usr/sbin/smbd —foreground —no-process-group
    May 10 14:59:07 izgt88z6l1kvd7z systemd[1]: Starting Samba SMB Daemon…
    May 10 14:59:07 izgt88z6l1kvd7z smbd[28614]: [2020/05/10 14:59:07.716995, 0] ../../lib/util/become_daemon.c:136(daemon_ready)
    May 10 14:59:07 izgt88z6l1kvd7z systemd[1]: Started Samba SMB Daemon.
    May 10 14:59:07 izgt88z6l1kvd7z smbd[28614]: daemon_ready: daemon ‘smbd’ finished starting up and ready to serve connections
    samba的配置
    samba的默认配置文件是/etc/samba/smb.conf
    image.png
    [global] 全局配置
    [homes]
    [peinters]
    [print$]都是共享部分
    samba的日志与账号
    1.samba的服务日志文件存放在 /var/log/samba中
    2.samba的服务密码文件存放在 /etc/samba/smbpasswd中
    samba账号不能直接创建,必须存在对应的同名系统账号。添加samba账号命令为:smbpasswd -a
    过程大概是:
    adduser
    passwd

    smbpasswd -a *