1、 SMB倒底是什么东西?
SMBServer Message Block这是由微软、Intel、IBM公司共同开发制订的一个协议,它的正式名称为:服务信息块标准。这个协议允许电脑用户共享网络上的文件、磁盘、目录、打印机,甚至在某些时候还可以共享COM端口。在WINDOWS操作系统中,SMB的具体应用就是“文件及打印机共享”。
SMB这个文件系统是架构在NetBIOS(network basic input/output system网络基本输入输出系统)。最早由IBM开发的针对局域网内少数计算机进行网络互联的一个通信协议。后面微软的网络架构就是使用它来沟通的,NetBios是只能用在局域网内部的,不能跨网段通信,所以SAMBA也是一样。
能不能在客户端上将服务器所提供的共享目录挂载过来呢?在LINUX/UNIX平台上用的是NFS,而在微软的操作系统里也有类似的文件系统,即CIFS(Common Internet File System)。最常见的应用就是映射了。
上面这两个系统都是用在“网上邻居”上。NetBIOS用来其它机器,CIFS用来挂载共享目录。
因为要跨平台通信,所以linux下的SAMBA服务是对这两个文件系统都支持。
2、 SMB服务所需安装文件
Smb需要三个安装包:SAMBAsamba-commonsamba-client
1) SAMBA软件包里主要有SAMBA服务的主要守护进程(smbdnmbd),
2) Samba-common主要提供了samba服务的主配置文件ff语法的测试程序。
3) Samba-client提供了当前主机充当客户端时的工具命令,如smbclient
产生四个配置文件:
1) /etc/f是主配置文件,
2) /etc/samba/lmhosts:类似于hosts文件,存储的是计算机的netbios名与IP地址的对应关系。一般smb服务会自己获得,不用另行设置。
3) /etc/samba/smbpasswd:这个文件默认不存在,存储的是samba用户的密码。特别注意此文件所有者要为root,权限须设为600
4) /etc/samba/smbusers:由于windowslinux在管理员和访客的账号名称不一致,分别为administratorroot,为了对应这两者之间的账号关系,可以使用这个文件来设置。注意,在f中要设置“username map”才会生效。
如果服务没有安装,快速安装的方法是:
Debian: apt-get install samba
RedHat(Mandrake): rpm -vih /mnt/cdrom/RedHat(Mandrake)/RPMS/samba*
3、 什么是smbdnmbd
SAMBA服务需要这两个daemons来管理不同的服务。
Daemon [di:mən]守护神的意思。
Smbd:这个daemon主要功能就是用来管理samba主机共享目录、文件与打印机信息等,也就是你能看到共享主机里的文件夹或打印机等。
Nmbd这个daemon则是用来管理组和netbios name解析的。也就是你能在“网上邻居”里看到其它主机的名字。
4、 SMB服务运行后会开启哪几个端口?
开启这两个守护进程后,主机系统会启动137\138\139\445共四个端口。
137netbios name名称解析
138netbios数据报
139smb协议
445CIFS协议
5、 如果出现客户端连接smb服务器无权限的提示怎么办?
原因很有可能是防火墙阻挡了访问
运行iptables –L查看
运行iptables –F删除所有防火墙限制
如果不想停用防火墙,就要了解客户端访问SMB服务器的原理。
客户端直接使用ip地址访问时,是使用445端口直接通讯,
客户端通过计算机名访问时,是使得139端口,
可在防火墙上开户对445和139端口的限制即可。
6、 f配置文件
注意配置格式为“参数值”,其中“=”前后有空格
f文件配置分为两部分
【global】这是全局配置部分,对整个服务器生效的
workgroup = workgroup      //主机所属的工作组为workgroup
  netbios name = smbserver      //本机的netbios名为smbserver
  server string = it file server    //备注
【test】这是具体共享文件夹或共享打印机的配置,只对该对象生效。
几个具体设置项如下:
1) 访问模式
配置项最简单,只需要修改
security = share/user/server/domain
share:使用匿名访问,无需密码验证
user:使用samba服务自带的密码数据库
server/domain:使用外部主机的密码,与password server = ip配置项结合起来用
以最常见的本地用户访问为例:
要注意以下几个方面:第一、比如要用身份验证user100的话,此用户一定要事先创建好,然后再通过smbpasswd命令将user100smb密码添加到smbpasswd文件中去。也就是说,user100会有两个密码:一个是系统的正常密码,一个是smb密码。第二、要设置加密smb密码。
Useradd user100
Passwd user100
Smbpasswd user100
Cat /etc/samba/smbpasswd
-------------------------------------------------------------------------------------------------
Security = user                            //启用身份验证
encrypt passwords = yes                    //加密密码
smb passwd file = /etc/samba/smbpasswd      //指定密码文件
2) 限定访问用户或组
Valid users = username                      //限定某用户才可访问
Valid users = @group                      //限定某用户组成员才可访问
3) 限定某些后缀的文件不能存放
veto files = /*.htt/desktop.ini/*.nws/*.exe/*/*.dll/*.eml/*.mp3/    //主要是防病毒
7、 常用SMB命令
1) 客户端查看、连接smb服务器共享文件:
Smbclient –L //IP –U 用户账号
-L:列表的意思      -U:后面接用户名
[root@localhost ~]# smbclient -L 127.0.0.1 -U user100
Password:
2) smb用户赋密码:
smbpasswd –a user100
3) 重启smbdnmbd服务
Smbd –D
Nmdb –D
4) 测试配置文件命令
Testparm
5) 查询smb服务器NetBIOS
Nmblookup [-S] [-A]
-S:接服务器名  -A:接服务器IP
[root@localhost ~]# nmblookup -A 192.168.30.109
Looking up status of 192.168.30.109
        20091101-0659  <00> -        B <ACTIVE>
        WORKGROUP      <00> - <GROUP> B <ACTIVE>
        20091101-0659  <20> -        B <ACTIVE>
        WORKGROUP      <1e> - <GROUP> B <ACTIVE>
        MAC Address = 00-19-D2-44-E1-B9
6) 挂载命令
Smbmount //IP/共享名 /挂载点 [-o options]
Smbmount //127.0.0.1/test  /mnt/samba –o username=user100,password=123,codepage=cp950
Username:登录账号
Password:密码
Iocharset:本机语言编码
Codepage:远程主机语言编码方式,繁体中文cp950
特别提示:RHEL5中不再支持smbmount命令,而是用mount –t cifs”命令来支持smb服务挂载, smbmount命令只支持rhel4之前的版本。
mount –t cifs //127.0.0.1/test  /mnt/samba \
–o username=user100,password=123,codepage=cp950,iocharset=big5
7) 查询目前有多少人在SMB服务器上联机
Smbstatus [-pS]  [-u username]
-p:列出已经使用samba联机的程序的PID
-s:列出已经被使用的资源共享状态
-u:只列出某个用户机关的共享数据
smbstatus
8、 定期清理SMB中存放的文件
#!/bin/bash
umask 0000
PATH=/bin:/usr/bin:$HOME/bin
TERM=vt220
export PATH TERM
find /smb/* -ctime +30 | xargs rm –rf             //清除30天以前的文件.注:不要写成
// find /smb –ctime +30 | //xargs rm –rf
//样会将整个recycle是什么意思/smb删除掉的
9、 设置垃圾回收站功能
在samba3.0以上的版本中有个很实用的功能,删除的文件会放在回收站中。启用的方法也很简单,在配置文件夹中加入以下几行: