1.Samba服务

        blob.png

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

        Samba是一套使用SMB(Server Message Block)协议的应用程序, 通过支持这个协议, Samba允许Linux服务器与Windows系统之间进行通信,使跨平台的互访成为可能。Samba采用C/S模式, 其工作机制是让NetBIOS( Windows 网上邻居的通信协议)和SMB两个协议运行于TCP/IP通信协议之上,并且用NetBEUI协议让Windows在“网上邻居”中能浏览Linux服务器。

        Samba服务器包括两个后台应用程序: Smbd 和 Nmbd。Smbd 是Samba的核心, 主要负责建立 Linux Samba服务器与Samba客户机之间的对话, 验证用户身份并提供对文件和打印系统的访问; Nmbd主要负责对外发布Linux Samba服务器可以提供的NetBIOS名称和浏览服务,使Windows用户可以在“网上邻居”中浏览Linux Samba服务器中共享的资源。另外Samba还包括一些管理工具, 如 smb-client, smbmount, testparm, Smbpasswd 等程序。

        Samba服务器可实现如下功能:WINS和DNS服务; 网络浏览服务; Linux和Windows域之间的认证和授权; UNICODE字符集和域名映射;满足CIFS协议的UNIX共享等。

    Samba的主要应用

         SAMBA的主要目的就是用来沟通Windows与Unix这两种不同的作业平台。

        主要应用:共享档案与打印机服务;提供身份认证;提供Windows网络上的主机名称解析(NetBIOS name)。

    NetBIOS通讯协议

        SAMBA是架构在NetBIOS(Network Basic Input/Output System,NetBIOS)这个通讯协议上的。NetBIOS是一个让同一局域网络内计算机进行网络连结的一个通讯协议。因此,它是无法跨路由的 (Router/Gateway)。NetBIOS over TCP/IP是将NetBIOS协议封装在TCP/IP中,这样NetBIOS就可以跨路由传输了。

    Samba的两个进程

        SAMBA主机使用两个进程来管理两个不同的服务:

        smbd:用来处理文件和打印服务请求。

        nmbd:用来处理NetBIOS名称服务请求和网络浏览功能。

        当我们启动了SAMBA之后,主机系统就会启动137,138,139这三个port,并且同时会有TCP/UDP的监听服务。

    两种联机模式

        两种最常见的局域网联机模式:peer/peer及domain model。

        peer/peer:局域网内各PC机之间独立运行,适用于小型网络。

        domain model:局域网内各PC机统一通过PDC主机认证(LDAP),以获取适当的权限,适用于大中型网络。

    Samba的几个主要配置文件(/etc/samba)

        smb.conf:最主要的配置文件,分为[global]和[Share Definitions]两个部分。

        lmhosts:对应NetBIOS Name与该主机的IP,一般Samba在启动时就能捕捉到LAN中相关计算机NetBIOS Name对应的IP,因此,这个配置文件一般不用设置。

        smbpasswd:这个文件默认不存在,它是Samba预设的使用者密码对应表。

    Samba的几个主要命令

        smbpasswd:用来设置Samba用户的帐号和密码。

        smbclient:用来查看别的Linux主机的共享。也可以在自己的Samba主机上使用,用来查看设置是否成功。

        smbmount:用来将Samba服务器共享的文档和目录挂载到自己的Linux主机上。

        testparm:用来检查smb.conf是否有错误。

    smb.conf的几个常用变量

        客户端变量

            %a : 客户端的体系结构(例如Samba,NT,Win98,或者Unknown)    

            %I  : 客户端的IP地址(例如:192.168.220.100)

            %m: 客户端的NetBios名

            %M: 客户端的DNS名 

        用户变量

            %g : %u的基本组

            %G : %U的基本组

            %H : %u的Home目录

            %u : 当前的unix用户名

            %U : 被请求的客户端用户名(不总是被samba使用)

        共享变量

            %p : 如果和%p不同,automounter的路径对应共享的根目录

            %P : 当前共享的根目录

            %S : 但前共享的名称

        服务器变量

            %d : 当前服务器进程的ID

            %h : Samba服务器的DNS主机名

            %L : Samba服务器的netbios名

            %N : Home目录服务器,来自automount的映射

            %v : samba版本

        其他变量

            %R : 经过协商的SMB协议

            %T : 当前的日期和时间

    四种安全等级

        (1)security=share:用户访问Samba服务器不需要提供用户名和口令, 安全性能较低。

        (2)security=user:Samba服务器默认的安全等级, 每一个共享目录只能被一定的用户访问, 并由Samba服务器负责检查账号和密码的正确性。

        (3)security=server:服务器安全级别,依靠其他Windows NT/2000或Samba服务器来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。

        (4)security=domain:域安全级别,使用主域控制器(PDC)来完成认证。

2.安装Samba服务

        查看服务是否安装在服务器上

[root@linux-node-1 ~]# rpm -qa | grep samba
[root@linux-node-1 ~]#

        没有安装,进行安装。

[root@linux-node-1 ~]# rpm -qa | grep samba
samba-winbind-3.6.23-36.el6_8.x86_64
samba-common-3.6.23-36.el6_8.x86_64
samba-3.6.23-36.el6_8.x86_64
samba-winbind-clients-3.6.23-36.el6_8.x86_64

        修改配置文件进行共享

[root@linux-node-1 ~]# cd /etc/samba/
[root@linux-node-1 samba]# cp smb.conf smb.conf.ori
[root@linux-node-1 samba]# vi smb.conf
[root@linux-node-1 samba]# diff smb.conf smb.conf.ori
74c74
< 	workgroup = WORKGROUP
---
> 	workgroup = MYGROUP
80c80
< 	hosts allow = 192.168.0.0/16
---
> ;	hosts allow = 127. 192.168.12. 192.168.13.
101c101
< 	security = share
---
> 	security = user
289,292d288
< [share]     
< path = /var/samba/share     
< read only = no
< public   = yes

        share是设置共享的模块。、workgroup和host allow是设置在全局模块中的。

        创建、授权、启动samba。

[root@linux-node-1 samba]# mkdir /var/samba/share -p
[root@linux-node-1 samba]# /etc/init.d/smb start
[root@linux-node-1 samba]# ps -ef|grep smb
root       8509      1  0 23:02 ?        00:00:00 smbd -D
root       8511   8509  0 23:02 ?        00:00:00 smbd -D
root       8514   7253  0 23:02 pts/2    00:00:00 grep smb
[root@linux-node-1 samba]# useradd share -M -s /sbin/nologin 
[root@linux-node-1 samba]# echo 123456|passwd --stdin share
Changing password for user share.
passwd: all authentication tokens updated successfully.
[root@linux-node-1 samba]# chown nobody:nobody /var/samba -R

        windows查看是否能共享

blob.png

blob.png

blob.png

        创建一个文件进行测试,查看权限是否正确

       blob.png

        在服务上进行授权

[root@linux-node-1 samba]# chown nobody:nobody /var/samba -R

        blob.png


        服务器上查看是否存在这个文件夹

[root@linux-node-1 samba]# ll /var/samba/share/
total 4
drwxr-xr-x 2 nobody nobody 4096 Nov  7 23:41 test

        好了,共享配置完成了,在内网中可以linux可以和windows共享文件了。

mac 电脑上需要连接samba地址

smb://x.x.x.x