SAMBA:
     实现 区网中有windows 也有linux,要共享文件系统的话,用SAMB服务器
           samba 也可以让linux上打印机成为打印机服务器
强调: 在unix like上面可以分享档案资料的filesystem是NFS
          在windows上使用网上邻居所使用的文件系统成为CIFS
  
最初的主要目的
             沟通windows 与unix like 两个不同的作业平台
动作:
       分享档案与打印机服务; 
   进行windows网络上的主机名解析(NETBIOS name)
  可以提供用户登入SAMBA主机时的身份认证,以提供不同身份者的个别数据
  可以进行装置的分享
 
 
使用的通讯协议:  NetBLOS (SAMBA架构在NetBIOS协议上开发的) 
  最早只适合在局域网中,无法跨路由,理论上NetBIOS 也是无法跨越路由的
  后期开发之后可以借助NetBIOS OVER TCP/IP技术实现跨路由的使用服务器提供的功能
         这个TCP/IP 可以视为一个邮件传递系统,通过它实现跨路由
 (但SAMBA现在用的比较广泛的还是在LAN中)
 

SAMBA 会启动两个进程
   1, 取得对方主机的BetBIOS name 定位该主机所在
   2, 利用对方主机给予权限存取可用资源
 SAMBA 通过两支服务来控制这两个步骤,分别是:
      nmbd: 管理工作组、NetBIOS name 等名称解析
         利用 UDP  137,138
      snmbd: 管理SAMBA 主机分享的目录、档案 打印机等、(文件共享)
             TCP    139   445(不一定存在)
 
联机模式的介绍(peer/peer,  domain model)
 
  peer/peer     (workgroup model对等模式)
          每部计算机都可以独立运作 只是藉由网络将各个PC 链接在一起的一个架构
          每部计算机都可以做为Client 与 Server
     好处:  可以独立运作, 不受其他人影响
  缺点:   不适合大的网域,因为需要知道所有计算机里的密码和帐号
  适合的环境:1, 小型网域,
              2 ,没有需要常常进行档案数据分享的网络环境
                 3, 计算机是用户的不是公用的
  
   domain model (主控模式)
          将所有的密码帐号都放置在一部主控计算机上(PDC),


################################################################################################

SAMBA 所需要的软件极其软件结构
          
  samba :  提供SMB服务器所需的各项服务程序(smbd,nmbd),配置文件,开机默认选项等
  
  samba-client: 提供linux作为客户端,所需的工具指令
  
  samba-common:  提供server 和 client 都会使用到的数据
                包括SAMB主配置文件(smb.conf) 语法检验指令(testparm)
      
  这三个软件都需要安装
                            3.X 
————————————————————————————————————————配置文件
     /etc/samba/smb.conf         samba的主配置文件
     /etc/sysconfig/samba        提供启动smbd,nmbd时你还想要加入的相关服务参数
  /etc/samba/smbusers         两个工作平台管理员和访客帐号不一致, 为了对应两者之间帐号关系,
  /var/lib/samba/private/{passbd,tbd,secrets.tbd}
                               管理samba用户帐号和密码时会用到的数据库档案
         
  /usr/share/doc/samba-<版本>     SAMBA的使用手册
 
常用的脚本文件
    服务器功能
 /usr/sbin/{snmbd, nmbd}: 
                权限管理(smbd)和NetBIOS name查询(nmbd)两个服务程序
 
 /usr/bin/{tdbdump, tdbtool}:
                 3.0版本之后,帐号和密码参数都使用数据库了。
                 tdbdump: 查看数据库内容;        tdbtool 进入数据库接口直接手动修改帐号密码参数(安装tdb-tools软件)
 
    /usr/bin/smbstatus:    
                 显示samba联机状况  (PID 分享的资源, 使用的用户来源......)
 
    /usr/bin/{smbpasswd,pdbedit}:
                     管理用户数据的(TDB数据库之后用的是pdbedit)
 /usr/bin/testparm -v  (显示详细的信息)
                   主要是检验配置文件的语法是否正确,
    客户端功能  

   /sbin/mount.cifs
                 在win上, 我们可以设定网络驱动器机来链接到自己主机上
                    在linux上, 透过mount 挂载来将远程主机分享的档案与目录挂载到自己主机上
 
    /usr/bin/smbclient
                  查看别台计算机所分享出来的目录与装置, 也可查看自己,看是否设定成功
     
 /usr/bin/nmblookup
                     查看 netbios name 的名字是什么
  smbtree          能够查到工作组与计算机名称的树状目录分布图


###################################################################################3
 smb.conf 常用的设定项目
  【global】    全局配置
         log file =  登录档 放置的档案, 可以是一个变量
   max log size =    登录档最大是多少kb , 超出被rotate掉
   security = share   user  domain
       1, 不需要密码。  2 。使用SAMBA服务器本身的密码数据库
             3, SAMBA 是客户端之意, 需要-提供 passwd server = IP
   
  encrypt passwds = YES  代表密码要加密
         passdb backend = tdbsam  密码使用的数据库格式是tdbsam
        load printers = yes  默认加载共享打印机
  cups options = raw    打印的服务体系 (可不注意)

【share Definitions】共享定义
     [printers]  (共享打印机) 分享名称
        comment = All Printers    目录注释
        path = /var/spool/samba    共享资源路径名称
        browseable = no            是否所有用户看到这个项目
        guest ok = no               是否允许来宾帐号访问(匿名访问)
        writable = no              是否可以写入
        printable = yes             是否共享多有打印机
  writelist = 用户 @群组      指定特定使用者可以进入
 [homes]                 定义不同的用户是否可以访问自己的家目录
        comment = Home Directories   
        browseable = no    
        writable = yes
;       valid users = %S
;       valid users = MYDOMAIN\%S 
可用的变量功能
       %m    客户端Netbios 主机名
    %M    客户端internet 主机名--hostname
       %L    SAMBA主机的NetBIOS 主机名
    %H     用户的家目录
    %U     目前登入烦人使用者的使用者名称
    %g     登入的使用者的组名
    %h     这部SAMBA主机的HOSTNAME
    %I     客户端IP
    %T      目前的时间和日期

为samba添加帐号命令
                   smbpasswd
            -a  添加为当前samba上的帐号
           -x   删除帐号
----linux共享windows上的共享文件用的命令-------   
smbclicent
          -L   指定Netbios name主机名(ip)
    -U     指定用户名
    -P     提示对方输入密码