一、samba简介

Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。后来微软又把 SMB 改名为 CIFS(Common Internet File System),即公共 Internet 文件系统,并且加入了许多新的功能,这样一来,使得Samba具有了更强大的功能。Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows之间的数据共享上面。

二.Samba的应用环境

一个samba服务器实际上包含了两个服务器程序:smbd和nmbd。

Smbd是samba的核心。它负责建立对话进程、验证用户身份、提供对文件系统和打印机的访问机制,只有smb服务启动,才能实现文件的共享。Nmbd实现了“Network Brower”(网络浏览服务器)的功能,实现NETBIOS(本地名称解析)功能,如果该服务没有启动,则客户端不能通过Linux系统共享的工作组名称访问共享文件,而只能通过IP地址来访问共享的文件。Samba还包含了一些实用工具。Smbclient是一个SMB客户工具,有shell-based用户界面并同FTP有些类似。应用它可以复制其它的SMB服务器资源,还可以访问其它SMB服务器提供的打印机资源。

三.SMB协议

MB(全称是Server Message Block)是一个协议名,可用于在计算机间共享文件、打印机、串口等,电脑上的网上邻居就是靠它实现的。SMB 是一种客户机/服务器、请求/响应协议。通过 SMB 协议,客户端应用程序可以在各种网络环境下读、写服务器上的文件,以及对服务器程序提出服务请求。此外通过 SMB 协议,应用程序可以访问远程服务器端的文件、以及打印机等资源。SMB一开始的设计是在NetBIOS协议上运行的,而NetBIOS本身则运行在NetBEUI、IPX/SPX或TCP/IP协议上。NetBIOS 使用下列端口:UDP/137(NetBIOS 名称服务)、UDP/138(NetBIOS 数据报服务)、TCP/139(NetBIOS 会话服务);SMB 使用下列端口:TCP/139、TCP/445。  #NetBIOS用于局域网内主机名发现。

四.samba的工作原理

Samba服务功能强大,这与其通信基于SMB/CIFS协议有关。SMB不仅提供目录和打印机共享,还支持认证、权限设置。在早期,SMB运行于NBT协议(NetBIOS over TCP/IP)上,使用UDP协议的137、138及TCP协议的139端口;后期SMB经过开发,可以直接运行于TCP/IP协议上,没有额外的NBT层,使用TCP协议的445端口。

1.samba的配置

root@smaba ~]# rpm -qa|grep samba
samba-common-libs-4.10.16-5.el7.x86_64
samba-client-4.10.16-5.el7.x86_64
samba-common-4.10.16-5.el7.noarch
samba-4.10.16-5.el7.x86_64
samba-client-libs-4.10.16-5.el7.x86_64
samba-libs-4.10.16-5.el7.x86_64
samba-common-tools-4.10.16-5.el7.x86_64

samba在linux已经下载安装完毕

2.启用与停止samba服务,设置开机启动

[root@smaba ~]# systemctl start smb
[root@smaba ~]# systemctl enable smb
[root@smaba ~]# systemctl restart smb
[root@smaba ~]# systemctl stop smb
[root@smaba ~]# systemctl start smb

3.samba部署

[global]
        workgroup = SAMBA
        security = user

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
        load printers = no
        cups options = raw
        printcap name = /del/null
        # obtin a list of printers automatically on UNIX System V system:
        printcap name = lpstar
        printing = bsd
        disable spoolss = yes
[homes]
        comment = Home Directories
        valid users = %S, %D%w%S
        browseable = No
        read only = No
        inherit acls = Yes

[printers]
        comment = All Printers
        path = /var/tmp
        printable = Yes
        create mask = 0600
        browseable = No

[print$]
        comment = Printer Drivers
        path = /var/lib/samba/drivers
        write list = @printadmin root
        force group = @printadmin
        create mask = 0664
        directory mask = 0775
[share]
       path = /opt/share
       browseable = yes
       public = yes
       writable =yes
[root@smaba ~]# yum install -y net-tools
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.nju.edu.cn
 * extras: mirrors.bupt.edu.cn
 * updates: mirrors.nju.edu.cn
base                                                                           | 3.6 kB  00:00:00     
extras                                                                         | 2.9 kB  00:00:00     
updates                                                                        | 2.9 kB  00:00:00     
(1/4): base/7/x86_64/group_gz                                                  | 153 kB  00:00:00     
(2/4): extras/7/x86_64/primary_db                                              | 249 kB  00:00:00     
(3/4): base/7/x86_64/primary_db                                                | 6.1 MB  00:00:01     
(4/4): updates/7/x86_64/primary_db                                             |  21 MB  00:00:13     
软件包 net-tools-2.0-0.25.20131004git.el7.x86_64 已安装并且是最新版本
无须任何处理
[root@smaba ~]# netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      5571/smbd           
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      5571/smbd           
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1194/rpcbind        
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      2081/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1538/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1537/cupsd          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1832/master         
tcp6       0      0 :::445                  :::*                    LISTEN      5571/smbd           
tcp6       0      0 :::139                  :::*                    LISTEN      5571/smbd           
tcp6       0      0 :::111                  :::*                    LISTEN      1194/rpcbind        
tcp6       0      0 :::22                   :::*                    LISTEN      1538/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      1537/cupsd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      1832/master

将network-scripts/ifcfg-ens33 中的onboot改成yes

4.创建smaba用户

root@smaba ~]# smbpasswd -a root
New SMB password:
Retype new SMB password:
[root@smaba ~]# pdbedit -L
root:0:root