Samba 服务器简介与安装

Samba 服务器简介与安装
2007-06-29 22:48
一、SMB 协议
     SMB(Server Message Block,服务信息块)协议是一个高层协议,它提供了在网络上的不同计算机之间共享文件、打印机和不同通信资料的手段。
     SMB 使用 NetBIOS API 实现面向连接的协议,该协议为 Windows 客户程序和服务提供了一个通过虚电路按照请求-响应方式进行通信的机制。SMB 的工作原理就是让 NetBIOS 与SMB 协议运行在 TCP/IP 上,     并且使用 NetBIOS 的名字解释器让 Linux 机器可以在 Windows的网上邻居中被看到,从而和 Windows 9X/NT/2000 进行相互沟通,共享文件和打印机。1992 年,SMB 成为 Open Group 的国际标准,即“X/Open PC 机网络互连协议:SMB,第二版,X/Open CAE 标准 C209”      。
二、Samba 简介
     Samba 是一组软件包,使 Linux 支持 SMB 协议,该协议是在 TCP/IP 上实现的,它是Windows 网络文件和打印共享的基础,负责处理和使用远程文件和资源。在缺省情况下,Windows 工作站上的 Microsoft Client 使用服务消息块(SMB)协议。正是由于 Samba 的存在,使得 Windows 和 Linux 可以集成并互相通信。安装了 Samba 后,就可以直接而方便的在 Linux 和 Windows 之间共享资源,免去了以前必须使用 FTP 的麻烦。
     Samba 目前已经成为各种 Linux 发布版本中的一个基本软件包。
     Samba 于 1991 年由澳大利亚人 Andrew Tridgell 研发,最初是为了代替 PC-NFS 而开发的,几年来经过 Samba 小组的共同努力,现在它已经成为了一个功能非常强大的软件包。Samba 可以在几乎所有的类 UNIX 平台上运行,当然包括 Linux。Samba 基于 GPL 发行,其版本更新速度很快,当前版本是 3.0.23d 版。
     Samba 的核心是两个守护进程 smbd 和 nmbd。一般 smbd 监听 139 TCP 端口,处理来自用户的连接,实现文件、权限、用户名的管理;nmbd 监听 137 和 138 UDP 端口,帮助快速定位服务器,主要是主机名的定位。
     smbd 和 nmbd 使用的全部配置信息全都保存在 smb.conf 配置文件中。smb.conf 向 smbd和 nmbd 两个守护进程说明输出什么,共享输出给谁及如何进行输出以便共享。Smbd 进程的作用是处理到来的 SMB 数据包,为使用该软件的资源与 Linux 进行协商,nmbd 进程使其它主机(或工作站)能浏览 Linux 服务器。
三、Samba 软件的功能
     共享 Linux 的文件系统
     共享安装在 Samba 服务器上的打印机
     支持 Windows 客户通过网上邻居浏览网络
     使用 Windows 系统共享的文件和打印机
     支持 Windows 域控制器和 Windows 成员服务器对使用 Samba 资源的用户进行认证
     支持 WINS 名字服务器解析及浏览
     支持 SSL 安全套接层协议
四、Linux 下安装 Samba
     和 Linux 平台上其他的软件一样,Samba 服务器也有源代码(*.tar.gz)和二进制代码(.rpm)两种分发形式。
     二进制代码形式一般以 RPM 包的方式提供,几乎所有 Linux 的发行版本都提供 Samba服务器的 RPM 包,一般在安装系统时会同时安装。可用下面命令检查是否安装:
     # rpm -qa|grep samba
若没有,则可从系统光盘上安装,也可以从 Samba 主页上下载 rpm 包,但要考虑版本的匹配和软件包的相互依存性。
     这里主要讨论 Samba 服务器的源代码安装过程,本文以 samba-2.2.1 为例:
      1、以 root 身份登录,首先检查本机是否已经安装 Samba:
            # rpm -qa|grep samba
            若有,用命令删除之:# rpm -e samba
      2、下载源代码压缩包
            作者已将 samba-2.2.1.tar.gz 下载至本地,大家可从主页的下载区去下载,放在目录
/root 下。
       3、解压、解包源代码压缩包:
       # cd    /root                                  
       # gzip –d samba-2.2.1.tar.gz       (或 gunzip samba-2.2.1.tar.gz作用一样)          
       会在/root 下得到解压后包文件 samba-2.2.1.tar,然后再解包:
       # tar –xvf      samba-2.2.1.tar
       这样在/root 下得到子目录(文件夹)samba-2.2.1。
       你也可以直接用命令 tar 同时完成解压和解包:
       # tar –zxvf      samba-2.2.1.tar.gz
       4、安装源代码软件包:
       源代码发布形式的软件安装大致相同,分别用命令 configure,make,make install 来完成,但在具体软件包的使用上,又有些微的区别,我们在安装类似软件包时,要区别对待。一般每个软件包都有相应的类似 README 或 USERGUIDE 的说明性文件,可以参考。
       configure 脚本文件是在编译并安装软件之前进行的配置工作,主要包括待安装软件的各种文件的安装位置以及关于本软件的一些特性设置, 一般情况下可不做任何修改。但你可以通过-help 参数来大致了解一下本软件的配置情况,我们一般最关心的是 PREFIX 参数,它制定软件的安装位置。make 命令用来编译待安装软件的源代码,make install 命令用来安装软件。下面说明 samba-2.2.1 的安装过程:
       # cd    /root/samba-2.2.1/source
       # ./configure    -help
       我们会看到配置情况,注意其中 PREFIX 为/usr/local/samba,这说明 samba 将被安装在该地方,        如果其它类型的文件没有被指定在别的地方, 那么以后要删除该软件就只需删除该子目录(文件夹)即可(注意源代码的安装不能用 rpm –e 去删除)。如果你想将 samba 安装在别的地方,用参数--PREFIX=/path 即可。下面我们不改变缺省路径安装。
       # ./configure
       # make
       # make install
       如果没有出现错误信息(应该不会),则 samba 已经安装。
       按照资料介绍,安装完成后配置文件 smb.conf 会在/etc/samba/下或/usr/local/samba/lib/下,但经过查看发现两个地方都没有,而 smbd 和 nmbd 却可以找到,总以为安装不正确,折腾了好长时间。最后通过查看 smbd 的启动日志,发现它要到/usr/local/samba/lib 下去找smb.conf,而 samba-2.2.1 在安装时并没有在/usr/local/samba/lib 下自动生成 smb.conf,后来发现 在 /root/samba-2.2.1/examples/ 下 有 文 件 smb.conf.default , 于 是 将 其 复 制 到/usr/local/samba/lib 下并改名 smb.conf 后试验成功。 ————这是让我耗时两周的原因所在。
现在也请你如法炮制:
       # cp     /root/samba-2.2.1/examples/smb.conf.default        /usr/local/samba/lib/smb.conf
五、启动 samba
       为了能正常运行 samba,最好关闭防火墙,Linux 下的防火墙是指 iptables 服务,用以
下命令关闭:
       # service      iptables stop
       或
       # ntsysv
       将 iptables 反选,保存,然后重启机器。
       如前所述,启动 samba 只需执行 smbd 和 nmbd 即可,若要手工启动,则按以下命令进
行:
       # /usr/local/samba/bin/smbd      -D
       # /usr/local/samba/bin/nmbd      -D
       -D 参数表示以守护进程的方式运行。
       如果希望开机时即运行 samba 服务,可以将服务启动的命令写入/etc/rc.d/rc.local 的文件
中,并在指令后边加入&,来将程序放到后台运行。例如:
       # vi /etc/rc.d/rc.local
       #!/bin/sh
       #
       # This script will be executed *after* all the other init scripts.
    # You can put your own initialization stuff in here if you don't
    # want to do the full Sys V style init stuff.
    Touch /var/lock/subsys/local
    /usr/local/samba/sbin/smbd -D &
    /usr/local/samba/sbin/nmbd -D &
    存盘退出,重启机器,即可自动启动 samba 服务。
六、配置
    能否玩转 samba,全看你会不会配置 smb.conf。不同版本的 linux 提供了不同的配置方法,但最终还是通过修改 smb.conf 来完成配置,我的建议是直接修改 smb.conf。smb.conf比较复杂,有上百条的配置参数,一般并不需要修改所有的配置参数,要根据具体的使用环境选择使用。
    在这里,只负责连通。
    两人一组,一台机器起 Windows,一台起 Linux。
    在 Linux 下,配置 samba 服务器:
    # cp     /usr/local/samba/lib/smb.conf /usr/local/samba/lib/smb.conf.backup    (应该明白什么意思吧)
    # vi /usr/local/samba/lib/smb.conf
    找到 workgroup=x,将 x 改成 Windows 机器上的工作组名字,右击我的电脑-属性-计
算机名)
    找到 security=user,将 user 改为 share
    存盘退出,重启 samba 服务(直接执行那两条命令,或重启机器)
    Linux 重启后,在 Windows 上双击“网上邻居” ,再双击“查看工作组计算机” ,应该看见 Linux 机器。
    此时我们服务器上没有设置任何共享目录,下面我们在服务器上设置一个共享目录:
    # mkdir      /mnt/text
    # chmod       777     /mnt/text
    # vi    /usr/local/samba/lib/smb.conf
    把光标移动配置文件的最后一行,在下面加入以下配置
    # This is samba text
    [text]
comment = text
path = /mnt/text
writable = yes
public = yes
存盘退出,重启 samba 服务器。
再在 Windows 上看。
发布了15 篇原创文章 · 获赞 14 · 访问量 11万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章