Samba的全名为Server Message Block(服务信息块),samba软件整合了SMB协议及Netbios的应用程序接口协议,使其运行在TCP/IP上 。它是一套程序,支持基于UNIX的主机与基于WINDOWS主机的主机共享文件和打印。samba能提供稳定的文件和打印服务,在异构的网络中实现资源共享,
 
samba的核心:
samba的核心有两个守护进程,即smbd与nmbd。服务器启动到停止期间持续进行,smbd监听139 tcp端口,nmbd监听137和138udp端口.smbd与nmbd使用的全部配置信息保存在smb.conf文件中,sam.conf文件告诉smbd和nmbd两个守护进程说明输出什么、共享输出给谁及如何输出以便共享。smbd 进程的作用是处理来的smb数据包,为使该数据包的资源与linux协商;nmbd进程,使其他主机能浏览LINUX服务器。
下面是关于samba这个服务的属性
Samba的相关软件包
samba-common         :包括samba服务器和客户端均需要的文件;
Samba                          :samba的软件包   
System-config-samba    :samba的图形界面软件包
Samba-swat                  :sambaweb界面管理软件包
samba-client         :samba客户端软件
Samba的守护进程
/usr/sbin/nmbd    /usr/sbin/smbd
Samba的脚本
/etc/init.d/smb
Samba的端口
Nmbd:137  138     smbd:  139  445
Samba的配置文件
/etc/smb*
 
Samba的配置方法有三种,

1)、配置samba的配置文件 :/etc/samba.conf

2)、图形界面配置:System-config-samba

3)、web界面配置:http://localhost:901

第一步、安装samba
[root@dns ~]# rpm -qa |grep samba
samba-common-3.0.33-3.14.el5 
samba-client-3.0.33-3.14.el5
[root@dns ~]# yum install samba
[root@dns ~]#
[root@dns ~]# rpm -ivh /home/cdsrc/Server/system-config-samba-1.2.41-5.el5.noarch.rpm
Preparing...                ########################################### [100%]
   1:system-config-samba    ########################################### [100%]
[root@dns ~]# rpm -qa |grep samba
samba-common-3.0.33-3.14.el5
samba-3.0.33-3.14.el5
system-config-samba-1.2.41-5.el5
samba-client-3.0.33-3.14.el5
samba-swat-3.0.33-3.14.el5

[root@dns ~]# cd /etc/samba/
[root@dns ~]#
[root@dns samba]# ll
总计 28
-rw-r--r-- 1 root root   20 2009-05-29 lmhosts
-rw-r--r-- 1 root root 9733 2009-05-29 smb.conf
-rw-r--r-- 1 root root   97 2009-05-29 smbusers

第二步、配置smb.conf文件
 
samba的主配置文件是/etc/samba/smb.conf,共288行,文件被分隔成若干节,每一节都有一个被方括号括起来的标志开始如[global]、 [home]和 [printers]。global部分定义的参数用来控制samba的总特性,除该部分外,每一部分都定义了一个专门的服务,我们只需要改动一小部分就能配置一个基本的samba服务器了。

[root@dns samba]# grep -v '^#' /etc/samba/smb.conf |grep -v '^$' |grep -v '^;'

可以看到基本的默认配置;
#======================= Global Settings =================

[global]

# ------------- Network Related Options ----------------
#这是设置服务器所要加入的工作组的名称,会在windows的“网上邻居”中看到
可以在此设置所需要的工作的名称
        workgroup = MYGROUP
#这是设置服务器主机的说明信息
        server string = Samba Server Version %v
#设置出现在“网上邻居”中的主机名,默认情况下使用真正的主机名
;       netbios name = MYSERVER

#samba网路地址接口,配置samba来使用多个网络界面
;       interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
#设置允许什么样的IP地址访问samba服务器,默认情况下被注释掉,表示
允许所有的IP的主机访问
;       hosts allow = 127. 192.168.12. 192.168.13.

注意,关于samba服务的IP的表示方法有点特殊
127.0.0.0写成127.
192.168.12.0写成192.168.12.
只需要写出网络位,主机位省略,然后以点结尾

# ------------------- Logging Options ----------------------

# logs split per machine
#设置文件路径,这个选项要求为每一台连接的机器使用一个单独的日志文件,指定
文件位置名称,samba会自动将%m转换成连接主机的netbios名
;       log file = /var/log/samba/%m.log
        # max 50KB per log file, then rotate
#指定日志文件的最大容量以KB为单位
;       max log size = 50

# ------------ Standalone Server Options ---------------
        security = user
        passdb backend = tdbsam
# ---------- Domain Members Options -------------
;       security = domain
;       passdb backend = tdbsam
;       realm = MY_REALM

;       password server = <NT-Server-Name>

# ----------------- Domain Controller Options ---------------
#Samba的安全模式
;       security = user

关于samba的五种安全模式
Share      允许匿名访问
User        需要用户名和密码认证,认证信息来自于samba服务本身
Domain   认证来自于网络中另一天计算机
Server     domain一样
Ads         使用微软的AD来认证

;       passdb backend = tdbsam

#将samba服务器定义为主浏览器,此选项将允许samba在子网列表中比较浏览,如果有winNT域控则不使用此项,
;       domain master = yes
;       domain logons = yes

        # the login script name depends on the machine name
;       logon script = %m.bat
        # the login script name depends on the unix user used
;       logon script = %u.bat
;       logon path = \\%L\Profiles\%u
        # disables profiles support by specifing an empty path
;       logon path =

#添加用户的命令脚本
;       add user script = /usr/sbin/useradd "%u" -n -g users
;       add group script = /usr/sbin/groupadd "%g"
;       add machine script = /usr/sbin/useradd -n -c "Workstation (%u)" -M -d /nohome -s /bin/false "%u"
;       delete user script = /usr/sbin/userdel "%u"
;       delete user from group script = /usr/sbin/userdel "%u" "%g"
;       delete group script = /usr/sbin/groupdel "%g"


# --------------- Browser Control Options ------------------
#浏览控制选项,如果不使用samba服务器成为局域网的主浏览服务器,将此设置为No
;       local master = no
#决定该服务器在局域网内部的访问优先权
;       os level = 33
#使samba启动时选择一个本地浏览器,并给它获得选择较高的机会
;       preferred master = yes

#----------------------Name Resolution ----------------------
#wins设置,samba既可以做为wins服务器也可以作为wins客户机,但不能兼之
;       wins support = yes
;       wins server = w.x.y.z
;       wins proxy = yes
#是否为客户做DNS查询
;       dns proxy = yes

# ------------------ Printing Options ------------------------

#允许共享打印机,指定是否要加载打印机(使打印机共享),
        load printers = yes
        cups options = raw
#设置打印机配置文件路径,这是指定打印机配置文件的位置,打印守护进程读取
printcap文件中的配置信息,监视打印机的工作情况;
;       printcap name = /etc/printcap
        #obtain list of printers automatically on SystemV
;       printcap name = lpstat
#设置打印机系统类型,只有在打印机系统不是标准的情况下,必须指定,否则不必指定;指定打印机的类型将影响到smb.conf文件中与打印机相关的命令
;       printing = cups

# --------------------- Filesystem Options ----------------------
;       map archive = no
;       map hidden = no
;       map read only = no
;       map system = no
;       store dos attributes = yes

Samba里面的默认共享
#===================== Share Definitions ======================
#所有使用者的home目录
[homes]

#针对共享资源所作的说明
        comment = Home Directories
#设置用户是否可以看到共享资源,默认的是不能,但拥有权限的用户仍可用绝对路径访问
        browseable = no
#设置共享资源可否写入,如果是打印机则不需要设置
        writable = yes
;       valid users = %S
;       valid users = MYDOMAIN\%S
#打印机共享设置
[printers]

#配置打印机共享,所有用户都可以共享打印机;
        comment = All Printers
#设置打印机队列位置,用户必须自行创建该目录,存放打印临时文件
        path = /var/spool/samba
#设置是否允许浏览共享打印机
        browseable = no
        guest ok = no
        writable = no
        printable = yes
#是否允许用户更改打印机队列的文件
# Un-comment the following and create the netlogon directory for Domain Logons
#netlogon共享管理工具,主要是用类似补丁杀毒程序更新客户端,netlogon是存放脚本你想推给客户机组的事情都可以通过netlogon来做
;       [netlogon]
;       comment = Network Logon Service
;       path = /var/lib/samba/netlogon
;       guest ok = yes
;       writable = no
;       share modes = no
#用户profile文件部分,用来存放每个登录用的设置文件,以便用户以后可以从服务器#读取以前的桌面设置,
;       [Profiles]
;       path = /var/lib/samba/profiles
;       browseable = no
;       guest ok = yes
关于samba服务参数的解释
;       [public]
共享目录共享出去的名字
;       comment = Public Stuff
共享目录的绝对路径
;       path = /home/samba
允许匿名用户访问共享目录
;       public = yes
默认情况下,所有用户对该共享目录都有写的权限
;       writable = yes
默认不允许用户更改打印机队列的文件
;       printable = no
只允许客户机对该目录有写入的权限的列表
;       write list = +staff


下一节配置samba共享实例;