第二节 Samba服务的安装、配置和排错

【视频讲解:Samba服务的安装、配置和排错】

2.1 Samba服务

  Samba是由Andrew Tridgell在1992年1月开发出了0.1版,称为Server 0.1,随后Adrew Tridgell开始在Linux上开发,同时他发现smb-server已经被别人注册了,所以就只好起名为Samba,这就是Samba这个名称的由来。
  Samba服务功能强大,这与其通信基于SMB协议有关。SMB不仅提供目录和打印机共享,还支持认证、权限设置。SMB进过开发,可以直接运行在TCP/IP协议上,使用TCP协议的445端口。

  Samba服务的应用环境

  ·文件和打印机共享
  ·身份验证和权限设置
  ·名称解析
  ·浏览服务

  可以看出,安装和配置好了Samba服务器后,Linux就可以Windows网络中的文件和打印服务器了。

  当客户端访问服务器时,信息通过SMB协议进行传输,其工作过程可以分为4个部分:
  1、协议协商
  2、建立连接
  3、访问共享资源
  4、断开连接

  Samba软件包的内容

  Samba是SMB客户程序/服务器软件包,它主要包含以下程序:
  ·SMB服务器smbd:为SMB客户机如Windows 9x/NT等提供Windows NT和Lan Manager风格的文件和打印服务。
  ·Netbios(RFC1001/RFC1002)名字服务器nmbd:可以提供浏览支持。用户甚至可以用Samba作为局域网的主浏览服务器。
  ·SMB客户程序smbclient:类似ftp程序,用以从UNIX、Netware和其他操作系统上访问SMB服务器上的资源(如文件、打印机)
  ·SMB客户服务程序的tar扩展smbtar:用以方便地拷贝SMB服务器上的文件。

  在Linux上,Samba还提供了挂卸SMB文件系统的工具程序smbmount(smbmnt)和smbumount。
  samba的核心是smbd和nmbd,用ps –ef可以看到这两个进程,那么证明机器已经在运行samba了。Samba服务的状态查询、启动和关闭:

 

# /usr/bin/smbstatus
# /etc/rc.d/init.d/smb stop
# /etc/rc.d/init.d/smb start

2.2 安装Samba服务

  Samba安装所需要的软件:samba-3.0.10-4e2.i386.rpm ;samba-client-3.0.10-4e2.rpm;samba-common3.0.23c-2.rpm;samba-swat-3.0.23c-2.rpm。

  Samba RPM包安装:
  1、检查系统是否安装了Samba 命令:rpm -qa |grep samba
  2、确定没有正式安装;命令 rpm -ivh samba*.rpm 。

  Samba 简单设置:
  1、修改配置文件smb.conf 在目录/etc/samba/smb.conf中 在public后格式输入并保存。如下:[test] ; comment = my test ;path = /test ;public = yes; writbale = yes write list = test 注:;为换行符。
  2、将samba服务启动 如下:#service smb start|restart|stop 也可以/etc/init.d/smb restart|stat|stop 。

  Samba 用户:向linux系统中添加用户如test #useradd test ;创建密码# passwd test添加samba用户 #smbpasswd -a test设置samba用户密码 #smbpasswd test。

  Samba 简单的访问在linux下;显示共享信息#smbclient -L ip - N ;访问共享信息#smbclient //ip/share -o username=test 将共享信息自动加载到mnt下#smbmount //ip/share /mnt/smb -o username=test 卸载如下:smbumount /mnt/smb 。

2.3 Samba服务器配置

  Samba服务安装完成后,必须对服务器进行设置,基本的Samba服务器的搭建流程主要分为以下4步:
  ① 编辑主配置文件smb.conf,指定需要共享的目录,为共享目录设置共享权限。
  ② 在smb.conf文件中指定文件名称和存放路径。
  ③ 设置共享目录的本地系统权限。
  ④ 重新加载配置文件或重新启动smb服务,使配置生效。

   在Linux服务器上的Samba运行起来以后,Linux就相当于一台文件及打印服务器,向windows和Linux Samba客户提供文件及打印服务。工作在共享模式或者用户模式下的两种方法较为常见(Security=share or Security=user) 。

   在目录/usr/local/samba/lib/内建立设置文件smb.conf:
   >> touch /usr/local/samba/lib/smb.conf
   [global]
   workgroup = workgroup
   guest account = nobody
   keep alive = 30
   os level = 2
   security = user
   printing = bsd
   printcap name = /etc/printcap
   load printers = yes
   ;如果需要Samba作为一台wins服务器的话,把“wins support”改为“yes”
   wins support = no
   ;需要Samba 使用现有的wins服务器的话,去掉下行的注释,并改变
   ;IP地址为你的wins服务器地址。
   ;wins server = 192.168.1.1
   [local]
   path = /usr/local
   read only = yes
   ;现在可以在Windows下找到/usr/local下的任何程序了
   [homes]
   comment = HomeDirectory
   browseable = no
   read only = no
   create mode = 0750
   ;以下的共享让用户存取服务器的CD驱动器
   [cdrom]
   comment = Linux CD-ROM
   ;输入你的 CD-Rom 驱动器的路径/cdrom或/mnt/cdrom
   path = /cdrom
   read only = yes
   locking = no
   [printers]
   comment = All Printers
   browseable = no
   printable = yes
   public = no
   read only = yes
   create mode = 0700
   directory = /tmp
   这下,打印机也可以在Windows下使用了。

   现在停止nmbd以及smbd守护程序,来激活新的配置。首先寻找PID号码:
   >>ps x

   输出:

   [...]
   7199 ? S 0:00 /usr/local/samba/bin/nmbd -D
   7201 ? S 0:00 /usr/local/samba/bin/smbd -D
   [...]

   杀掉这两个进程:

   >> kill 进程号
   进程号就是你在上面看到的第一列的号码,谈后重新启动:
   >> /usr/local/samba/bin/nmbd -D
   >> /usr/local/samba/bin/smbd -D
   在Windows网络窗口里搜索Linux PC,实验至此完成。

   有两类特殊的共享,分别是光驱和打印机

   光驱的共享设置:
   [cdrom]
   comment = grind’s cdrom
   path = /mnt/cdrom
   public = yes
   browseable = yes
   root preexec = /bin/mount -t iso9660 /dev/cd0 /mnt/cdrom
   root postexec = /bin/umount /mnt/cdrom
   这里root preexec指明了连接时用root的身份运行mount命令,而root postexec则指明了断开时用root身份运行 umount,有效实现了对光驱的共享。

   打印机共享的设置:
   [printers]
   path = /var/spool/samba
   writeable = no
   guest ok = yes
   printable = yes
   printer driver = HP LaserJet 5L
   这里printable指明该打印机可以打印,guest ok说明游客也能打印,path指明打印的文件队列暂时放到/var/spool/samba目录下。printer driver的作用是指明该打印机的类型,这样我们在安装网络打印机的时候可以直接自动安装驱动而不必选择。

   添加用户:

   samba添加用户比较方便,一般是用smbadduser,用法是smbadduser unixid:netid,举个例子:如果你的本机有个叫grind的用户,你用smbadduser grind:grind,这样从网上邻居访问的时候用户名就用grind,而如果你用了smbadduser grind:glass的话,网上邻居访问的时候提供的用户名就是glass而不是grind了。

   samba服务端的设置主要包括以上几点,如果需要更详细的信息可以用man smb.conf参考。

2.4 Samba客户端配置

  Linux客户端访问服务器的方法主要有两种:使用smbclient命令和使用mount命令挂载共享目录。

  1、使用smbclient命令

  在linux系统中,使用smbclient这个程序来连接Samba的客户端与服务器端,所以当使用linux客户端访问samba服务器的时候,先要确保客户端已经安装samba-client这个rpm包,既可以使用smbclient命令连接服务器端。

  a、列出某个IP地址所提供的共享文件夹

  smbclient -L 198.168.0.1 -U username%password

  b、像FTP客户端一样使用smbclient

  smbclient //192.168.0.1/tmp -U username%password
  执行smbclient命令成功后,进入smbclient环境,出现提示符: smb:\>
  这里有许多命令和ftp命令相似,如cd 、lcd、get、megt、put、mput等。通过这些命令,我们可以访问远程主机的共享资源。

  c、直接一次性使用smbclient命令

  smbclient -c "ls" //192.168.0.1/tmp -U username%password
  和
  smbclient //192.168.0.1/tmp -U username%password
  smb:\>ls
  功能一样的

  2、使用mount命令挂载共享目录

  用户访问samba服务器上的共享资源时,使用smbclient命令较为繁琐,因此可以使用mount命令将共享目录挂载到本地,像使用本地文件系统一样,去使用samba服务器的共享资源。
  语法:mount [选项] [磁盘或分区的设备名] [载入点]

  命令的各选项含义:

  -a 载入在/etc/fstab中描述的所有设备
  -n 载入信息不记录到日志文件/etc/mtab文件中
  -r 以只读的模式载入设备
  -t 指定载入文件系统的类型(fat32为vfat)
  -o 选项,常用的选项有 codepage, iocharset
  (对于中文codepage=936,iocharset=gb2312)
  -w 以可读写模式载入设备
  -loop 挂载 ISO 文件时用
  [载入点] 是一个目录,请建立一个空目录,mount 后该目录中的内容就是你载入的文件系统内容。

  实例:
  mount -t vfat /dev/hda5 /mnt/wind -o codepage=936,iocharset=gb2312
  % 挂载/dev/hda5到/mnt/wind目录下并且目录支持中文

2.5 Samba排错

  1、 linux服务的一般排错方法

  对于linux服务,想排错得心应手的话,先要养成良好的操作习惯。

  ① 错误信息---- 一定要仔细查看接收到的错误信息。如果有错误提示的话,根据错误提示,去判断产生问题的所在。
  ② 配置文件----配置文件存放服务的设置信息,用户可以修改配置文件,以实现服务的特定功能。如果配置失误,会造成服务无法正常运行。
  ③ 日志文件---- 一旦服务出现问题,可以使用tail命令动态监控日志文件,以便查找问题所在。

  2、 samba服务的故障排错

  Samba服务的功能强大,当然配置文件也相当复杂,出现问题后,我们可以通过以下步骤进行排错。

  步骤一:使用testparm命令测试。
  使用testparm命令检测smb.conf文件的语法,如果报错,说明smb.conf文件设置错误。根据提示信息,去修改主配置文件,进行测试。

  步骤二:使用ping命令测试。

 

  Samba服务器主配置文件排除错误后,再次重启smb服务,如果客户端仍然无法连接samba服务器,客户端可以使用ping命令测试。根据出现的不同情况,进行分析排除。

  步骤三:使用smbclinet命令进行测试。
  若客户端与samba服务器可以ping通,说明客户端到达服务器的连接没有问题,如果还是不能访问samba共享资源,可以执行smbclient命令进一步测试服务器端配置。

  如果samba服务器正常,并且用户采用正确的账号和密码,去执行smbclient命令可以获取共享列表。

本课小结】

  通过本章的学习,熟练掌握linux常用的网络配置命令,并对网络环境进行测试;能够了解samba的介绍好安装;熟练掌握samba服务进行服务器端和客户端的配置,熟练samba常用错误的排除。