samba服务主要是linux系统与windows系统之间建议一个桥梁,主要用于共享打印机和文件。

应用环境有:

文件和打印机共享:

        文件和打印机共享是Samba的主要功能,SMB(SMB协议,server message block服务消息块)进程实现资源共享,将文件和打印机发布到网络之中,以供用户可以访问。

身份验证和权限设置:

        smbd服务支持user mode和domain mode等身份验证和权限设置模式,通过加密方式可以保护共享的文件和打印机。

名称解析:

        Samba通过nmbd服务可以搭建NBNS(NetBIOS Name Service)服务器,提供名称解析,将计算机的NetBIOS名解析为IP地址。

浏览服务:

        局域网中,Samba服务器可以成为本地主浏览服务器(LMB),保存可用资源列表,当使用客户端访问Windows网上邻居时,会提供浏览列表,显示共享目录、打印机等资源。

工作流程:

当客户端访问samba服务器时,信息通过SMB协议进行传输,步骤有4个:

1.协议协商

客户端访问samba服务器时,发送negprot指令数据包,告知目标计算机支持的SMB类型,samba服务器根据客户端的情况,选择最优的SMB类型,并作出回应。

2.建立连接

当SMB类型确认后,客户端会发送session setup指令数据包,提交帐号和密码,请求与samba服务器进行连接,通过验证,服务器会对session setup报文作出回应,并为用户分配唯一的UID,在客户端与服务器通信。

3.访问共享资源

客户端发送tree connect指令数据包,通知服务器需要访问的共享资源名,若设置允许,samba服务器会为每个客户端与共享资源链接分配TID

4. 断开链接

共享使用完毕后,客户端发送tree disconnect报文关闭共享

相关进程:

1.nmbd进程

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

2.smbd进程

管理samba服务器上的共享资源,如打印机和文件,当访问服务器查找资源时,就是这个smbd进程来传输数据

注:可源码安装单一服务进程。

所需软件

samba-3.6.9-164.el6.x86_64.rpm     samba服务主程序包

samba-client-3.6.9-164.el6.x86_64.rpm     客户端所需软件包

samba-common-3.6.9-164.el6.x86_64.rpm      服务器与客户端所需的工作和库文件

samba-winbind-clients-3.6.9-164.el6.x86_64.rpm    客户端工具

samba-winbind-3.6.9-164.el6.x86_64.rpm    映射服务和客户端工具(将windows下用户映射到linux下)

samba服务器的配置文件/etc/samba/smb.conf设置:

此配置文件包括以下几部分:

1)Global Settings 全局设置,对所有的共享文件都生效,其中包括:

    Network Related Options:相关服务设置

        workgroup 服务所在工作组

        server string :samba服务器名称,v%表示版本号

        netbios name:在网络邻居上的名字,不设置用原来的主机名

        interfaces:网络接口

        hosts allow:指定可以访问samba服务器的ip

    Logging Options日志设置:

        log file:日志文件目录及名称

        max log size:日志大小KB

    Standalone Server Options独立服务器设置安全等级:

        security:安全级别有share(客户端登录samba服务器不需要密码) user(需要合法的帐号密码) server(需要帐号密码且需要一台samba来验证帐号密码) domain(samba服务器加入windows环境,由windows来验证帐号密码) 

        passdb backend:这个是用户后台的意思,有smbpasswd、tdbsam和ldapsam三种。

                tdbsam是用数据库来记录用户数据,保存在/var/lib/samba/private/passdb.tdb下,默认选项。

                smbpasswd是使用smbpasswd来给系统用户(真实用户或者虚拟用户)设置一个Samba密码。

                ldapsam该方式则是基于LDAP的账户管理方式来验证用户。首先要建立LDAP服务,然后设置“passdb backend = ldapsam:ldap://LDAP Server”。

    Domain Members Options:指定一台samba来验证帐号密码设置

    Domain Controller Options,Browser Control Options,Name Resolution,Printing Options,Filesystem Options。

2)Share Definitions共享服务定义

    [xxx]     xxx表示共享文件名,在windows中输入地址是 是这个名称哦。如\\192.168.1.1\xxx

     ;和#都是注释

    comment:对共享的描述

    path:共享路径

    browseable:共享目录是否可见

    guest ok :当为yes时,只要在域都可以使用打印机

    writable:共享目录是否可写

    readonly:共享目录是否只读

    public:是否允许guest账户访问

    read list:只读访问用户列表(是一个组)

    write list :可写访问用户列表 (是一个组)

    valid users:允许使用服务的列表(是一个组)

    invalid users:不允许使用服务的列表(是一个组)


注:

1.在windows下登录samba服务器,提示需要帐号密码,使用smbpasswd -a 创建samba用户的密码。此用户必须是系统中真是存在的。

2.在windows下拷贝文件到共享目录中,提示无权限。共享目录需要是可写的权限,查看用户是否有权限写入目录中。

3.查看已连接的主机

[root@www ~]# smbstatus

Samba version 3.6.9-164.el6
PID     Username      Group         Machine
-------------------------------------------------------------------
 <processes do not show up in anonymous mode>

Service      pid     machine       Connected at
-------------------------------------------------------
IPC$         1827   192.168.1**.1  Tue Oct 16 08:29:13 2018

No locked files

[root@www ~]#

4.若windows下登录samba慢。需要查看/etc/sysconfig/network 与 /etc/hosts是否一致。需重启

5.查看DNS。

6.我的配置文件内容是

[global]
        workgroup = samba
        server string = wori
        log file = /var/log/samba/samba.log
        max log size = 100
        security = user
        passdb backend = tdbsam
[data]
        comment = test samba
        path = /data/test
        browseable = yes
        writable =  yes
        readonly =  no