Linux全攻略--Samba服务器配置与管…

1、Samba工作原理

Samba的工作原理是,让Windows系列操作系统网络邻居的通讯协议——NETBIOS(NETwork Basic Input/Output System)和SMA(Server Message Block)这两个协议在TCP/IP通信协议上运行,并且使用Windows的NETBEUI协议让Linux可以在网络邻居上被Windows看到。其中最重要的就是SMB(Server Message Block)协议,在所有的诸如Windows Server 2003、Windows XP等Windows系列操作系统中广为应用。Samba就是SMB服务器在类UNIX系统上的实现,目前可以在几乎所有的UNIX变种上运行。

2、Samba服务器的功能

文件共享和打印共享是Samba最主要的功能。Samba为了方便文件共享和打印共享,还实现了相关的控制和管理功能。具体来说,Samba完成的功能有:

  1. 共享目录:在局域网上共享某个或某些目录,使得同一个网络内的Windows用户可以在网上邻居里访问该目录,就跟访问网上邻居里其他Windows机器一样。
  2. 目录权限:决定每一个目录可以由哪些人访问,具有哪些访问权限。Samba允许设置一个目录让一个人、某些人、组和所有人访问。
  3. 共享打印机:在局域网上共享打印机,使得局域网的其他用户可以使用Linux操作系统下的打印机。
  4. 打印机使用权限:决定哪些用户可以使用打印机。

安装和配置好了Samba服务器后,Linux就可以向局域网中的Windows用户提供文件和打印服务了。

3、SMB协议

在NetBIOS出现之后,Microsoft就使用NetBIOS实现了一个网络文件和打印服务系统,该系统基于NetBIOS设定了一套文件共享协议,Microsoft称之为SMB(Server Message Block)协议。这个协议被Microsoft用于它们的Lan Manager和Windows服务器系统中,而Windows系统均包括这个协议的客户软件,因而这个协议在局域网系统中影响很大。

随着Internet的流行,Microsoft希望将这个协议扩展到Internet上,成为Internet上计算机之间相互共享数据的一种标准。它将原有的几乎没有多少技术文档的SMB协议进行整理,重新命名为CIFS(Common Internet File System)。因此,为了让Windows和UNIX计算机相集成,最好的办法即是在UNIX中安装支持SMB/CIFS协议的软件,这样Windows客户就不须要更改设置,就能如同使用Windows NT服务器一样,使用UNIX计算机上的资源了。

下面介绍Samba的安装、简易配置以及启动和停止的指令。

4、安装Samba

用户在主流的Linux版本(如Fedora和CentOS下)都可以采用如下命令进行安装:

#yum -y install samba

在创建配置文件以后(一般情况下,安装好Samba软件后,其配置文件为缺省状态),需要测试Samba正确性。首先确认客户和服务器之间可以互通。如果网络不能工作,则Samba必然不能工作。

我们使用testparm程序。testparm是一个简单的程序,用于检查/etc/smb.conf文件的内部正确性。如果该文件报告没有问题,则可以确定smbd可以成功地加载该配置文件。请注意:使用testparm并不能保证在配置文件中指定的服务可用或者工作正常。这种测试只保证Samba可以读取和理解该配置文件。

testparm命令行如下:

testparm [configfile [hostname hostip]]

当smb.conf文件不在默认位置时,使用configfile可以(/etc/smb.conf)指明其位置。可选参数hostnamehostip指示testparm查看该主机是否有权限访问smb.conf文件中提供的服务。如果指定hostname,则必须还指定该主机的IP地址。否则结果不可预知。

下面的例子演示了testparm运行的输出。如果有某些错误,testparm程序会给出特定的错误消息报错:

//测试smb.conf文件配置是否正确//该测试只能测试smb.conf文件配置是否正确,并不能保证Samba服务器正常工作#testparm smb.conf gjspring 15.26.40.9Load smb config file from smb.confProcessing section “[home]”Processing section “[GONGsprn]”Load services OK .Allow connection from gjspring(15.26.40.9)to homes.Allow connection from gjspring(15.26.40.9)to GONGsprn.

5、启动及关闭Samba服务器

Samba服务器的启动有两种方式,一种是Linux终端命令行形式,一种是使用Linux提供的System Services方式。下面将分别介绍这两种启动方式。

(1)Samba的命令行启动和关闭

安装并配置好Samba后,可以在Linux终端将Samba启动,也可通过终端命令行将已经启动的Samba服务关闭。若要启动Samba,必须以管理员身份登录Linux,如果是以普通用户身份登录Linux,可以在终端输入如下命令切换到管理员身份:

#su root //暂时切换到系统管理员身份登录系统,系统会提示用户输入root密码

切换到root用户后,在命令行输入如下命令可启动Samba:

#smbd start //启动samba服务器

smbd是Samba的服务守护进程,时刻侦听网络的文件和打印服务请求,该程序默认安装在/usr/sbin/目录下。一般情况下,该目录是系统默认目录,也就是说如果shell在用户当前目录下找不到输入的命令时,系统会自动到/usr/sbin/目录下查找输入的命令。如果该目录没有设置成系统默认目录,用户也可以手动将当前目录更改到该目录,然后执行smbd守护程序。

同理,若用户欲关闭Samba服务,可以在命令行输入如下命令:

#smbd stop //停止samba服务器

系统将中止smbd守护进程,局域网内的Windows用户将不能再访问该系统提供的文件或打印服务。

在某些特定情况下,用户可能希望重新启动Samba服务器,用户可以先关闭Samba服务器,然后再启动服务器,过程如下:

#smbd stop //停止samba服务器#smbd start //启动samba服务器

Samba为这种操作提供了简便操作方式如下:

#smbd restart //启动samba服务器

Samba服务器由两个守护程序组成,smbd和nmbd.smbd守护程序提供文件和打印共享服务,nmbd守护程序提供NetBIOS有名服务器支持。可以从init脚本或者xinetd作为系统服务运行Samba。因为RedHat默认在每次引导系统时从init脚本启动SMB服务,而不是从xinetd作为服务引导,因此可以使用以下命令启动或者停止SMB服务器:

#/etc/rc.d/init.d/smb start#/etc/rc.d/init.d/smb stop

(2)在System Services中启动和关闭Samba服务

Linux提供了System Services方式启动或关闭系统服务。如果用户系统已经安装Samba服务,则可以在System Services窗口中看到smb服务选项。在System Services中启动Samba服务的过程如下:

  1. 打开System Services窗口,在Linux终端窗口中输入setup命令,Linux出现Text Mode Setup Utility窗口。在Text Mode Setup Utility窗口中选中System Services菜单项。如图2所示。
  2. 在System Services窗口选中smb菜单项即可。

System Services窗口
图2 System Services窗口

到这里为止,Samba服务器的准备工作基本就完成了。接下来就是要通过Samba服务器实现Linux与Windows之间的互访。

6、Linux和Windows文件互访

Samba共享可以由SMB客户在Windows或Linux平台访问。Windows访问Linux系统共享文件一般通过网络邻居或Windows的IE浏览器;Linux访问Windows系统下共享文件一般通过smbclient和smbmount命令实现。

(1) Windows客户使用Linux系统共享文件

一个正确配置的Samba共享可以通过Windows网络邻居或Windows的IE浏览器访问。其访问路径一般具有如下格式:

网上邻居\整个网络\工作组名\Linux机器名Linux系统下目录

如果有问题,最值得怀疑的是Windows还不知道Samba服务器、用户和口令大小写的问题以及明文和加密口令问题。如果是Windows还不知道Samba服务器,则在找到该计算机的Windows窗口刷新屏幕,等待几分钟或者重新引导Windows客户。如果是用户和口令大小写的问题,则在[global]段中临时将用户名级和口令级设置足够大,如100。如果是明文和加密口令问题则在[global]段中设置encrypt passwords=yes和smb passwdfile=/etc/smbpasswd。

(2)用smbclient工具访问局域网上的Windows系统

在Linux系统下访问局域网上其他系统(包括Windows系统和Linux系统)的共享文件,有很多种不同的方式。下面我们先介绍smbclient工具。

用smbclient工具可以访问局域网上的Windows系统的SMB共享。smbclient提供一个类似FTP的界面,允许与另一个运行SMB服务器的网络共享的计算机进行文件传输。mbclient将另一个共享作为本地目录加载。smbclient提供命令行选项查询服务器可用的共享目录或者交换文件。关于所有命令行选项的详细信息,参考smbclient手册页。表1列出了smbclient工具最常用的一些命令及其功能。例如可使用如下命令列出计算机15.26.40.9上所有共享文件:

#smbclient –L 15.26.40.9

其中,- L参数要求列表输出,15.26.40.9是欲访问机器的IP地址,也可以使用任何可以解析为该IP地址的机器名。若要传输一个文件,必须首先使用以下命令连接到Samba服务器:

#smbclient //15.26.40.9/homes -U gong

其中,参数//15.26.40.9/homes指定另一台计算机上的远程服务。通常是一个文件系统目录或者打印机。任何解析为该IP地址的名字都可以替换该IP地址。-U选项允许指定希望用于连接的用户名。还有许多其他的smbclient命令配置,详细的信息请参阅smbclient手册页。如果该用户需要口令,则smbclient工具提示输入口令,然后出现如下提示:

smb: \

\表示当前工作目录。下面列出smbclient的所有命令参数如表1所示:

表1 smbclient的参数及其含义

参 数

含 义

?或help [命令]

提供命令的帮助消息,当不指定命令时提供一般的帮助

![shell命令]

执行指定的shell命令或者为用户提供shell提示符

cd [目录]

更改服务器上的指定目录(不是本地计算机)。如果不指定目录,则smbclient报告当前的工作目录

lcd[目录]

在本地计算机上更改到指定的目录。如果不指定目录,则smb-client报告本地计算机上当前的工作目录

el[文件]

如果用户拥有权限,则删除服务器上的指定文件。文件可以包含通配符

dir或ls[文件]

列表显示指定的文件

exit或quit

退出smbclient程序

get

获得指定的远程文件并在本地服务器上保存该文件。如果指定了本地名称,则复制的文件以该文件名而不是远程服务器上的名称保存

mget[文件

复制所有指定的文件,包括所有匹配通配符的文件到本地计算机

md或mkdir[目录]

在远程计算机上创建指定的目录

rd或rmdir[目录]

在远程计算机上删除指定的目录

put

从本地计算机上复制指定的文件到服务器

mput[文件]

从本地计算机上复制所有指定的文件到服务器

print[文件]

在远程计算机上打印指定的文件

queue

显示在远程服务器上排队的所有打印作业

(3)用smbclient工具访问局域网上的其他系统

为了访问方便,可以使用smbmount命令允许将一个Samba共享加载为本地目录。要实现该功能,在本地工作站创建一个/mnt/test目录。使用root用户运行以下命令:

#/usr/sbin/smbmount ‘//15.26.40.10/homes’ ‘/mnt/test’ –U gong

该命令应在本地机器上运行,而且该机器应已经包含/mnt/test目录。Samba服务器在IP地址为15.26.40.9的机器上,本地机器可以通过网络可以访问此服务器。注意任何解析为该IP地址的名字都可以替换该IP地址。在本地计算机上运行上述命令,以用户gong登录,将[homes]段中定义的共享加载到本地/mnt/test目录。

要卸载该目录,可作为root用户运行下面的命令:

#smbumount /mnt/test

(4)用LinNeighborhood访问局域网上其他系统的共享文件

LinNeighborhood基于GUI界面,可用于在Linux系统下浏览局域网上运行Windows操作系统的“网络邻居”或其他运行Samba的Linux系统共享文件。下面介绍LinNeighborhood的用法。

1)下载LinNeighborhood软件包:首先到网上下载LinNeighborhood软件包。一般情况下LinNeighborhood软件包的提供形式是.tar.gz文件,现在的最新版本是0.6.5版,其文件名为LinNeighborhood-0.6.5.glibc-i386.tar.gz。下载后保存到某个目录。这里假设用户保存到/temp目录。

2)解压缩并解包文件:执行下述命令可以完成文件的解压缩和解包。

#cd /temp //切换目录#tar xvfz LinNeighborhood-0.6.5.glibc-i386.tar.gz //解压缩

3)执行程序:软件不用任何设置,就可以直接执行。若欲执行LinNeighborhood,直接找到可执行文件输入LinNeighborhood命令即可。例如步骤(2)解压缩解包后,可以输入以下命令执行程序:

//找到LinNeighborhood可执行文件所在目录,输入可执行文件名打开LinNeighborhood

#cd /temp/LinNeighborhood-0.6.5.glibc-i386#./LinNeighborhood

打开程序出现如图3所示界面。

LinNeighborhood窗口 
图3 LinNeighborhood窗口

你可能感兴趣的:(Linux全攻略--Samba服务器配置与管…)