预备知识
  1、Windows的文件共享:
       windows主机之间使用SMB(Service Message Block 服务信息块 微软开发的协议)
       /CIFS(是SMB后续的扩展协议)网络协议实现文件和打印资源的共享,Windows是
      无法与UNIX/Linux主机之间实现资 源共享的,因为UNIX/Linux的文件共享是基
      于TCP/IP协议的
 
SAMBA文件共享服务
       主要用于跨平台的文件共享,Samba软件实际上是SMB的Linux版本而已,Samba服
       务器在UNIX系统中实现了SMB/CIFS协议,通过Samba服务可以实现UNIX/Linux
        主机与Windows主机之间的资源共享,包括文件、打印机等。
 
Samba服务器的两个服务程序
        1、smbd 服务程序为客户机提供了服务器中共享资源(目录和文件等)的访问
        2、nmbd 服务程序提供了NetBIOS主机名称的解释,NetBIOS为Windows网络中
               域或者工作组内的主机进行主机名称的解释
 
RHEL4 Samba相关的软件包说明
        1、默认安装了Samba客户端的软件
        2、Samba-common软件包中提供了Samba服务器和客户机中都必须使用的公共文
              件
        3、samba软件包中包括了Samba服务器程序的所有文件
        4、samba-client软件包中提供了Samba客户机的所有文件
        5、system-config-samba软件包中提供RedHat公司专门为Samba服务器管理编写
              的图形界面的管理程序
 
smb.conf配置文件说明
         1、Samba服务器的主配置文件是smb.conf,在/etc/samba/文件中
         2、smb.conf文件中的“#”开头的内容,表示对配置内容的说明性文字;而已
              “;”开头的内容则是对配置内容举例
         3、查看smb.conf有效配置的命令是
                 #grep -v "^#" /etc/samba/smb.conf |grep -v "^;"
         4、smb.conf中的security的参数说明
                 share----表示用户不需要账号及密码即可登入Samba服务器
                 user-----表示由提供服务的Samba服务器负责检查账户及密码(是Samba服务
                                器默认的安全级别)
                server---表示检查账户及密码的工作指定由另一台Windows服务器或Samba
                              服务器负责
                domain---表示指定Windows域控制服务器来验证用户的账户和密码
用户目录(smb.conf中的[home])共享设置[homes]共享目录不特指某个目录,而是 表示Samba不同用户的宿主目录
 
Samba用户的一些说明 
             1、Samba服务器的用户账号文件保存在/etc/samba/目录中,文件名称是
                    smbpasswd,该文件只 有root用户有读写的权限。初始状态smbpasswd文 
                   件是不存在的,在第一次用smbpasswd命令创建Samba用户时才自动建立
              2、并非是系统用户就可以访问Samba服务器,要想访问Samba服务器,必须
                     是系统用户并且通过命令将该用户添加成Samba用户
              3、Samba用户账号使用独立的smbpassed文件保存用户的账号和加密口令信
                       息
              4、Samba服务器中的用户账号应该具有与其同名的Linux系统用户账号,因
                     为Samba用户是使用同名的系统账号身份访问Linux系统资源的
              5、Samba用户的口令和同名系统用户的口令是独立的,可以相同,亦可不
                    同,需要分别进行 维护和更改
              6、当Samba用户不需要登录Linux系统时,同名的系统用户账号可不设置口令
                    客户端的命令smbclient,smbclient是Samba服务器的命令行方式的客户端
                    登录,使用的形式类似于telnet和ftp命令,该命令有两个功能
                       (1)、显示指定Samba服务器中的共享资源列表
                                   #smbclient -L [Samba服务器IP地址]
                       (2)、指定用户身份登录到指定服务器的指定共享目录
                                  #smbclient //[Samba服务器IP地址]/[共享目录名称] -U [Samba用户]

客户端的命令smbmount
                该命令用于将Samba共享目录挂载到Linux文件系统中
                    #smbmount //[Samba服务器IP地址]/[共享目录名称] [Linux文件目录名称]
               卸载smb文件系统
                   #umount [Linux文件目录名称]
 
服务器端命令smbstatus
           用于显示当前主机中的Samba服务器的连接状态信息,包括连接服务器的每个
            Samba客户端的IP地址、主机名称、登录用户名、锁定的文件等。
 
实验配置
(宿主机Windows与客户机linux)
         1、将宿主机的IP地址改为静态的192.168.12.1,并将一个文件夹设置为共享
         2、查看samba客户端软件包是否安装
               #rpm -qa|grep samba
                   输出的信息有
                     samba-common-3.0.28.0.el4.9
                     samba-client-3.0.28.0.el4.9    //说明客户端软件是默认安装的
        3、若没有安装客户端软件的话,像前面讲述那样安装即可,在此就不重复了
        4、查看宿主机的共享资源列表
              #smbclient -L 192.168.12.1
              或用指定用户身份登录到服务器上
              #smbclient //192.168.12.1/book -U funny
 
                                               额外补充的内容
(服务器linux与客户机linux、Windows)
  服务器端配置
     1、配置服务器端的IP地址
        #netconfig
         输入静态IP地址192.168.12.2
      或
        #vi /etc/sysconfig/network-scripts/ifcfg-eth0
          修改相应的配置
        [esc]
        :wq
     2、重启网络服务
        #service network restart
        并查看新的配置是否生效
        #ifconfig
     3、检查相应的服务软件是否安装了
        #rpm -qa |grep samba
          输出的信息有
            system-config-samba-1.2.21-1.el.1
            samba-common-3.0.28-0.el4.9
            samba-client-3.0.28-0.el4.9
            samba-3.0.28-0.el4.9
     4、在服务器端先添加系统用户,在添加同名的Samba用户
       #useradd zhangsan
       #passwd zhangsan       //添加系统用户名为zhangsan的密码
       #useradd lisi          //该系统用户不添加密码,则它不能登录系统,只能
                                作为Samba用户使用
       #smbpasswd -a zhangsan   //将系统用户zhangsan添加为Samba用户
         输入密码,此密码可以与系统用户密码不一样。
       #smbpasswd -a lisi
     5、配置共享目录
        #mkdir /public1               //建立一个共享目录
        修改主配置文件
        #vi /etc/samba/smb.conf
            workgroup =WORKGROUP                     //必须在同一个工作组中
            server string =Samba Server Version %v   //显示在客户机上的服务器名称
            printcap name=/etc/printcap   //这些是共享打印机的配置
            load printers=yes
           ;printing =cups              //打印机的接口程序
            cups option =raw            //打印机接口的方式   
           
            log file=/var/log/samba/%m.log     //这是日志文件 
            max log size=50                    //日志文件的大小
    
            security =user               //权限的级别设置,默认安全级别
       找到===============Share Definitions=============
       在此打后就是共享文件的定义了,里面会有些范例提供参考的。 
       接着往下看到
          #This one is useful for people to share files
           将其下的修改为
          [tmp]
             comment=Temporary file space    //临时文件空间
             path=/tmp                       //文件路径
             read only =no                   //不是只读文件
             public=yes                      //所有用户可见
           注意:每项的前面是没有任何符合的,比如 ;或是#。有的话,就删除符号
       再往下
          #the "staff" group
            将其下修改为
          [public]
             comment=Public Stuff
             path=/public1                 //文件路径指向上面创建的/public1
             public=yes                    //所有用户可见
             read only=yes                 //是只读文件
             write list=@zhangsan          //相应组中的成员才有写的权限,但是
                                             有一点必须注意:这是服务器允许,而
                                             不是文件系统允许,所以有些文件是写
                                             不了的,必须到文件上修改权限
           注意:每项的前面是没有任何符合的,比如 ;或是#。有的话,就删除符号
       再往下,看到有
          [myshare]                             //功能是允许特定的用户使用文件夹
            comment=Mary's and Fred's stuff     //指定用户
            path=/usr/somewhere/shared          //必须是已经建好的目录的路径
            valid users=mary fred               //指定合法用户可以访问上面指定的文件夹
            public=no                           //除了指定用户外的用户看不到
            writable=yes        
            printable=no
            create mask=0765
           注意:每项的前面是没有任何符合的,比如 ;或是#。有的话,就删除符号
       [esc]
       :wq
     6、测试一下配置是否有误
       #testparm
     7、启动Samba服务
       #service smb start
     8、检测
      (1)在宿主机Windows-->网上邻居-->\\192.168.12.2,会打开登录界面,用
        zhangsan来登录。我在这里遇到了问题,刚开始是连登录界面都没有弹
        出,我猜是可能两方面的原因:A.linux防火墙的问题;B.电信弄的上网客户
        端作祟。结果将防护墙关了
         #/etc/rc.d/init.d/iptables stop          //不建议关了防火墙,不过这
                                                    是在查问题所在才这样做的
         也关闭了数字校园拨号器后,终于弹出登录界面,一阵狂喜····
         可是问题又来了,利用zhangsan和密码就是登录不上Samba服务器
         初步猜想是要么是连接问题,要么就是/etc/samba/smb.conf配置错误,还
         有一个可能就是该用户没有成功添加到Samba服务器上
         A.ping服务器,检查连通性,结果是没有问题。查看网上邻居-->工作组计算机
           出现了服务器的图标
         B.查看/etc/samba/smb.conf配置文件,就安全级别改为
             security =share
           再点击Windows上的服务器图标,可以看到共享文件,也印证了连通性没问题
           但是改为user就不行了,详细看了,没有配置错。
         C.那就到了查看是否成功添加了Samba用户了,
           #vi /etc/samba/smbpasswd
           结果发现里面是空的,没有任何信息,问题就出在这,又一阵狂喜!!!
           #smbpasswd -a zhangsan
             输入密码
             确认密码
           再次查看配置文件,检查是否成功配置了用户。
        最好终于OK了!!!!
        工作没完,还必须继续前进啊
        往里面添加新文件,再到服务器上检测是否成功添加了新的文件
        #ll /public1
        #ll /tmp
        #ll /home/zhangsan
      (2)linux客户机
        修改工作组
        #vi /etc/samba/smb.conf
           workgroup=WORKGROUP                 //同服务器一个工作组
        查看服务器的共享资源列表
        #smbclient -L 192.168.12.2
          不用输入密码,直接回车
        或
        #smbclient -L 192.168.12.2 -U zhangsan%zhangsan
        查看共享文件夹的内容
        #smbclient //目标IP地址或主机名/共享目录 -U 用户名%密码
        或
        为了方便,将共享文件夹挂载到客户机上
        #mount -t cifs //目标IP地址或主机名/共享目录名称 挂载点 -o username=用户名%密码
         
补充:Samba Web管理工具swat的安装
      swat管理工具必须安装在服务器上,它是以Web界面形式提供了对Samba服务器
          的远程管理功能,默认情况下,系统是没有安装的,需要使用命令手工进
          行安装
               #rpm -ivh samba-swat
          设置swat的启动状态
               #chkconfig swat on
               #service xinetd resart
          基于安全考虑,设置swat对客户端访问的限制
               #vi /etc/xinetd.d/swat
              修改下面内容
                only_from=[客户机的IP地址]     //接受特定IP地址的客户机管理
          客户机要通过swat访问Samba服务器,须注意swat服务的端口默认是901,而且
          必须用root用户账号登录
               #http://[服务器的IP地址]:901/