一、 简介

        Samba是基于SMB/CIFS(Server Message Block/Common Internet File System)协议的一个自由开源的软件套件(Samba is an Open Source/Free Software suite that provides seamless file and print services to SMB/CIFS clients),是windows和unix系列OS的沟通桥梁。主要应用于局域网的文件和打印共享上。

二、 Samba工作原理

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

工作流程

· 协议协商

客户端发起SMB请求告知SMB类型,服务器进行最优选择进行回复

samba是谁开发的 简述samba的工作原理_服务器

· 建立连接

确认SMB类型后,client提交账号和密码请求与server建立连接,如果验证通过,server就会做出回应,并且配唯一的UID

samba是谁开发的 简述samba的工作原理_TCP_02

· 访问共享资源

Client访问server资源时,会发送tree connect数据包,通知服务器需要访问的资源名称,如果设置允许,则server会为客户与共享资源分配TID。

samba是谁开发的 简述samba的工作原理_TCP_03

· 断开连接

共享完毕后client向server发送tree disconnect报文关闭共享,与服务器断开连接

samba是谁开发的 简述samba的工作原理_samba是谁开发的_04

Samba相关进程

Samba服务是由两个进程组成,分别是nmbd和smbd。

nmbd:其功能是进行NetBIOS名解析,并提供浏览服务显示网络上的共享资源列表。

smbd:其主要功能就是用来管理Samba服务器上的共享目录、打印机等,主要是针对网络上的共享资源进行管理的服务。当要访问服务器时,要查找共享文件,这时我们就要依靠smbd这个进程来管理数据传输。

三、 Samba相关软件的安装

查看samba是否已经安装

[root@sharecast yum.repos.d]# rpm -qa | grep samba              
 #建议使用RPM查询当然也可以使用yum list installed list | grep samba,但RPM输出结果比较简洁

samba-winbind-clients-3.6.9-151.el6.i686                   
#与windows域认证相关的客户端

samba-common-3.6.9-151.el6.i686                 #通用的配置文件

samba-client-3.6.9-151.el6.i686                  #samba客户端

samba-winbind-3.6.9-151.el6.i686                 #认证windows域的服务

samba4-libs-4.0.0-55.el6.rc4.i686         #samba需要调用的相关的库文件

[root@sharecast yum.repos.d]# yum install -y samba                   

#进行安装samba服务软件

[root@sharecast yum.repos.d]# rpm -qa | grep samba                 

#安装完毕可以再进行查看

samba-winbind-clients-3.6.9-151.el6.i686

samba-common-3.6.9-151.el6.i686

samba-client-3.6.9-151.el6.i686

samba-3.6.9-151.el6.i686                    

#这个就是我们刚才安装的,这里的版本是3.6.9

samba-winbind-3.6.9-151.el6.i686

samba4-libs-4.0.0-55.el6.rc4.i686

#服务的相关命令
#在RHEL下可以使用service

[root@sharecast yum.repos.d]# service smb start

Starting SMB services: [ OK ]

#通用的启动可以使用这个方法

[root@sharecast yum.repos.d]# /etc/init.d/smb stop            #停止服务

Shutting down SMB services: [ OK ]

[root@sharecast yum.repos.d]# /etc/init.d/smb restart         #重启服务

Shutting down SMB services: [ OK ]

Starting SMB services: [ OK ]

[root@sharecast yum.repos.d]# /etc/init.d/smb status 
#查看服务是否运行

smbd (pid 30582) is running...

[root@sharecast yum.repos.d]# service smb reload                  
#重载服务,更改配置后可以使用此命令使其生效

Reloading smb.conf file: [ OK ]

[root@sharecast ~]# chkconfig smb on               #开机自动启动服务

[root@sharecast ~]# chkconfig --list | grep smb #查看一下是否开启成功

smb 0:off 1:off 2:on 3:on 4:on 5:on 6:off

#关于防火墙和selinux

#刚开始我们可以关掉防火墙和selinux,到时候学了iptables在回来琢磨该怎么配置

关闭selinux

[root@sharecast ~]# vim /etc/selinux/config 

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

# enforcing - SELinux security policy is enforced.

# permissive - SELinux prints warnings instead of enforcing.

# disabled - No SELinux policy is loaded.

#SELINUX=enforcing                    #注释掉这行

# SELINUXTYPE= can take one of these two values:

# targeted - Targeted processes are protected,

# mls - Multi Level Security protection.

SELINUXTYPE=targeted 

SELINUXTYPE=disable          #然后添加这个行,重启系统才可以生效

[root@sharecast ~]# getenforce           #查看selinux是否关闭

Disabled

关闭防火墙

[root@sharecast ~]# service iptables stop                  
 #注意iptables并不是一个服务,它是selinux的一部分,直接与内核打交道

iptables: Flushing firewall rules: [ OK ]

iptables: Setting chains to policy ACCEPT: filter [ OK ]

iptables: Unloading modules: [ OK ]

[root@sharecast ~]# chkconfig iptables off

[root@sharecast ~]# chkconfig --list | grep iptables

iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off