Samba(server message block,服务信息块)协议是一个高层协议,它提供了在网络上的不同计算机之间共享文件、打印机和通信资料的手段,是实现网络上不同类型计算机之间的文件和打印机共享服务的协议。
Samba是一组使linux支持SMB协议的软件,基于GPL原则发行,源代码完全公开。Samba的核心是两个守候进程smbd和nmbd。smbd守候进程负责建立对话、验证用户、提供文件和打印机共享服务等。nmbd守候进程负责实现网络浏览。为了将linux作为客户端集成到Windows环境中,Samba提供了两个工具:nmblookup工具用于netbios名称解析和测试,smbclient工具提供对SMB文件和打印服务的访问。
Samba服务器可以让Windows操作系统用户访问局域网中的linux主机,就像网上邻居一样方便。
Samba的工作原理是让Windows操作系统网上邻居的通信协议--NETBIOS(network basic input/output system)和SMB这两个协议在TCP/IP通信协议上运行,并且使用Windows上的NETBEUI协议让linux可以在网上邻居中被Windows看到。其中最主要的是SMB协议在所有的诸如Windows server 2008、Windows 7等Windows系列操作系统中应用广泛。Samba就是SMB服务器在类UNIX系统上实现。
文件共享和打印是Samba服务器最主要的功能。Samba为了方便文件共享和打印共享,还实现了相关控制和管理功能,具体来说,Samba完成的功能如下。
·共享目录:在局域网共享某些文件和目录,使得同一个网络内的Windows用户可以在网上邻居里访问该目录,如同访问网上邻居里的其他Windows机器一样。
·目录权限:决定每一个目录可以由哪些人访问,具有哪些访问权限,Samba可以设置一个目录允许一个人、某些人、组或所有人访问。
·共享打印机:在局域网上共享打印机,使得局域网和其他用户可以使用linux操作系统下打印机。
·打印机使用权限:决定哪些用户可以使用打印机。
安装和配置好Samba服务器后,linux就可以向局域网中的Windows用户提供文件和打印服务。
用户在安装RHEL5的时候,如果选择了安装所有软件包,那么Samba就已经安装上了。如果系统中没有安装Samba,则可从光盘的DVD/SERVER目录下安装。安装步骤如下。
如果没有出现以上类似信息,则表明系统尚未安装Samba,用户可以进行安装。
Samba的安装过程比较简单,在RHEL DBD安装光盘里的RHEL DVD/SERVER目录下就包括Samba的安装程序,有四个文件:
可以用光盘安装也可以从网上下载这四个文件放在硬盘的某个目录下进行安装,安装过程非常相似。
把光盘放在光驱里,一般系统会自动安装光驱,不需要用户手动安装光驱,输入如下命令:
cd Samba软件包所在的目录
rpm -ivh Samba服务包
和Samba服务相关的文件有:Samba的核心配置文件/etc/samba/smb.conf、Samba的启动脚本/etc/rc.d/init.d/smb、存放Samba用户口令的文件/etc/samba/smbpasswd和添加Samba用户的配置文件/usr/bin/smaddbuser
将Samba相关软件包安装完成后,linux服务器与Windows客户端还不能正常互联。要让Samba服务器发挥作用,还必须正确配置Samba服务器。另外,还要正确设置防火墙。默认情况下防火墙不允许Windows客户端访问Samba服务器,必须打开相应服务。
Samba服务器全部配置信息均保存在/etc/samba/smb.conf文件中。smb.conf文件采用分节的结构,一般由三个标准节和若干个用户自定义的共享节构成。利用文本编辑器可以编辑和查看smb.conf文件
基本全局参数在文件中对应的内容有:
netbios name=? //设置Samba的netbios名字
workgroup=? //设置Samba要加入的工作组
hosts allow=?<192.168.5. /192.168.5.164>
hosts deny=?<192.168.5. /192.168.5.164> //允许/禁止访问的子网或主机
dead time= //指定在客户端无操作多少分钟后服务器自动中断连接,如dead time =10
max open files= //定义同一客户机最多打开的文件数目,如max open files=100
共享资源参数在文件中对应的内容有:
comment=? //指定对共享的描述
path=? //指定共享服务的路径
访问控制参数在文件中对应的内容有:
writable=yes //指定共享路径是否可写
browsable=yes //指定共享的路径是否可浏览(默认可以)
available=yes //指定共享资源是否可用
read only=yes //指定共享的路径是否为只读
read list=user,@group //设置只读访问用户列表
write list=user,@group //设置读写访问用户列表
valid users=user,@group //指定允许使用服务的用户列表
Invalid users=user,@group //指定不允许使用服务的用户列表
public=yes/no //设置共享资源是否允许所有用户访问,除guest用户以外
guest ok=yes/no //设置是否允许guest用户访问共享资源
guest only=yes/no //设置共享目录只允许guest用户访问
smb.conf文件的默认设定值如下:
[global]
workgroup=mygroup
serverstring=samba server
security=user
passdb.backend=tdbsam
load printers=yes
cups.options=raw
[homes]
comment=home directory
browserable=no
writable=yes
[printers]
comment=all printers
path=/var/spool/samba
browserable=no
guest ok=no
writable=on
printable=yes
Samba安全等级按照参数在文件中对应的选项为:
security=?
其中可选择的等级参数如下。
共享级访问(share):当客户端连接到Samba服务器后,不需要输入Samba用户名和口令就可以访问Samba中的共享资源。这种方式方便但不安全。
用户级(user):这是Samba服务器默认的安全级别。Samba服务器负责检查Samba用户名和口令,验证成功后才能访问相应的共享目录。
域(domain):Samba服务器本身不验证Samba用户名和口令,而由Windows域控制器负责。此时必须指定域控制服务器的netbios名称。
服务器(server):Samba服务器不验证Samba用户名和口令,而将输入的用户名和口令传给另一个Samba服务器来验证。此时必须指定负责验证的那个Samba服务器的名称。
service smb start/restart
当Samba服务器的安全级别为用户时,用户访问Samba服务器时必须提供其Samba用户名和口令。只有linux系统本身的用户才能成为Samba用户,并需要设置其Samba口令。Samba用户账号信息默认保存于/etc/samba/smbpasswd文件。
格式:smbpasswd 【选项】 【用户名】
功能:将linux用户设置为Samba用户
主要选项说明如下。
-a 用户名:增加Samba用户
-d 用户名:暂时锁定指定的Samba用户。
-e 用户名:解锁指定的Samba用户
-n 用户名:设置指定的Samba用户无密码
-x 用户名:删除Samba用户。
超级用户在shell命令提示符后输入“smbpasswd -a 用户名”格式的命令后,必须根据屏幕提示两次输入指定Samba用户的口令。系统将指定Samba用户的账号信息保存于/etc/samba/smbpasswd文件。smbpasswd文件默认并不存在,首次执行smbpasswd命令将自动创建此文件。
如:修改Samba用户tomcat的口令
格式:pdbedit 【选项】 【用户名】
功能:将linux用户设置为Samba用户,无参数时,修改Samba用户的密码。
主要选项说明如下。
-a 用户名:增加Samba用户。
-r 用户名:修改Samba用户
-v 用户名:查看Samba用户信息
-x 用户名:删除Samba用户。
-L:显示所有用户
例如,将名为tomcat1的linux用户设置为Samba用户:
又如,查看Samba用户信息:
例如,显示所有Samba用户信息:
linux中与Samba服务器有关的shell命令除了前面介绍的testparm命令和smbpasswd命令外,还包括smbclient、smbstatus命令等。
功能:查看或访问Samba共享资源。
格式:
smbclient 【-L IP地址】 【共享资源路径】 【-U 用户名】
执行“smbclient //192.168.10.16/share”命令后,需要输入口令,验证成功后进入smbclient 环境,出现“smb: \>”提示符等待输入命令。输入“?”将显示所有可使用的命令。在Samba交互界面下的操作命令有如下几个。
!:执行本地路径
ls:显示文件列表
get:下载单个文件
put:上传单个文件
mget:批量下载文件(支持通配符)
mput:批量上传文件(支持通配符)
mkdir:建立目录
rmdir:删除目录
rm:删除文件