当前位置:Linux教程 - Samba - Samba 让你爽

Samba 让你爽



         Samba 让你爽

    秋树/[email protected] 2000-9-26

    SMB(Server Message Block)是1987年Microsoft和Intel共同制定的网络通讯协
    议,它与Unix/Linux下的NFS(Network File System)在功用上是相似的,都是
    让用户端机器能够通过网络来分享文件系统,但是SMB比NFS大而且复杂很多。Sa
    mba将Windows使用的SMB通讯协议通过\"NetBIOS over TCP/IP\"搬到了Unix/Linux
    。Samba属于GPL(GNU Public License),因此,您可以合法而且免费地使用它
    。本文也属于GPL。 ;-D

    本文不打算介绍过多的理论,这些知识您可以去看看外面的书籍,本文的重点是
    结合实际需要给出详细操作方法。本文在RedHat 6.2和Mandrake 7.1上试验通过
    ,当然,除了安装部分外,您可以在任何Linux操作系统上通过本文的试验。

    不要被本文的章节吓倒,其实如果您的要求不高,只要做一点点修改就可以让Sa
    mba跑起来的,真正被吓倒是我,居然要写这么多。 ;-D

    一、安装Samba

    默认的,Linux在系统安装的时候已经把Samba包括进去了,您可以通过在命令行
    输入:
     $ rpm -q samba
    回车后如果您的系统回应类似:
     samba-2.0.6-4mdk
    恭喜,您可以直接进入第二节了。如果没有回显或者显示的版本太低,您可以自
    己安装它。

    1.1获得Samba的发行文件:Mandrake的Samba文件在第一张光盘/Mandrake/RPMS目
    录下,RedHat的文件在发行光盘的/Redhat/RPMS目录下。您也可以到Mandrake和
    RedHat网站下载最新版本的RPM包。最新版本是2.0.7。

    1.2安装:以root身份登陆系统后输入:
     $ rpm -Uvh samba-2..........
     注:文件名根据您的实际文件名输入,或者输入samba后按下键由系统自
    动补齐。

    二、运行Samba

    2.0 检查系统是否已经运行了Samba,我们可以执行:
     $ ps -aux |grep smb
    如果系统回显类似:
    root 2528 0.0 2.9 3264 1924 ? S 17:20 0:00 smbd -D
    则表示你的机器已经启动了Samba守护进程。

    2.1 启动Samba,执行:
     $ /etc/rc.d/init.d/smb start

    2.2 重新启动Samba,每次修改/etc/smb.conf文件都需要重新启动Samba才能使修
    改生效:
     $ /etc/rc.d/init.d/smb restart

    2.3 自动运行Samba:
    默认地,RedHat和Mandrake安装是不会在每次启动系统时自动启动Samba。您可以
    修改/etc/rc.d/目录下的rc.local文件,在该文件最后添加一行:
    /etc/rc.d/init.d/smb start
    即可在每次系统启动的时候自动运行Samba的守护进程了。

    三、配置Samba

    尽管Samba从2.0版开始加入SWAT(Samba Web Administrator Tool),支持浏览
    器配置,但并不是本文推荐的方式,如果您有兴趣的话,可以自行参阅文档。

    Samba的所有配置信息集中在/etc/smb.conf文件中,以“[]”为一段的开始,注
    释以“;”号开头。文件开始的[global]段专用于存放一些通用配置,[homes]段
    专用于共享Unix/Linux系统用户目录,以后的其他段保存共享信息,段名即共享
    名,可以自己定义。

    以下所有的修改均需要您以root身份完成。

    3.1 快速使用:如果您不考虑用户认证(就像Windows9x一样),您只需要修改两个
    参数:
     workgroup = 您的工作组名
     security = share
    然后根据3.3设置共享介绍的方法设置共享目录,您的Samba即可像Windows9x一样
    工作了。

    3.2 安全配置:本文建议您使用的方式,虽然复杂点,但是安全性高于Windows9
    x。这里我们假设有个Windows用户James,他在Windows上用户名是:James,口令
    是:111。

    3.2.1 修改smb.conf文件:
     workgroup = 您的工作组名
     security = user
     encrypt passwords = yes
     smb passwd file = /etc/smbpasswd

    3.2.2 配置Samba用户的口令文件

    3.2.2.1 建立smbpasswd文件:
     $ cat /etc/passwd | mksmbpasswd.sh >/etc/smbpasswd
    注:只需要运行一次,“|”是管道命令符。

    3.2.2.2 为Windows用户增加一个Linux下的用户
     $ adduser james

    3.2.2.3 增加一个Samba用户
     $ smbadduser james:james

    3.2.2.4 修改用户的Samba口令
     $ smbpasswd james
    输入111回车,系统需要你确认,再次输入111即可。

    3.3 设置共享:

    3.3.1 [homes]段的内容用于系统根据登陆用户的Unix/Linux身份自动共享/home
    /username下的内容,建议不要修改。

    3.3.2 系统自己已经预建了许多共享内容的模板,但是都用“;”号注释掉了,
    比如您将[public]段的注释去掉就可以为3.1的配置方法设置共享了。

    3.3.3 您当然也可以自己建一个共享,我们可以这样做:
    [web]
    comment = My Web Page
    path = /www/htdocs/
    valid users = james user2 user3
    public = no
    writable = yes
    browseable = yes
    printable = no

    注:
    comment的内容仅仅是说明文字,运行中没有任何影响,你可以在这里写任何你能
    看懂的东西;
    path指出共享的实际目录,注意你需要共享的目录属性,如果Samba用户所代表的
    Unix/Linux用户没有该目录的操作权限,即便共享出来了,他也无法操作;
    valid users指定合法的用户,用户名之间用空格分开,如果取消这一行将共享给
    所有用户;
    public用于区分Samba认证用户和分认证用户的权利;
    writable、browseable、printable分别指定该共享项的写、浏览、打印是否许可


    四、用Samba使用Windows的共享资源

    很多网友问到Linux机器读取Windows的共享资源是否能用Samba,Samba当然能够
    使用Windows的共享文件,而且很简单。这里我们假设您的网络上还有两台Windo
    ws机器,分别是James和Qiushu,James的机器有共享目录\"SHARE\",Qiushu的机器
    有共享目录\"CDROM\",口令为\"haha\"。

    4.1 查询网络资源:
     $ smbclient -L JAMES
     $ smbclient -L QIUSHU
    系统会显示出网络机器的资源,注意其中的Sharename和Type,在James和Qiushu
    的机器应该分别可以看到SHARE和CDROM的Sharename,它们的Type都是Disk。

    4.2 使用网络资源

    4.2.1 建立挂接点
     $ mkdir /mnt/smb

    4.2.2 挂接网络资源
     $ smbmount //JAMES/SHARE /mnt/smb
    或者
     $ smbmount //QIUSHU/CDROM /mnt/smb -o password=haha

    4.2.3 使用资源
    进入/mnt/smb目录,您对这个目录的所有操作都将实现在目标机器上。

    4.2.4 取消挂接
     $ umount /mnt/smb

    五、后记

    由于受作者对Samba的认知程度限制,本文对Samba的介绍还是很少,同时也具有
    片面性。对于所有本文未提及的内容请参阅相关书籍和man samba的帮助。欢迎高
    手指正、交流。
    发布人:zeus 来自:http://smms.webhostm