一、SAMBA服务器简介
   SAMBA 应该范围主要是Windows和Linux 系统共存的网络中使用;如果一个网络环境都是Linux或Unix类的系统,没有必要用SAMBA,应该用NFS更好一点,而在windows之间则采用Common Internet File system(CIFS),CIFS最简单应用就是“网上邻居”;SAMBA 可以为我们提供共享文件和共享打印机的服务。
前面说了NFS是建立在RPC server之上的,而在这里说的SAMBA是建立在NetBIOS通信协议之上的。在SAMBA服务器提供服务时需要启动两个daemon来管理服务。smbd主要用来管理SAMBA主机共享目录、文件和打印机:nmbd主要用于管理群组和NetBIOS名字解析。SAMBA的工作模式有两种:分别是工作组模式,域模式。

二、SAMBA软件的结构
1、所需要软件:samba-client、samba-common、samba这个三个软件。
2、软件结构:
1)/etc/samba/smb.conf 主配置文件,可以利用man查询相关的参数及其含义。
2)/etc/samba/lmhosts NetBIOS name解析文件
3)/etc/samba/smbpasswd 是服务默认的SAMBA用户密码文件。默认没这个文件。要手动建立
4)/etc/samba/smbusers 是linux和windows相对应的账户。在smb.conf开启了username map才有效
5)testparm 用于检验smb.conf文件语法的命令
6)smbstats 列出SMB SERVER的状态的命令
7)smbpasswd 与SAMBA的密码相关的命令
8)smbclient 查看其他主机共享出来的文件或者打印机资源的命令
9)smbmount 挂载的命令
10)nmblookup 解析NetBIOS name 与ip的对应关系的命令

三、实例设计
实验环境:
CentOS5,SAMBA版本为SAMBA-3.0.33-3.7.el5。
实施背景:
由于windows病毒泛滥,作为文件服务器经常在使用中被病毒感染导致经常维护,决定用linux搭建一个文件服务器。
需求说明:
公司有四个部门销售部(xsb),人事行政部(rsxzb),工程部(gcb)和领导层(ldc)
1)每一个员工有各自独立的目录,并且之能由本人访问。其它员工不能看到更不能访问。
2)各个部门有自己独立的共享目录,并且只能由本部门的员工访问,而且只有本部门领导可以进行写入,领导层可以访问所有部门共享目录。
3) 建立一个公司文件共享目录, 要求全部人可查看, 但每个人只能删除自己的文件, 不能删除别人。
配置方法:
1)按照要求建立所需的组和用户
            # groupadd xsb
            # groupadd rsxzb
            # groupadd gcb
            # groupadd ldc
            # useradd xsb01 -g caiwu
            # useradd xsb02 -g caiwu
            # userdel rsxzb01 -g yewu
            # useradd gcb01 -g yewu
            # useradd gcb02 -g yewu
            # useradd ldc01 -g jinli
            # useradd ldc02 -g jinli
            # mkdir -p /home/samba/xsb
            # mkdir -p /home/samba/rsxzb
            # mkdir -p /home/samba/gcb
            # mkdir -p /home/samba/public
            # chmod 777 -R /home/samba
最后使用smbpasswd 命令(如smbpasswd -a xsb01)将用户加入到smbpasswd文件中并设置samba密码!
2)配置smb.conf文件实现以上功能
[global]
workgroup = MSHOME
security = user

[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S

[xsb]
comment = xsb directory
path = /home/samba/xsb
public = no
write list = caiwu01
valid users = @rsb,@ldc

[rsxzb]
comment = rsxzb directory
path = /home/samba/rsxzb
public = no
write list = @rsxzb01
valid users = @ldc

[gcb]
comment = gcb directory
path = /home/samba/gcb
public = no
write list = @rsxzb01
valid users = @ldc

[public]
comment = Public Stuff
path = /home/samba/public
public = yes
browseable = yes
writeable = yes

关于smb.comf中的选项参数的具体意义可以用man smb.conf 命令进行查看。修改好配置文件后用testparm命令对smb.conf进行语法检验。然后用/etc/init.d/smb restart 命令重启服务。

测试
通过windows网上邻居可以验证是否正确。另外可以用smbclient来测试。如用gcb01账号进行登录检验smbclient –L 192.168.1.188 –U gcb001 等进行验证。在linux客户端可通过smbmount //192.168.1.188/public /mnt/samba 命令进行挂载,方便使用。以上只是samba的工作组模式的一种应用。高级应用涉及到域模式。以后有时间进行试验。