当前位置:Linux教程 - Linux - Linux资源共享的方法

Linux资源共享的方法



        

    I. Samba原理
    最近几年来,Linux的崛起引起各方面的普遍关注。而在现实世界中,Linux对于一般用户来说还是相当的难于掌握(当然这种情况也在发生变化,图形化界面已经发展到相当的程度,但是目前与一些成熟的商业操作系统相比还是有相当的差距)。Linux的特点就是它的稳定健壮和完全开放。天生为网络操作系统的Linux作为网络服务器运行在数以万计的网络中。Linux一般是与其它操作系统在网络中共存,因此他们之间的资源的共享-主要是文件和打印机的共享-是一个非常普遍的问题。通过SMB技术现在这个问题已经基本上解决了。本文试图给出一个简单的介绍。

    SMB协议(Server Message Block Potocol)是一个用于不同计算机之间共享文件、打印机、串行口和通讯抽象(命名管道、邮件插槽等)的协议。SMB协议是一个非常重要的协议,在所有的微软Windows操作系统包括Workgroup、Windows 9x和Windows NT中广泛应用,无论作为客户机、服务器或者二者兼是。SMB的概念最早是在1987年微软/英特尔的一份名为《Microsoft Networks/OpenNET-File Sharing Protocol》文档中引入的。SMB协议在这之后还被称作LanManager协议。最近微软和一些其它公司致力于发展一个SMB协议的公开版本,并且称其为CIFS(Common Internet File System,通用互联网文件系统)或SMB/CIFS,目前的版本为1.0。

    SMB协议是客户机/服务器、请求/应答型协议。服务器使得文件系统和其他资源对整个网络上的客户机都是可用的。客户机尽管有自己的硬盘,它仍然要求使用服务器上的共享文件系统、打印机以及其他资源。SMB可以在许多协议(TCP/IP、NetBEUI、IPX/SPX)上运行。

    SMB协议的实现分为客户端和服务器两种。客户端的实现最主要的是微软的Windows操作系统家族(包括Windows for Workgroups 3.x、Windows 9x和Windows NT),其他还有smbclient、smbfs,SMBlib等实用程序。服务器实现主要是Samba服务器、微软操作系统家族、Digital的PATHWORKS服务器家族、OS/2的LAN Manager 和AT&T的UNIX的高端服务器等。

    Samba是SMB服务器在UNIX和OpenVMS操作系统上的实现(其中也包含一些客户软件如smbclient、smbfs)。它是开放源代码的的GPL自由软件,由Andrew Tridgell开发并靠世界各地的人组成的一个松散组织维护。目前Samba可以在几乎所有的UNIX变种上运行(Linux,Solaris,SunOS,HP-UX,ULTRIX,DEC OSF/1,Digital UNIX,,Dynix(Sequent),IRIX(SGI),SCO Open Server,DG-UX,UNIXWARE,AIX,BSDI,NetBSD,NEXTSTEP,A/UX等)。

    Samba是各个Linux发布(Distribution)的一个基本网络软件包。最新的版本是2.0.3。 Samba软件有四部分组成: 与NT LanManager 兼容的SMB服务器程序; netbios 服务器程序; SMB 客户程序; 其它实用工具程序smbtar、smbstatus等。 II.应用Samba实现微软Windows家族和Linux之间的资源共享*

    1. 从Windows访问Linux的文件系统和打印机
    Windows客户机安装TCP/IP和NetBEUI通讯协议。Linux服务器安装Samba软件包。通过修改Samba的配置文件/etc/smb.conf将决定公开哪些资源和对这些资源访问所加的限制。文件共享按照目录组织。可以提供SMB共享级或用户级服务,这根据实际的需要来配置。打印共享。Samba服务程序的运行需要同时运行两个看护程序smbd和nmbd。 Samba服务程序的启动/关闭有几种:

    通过INETD看守进程,修改/etc/inet.conf ,/etc/services后运行
    kill -HUP 1 或 killall -HUP inetd
    通过系统脚本,
    /etc/rc.d/init.d/smb start
    /etc/rc.d/init.d/smb stop
    若smbd和nmbd 已经在运行,则可以用
    killall -HUP smbd 和 killall -HUP nmbd来重新启动Samba;
    killall -9 smbd 和 killall -9 nmbd来关闭Samba。


    2. 从Linux访问Windows的文件系统和打印机

    前提是Windows家族中必须安装TCP/IP、NetBUI协议,并且共享的目录和打印机能够被其它安装Windows的计算机使用。文件共享
    smbclient 是一个类似于ftp的客户端软件。
    smbclient -L 计算机名
    列出可用的共享资源。访问SMB共享资源(交互式,类似于ftp):
    smbclient service 〈passwd〉
    service包括计算机名和共享资源名,passwd 是你的口令。
    例如 运行/usr/sbin/smbclient \\pc3\public mypasswd

    应用smbfs可以将SMB共享文件系统Mount成Linux的一个本地文件系统。打印机共享应用Linux带的printtool就象安装本地的打印机一样。只是要在安装驱动时选择LF-〉CR/LF选项,否则打印文本时将出现问题。

    3.跨网关浏览的方法(浏览在这里与共享是同义词)

    Samba可以支持跨网关浏览SMB资源。这要求SMB主机必须能够解析NetBIOS名字IP。WINS服务器是最好的NetBIOS域名解析的方法。其它的象广播式和LMHOST解析方法都不能满足跨网关浏览的需要。 实现跨网关浏览有两种具体情况:一种是把Windows9x、Samba和Windows NT不配置成NT域的一部分,另一种是配置成NT域的一部分。前一种方法即是工作组(Workgroup)方案,通过把一个Samba服务器设置成全局主浏览器(Domain Master Browser),由他来搜集所有加入工作组的子网的局部主浏览器(Local Master Browser)的共享资源列表信息。全局主浏览器本身可以是其中某一子网的局部主浏览器,这并不是必要的条件,但是没有理由不这样作。如果没有全局主浏览器,每个子网都还是孤立的工作组,彼此之间不能浏览。后一种方法则较为复杂,因为涉及网络登录和身份验证,有兴趣的可以参看Samba的相关文档以及Windows NT的 网络管理手册,不再赘述。

    应用Samba技术并不是唯一的解决网络(微机为主要对象)资源共享的方法。象Xlink公司的Omni-NFS也能实现网络文件和打印机资源的共享。就性能而言,SMB和NFS不相上下。Samba的最大优点就是其为源代码开放的自由软件(GPL),更新迅速,移植方便。

    早期的SMB协议的实现(例如Windows 95)仅支持共享级访问策略,密码为普通文本,现在的实现大多应用用户级访问策略(例如Windows NT 4.0),支持加密的口令。Samba支持两种策略,配置方法稍有不同。就安全而言,采用后者会好些。因为用Sniffer能很容易的截获前者的未加密的口令。另外一个加强Samba安全的方法是可以应用SSL协议,只有2.0以上的版本才可以。

    *以RedHat Linux 平台为例。

    III.相关资源
    Samba网址:
    http://www.samba.org/
    ftp://ftp.samba.org/pub/samba/
    CIFS 网址:
    http://www.samba.org/cifs/
    ftp://microsoft.com/developr/drg/CIFS/
    NetBIOS RFC:
    RFC1001,RFC1002。


    发布人:netbull 来自:LinuxKD