打印

Linux 下 Samba使用和管理详细指南

Linux 下 Samba使用和管理详细指南

  Windows 最令人感到方便的特色莫过于『网上邻居』的档案分享功能,有了这项功能后,使得局域网络里资料的传递与分享得以落实。以往在 Linux 的世界里其实也有 NFS 可以在 Unix Like 的操作系统下做档案分享,但是与 Windows 作业环境的整合还是缺乏沟通的桥梁。

  Samba Server 建立了 Linux 与 Windows 环境的沟通管道,也可以做为Print Server提供Windows 远程联机打印;若是使用 Samba Server 搭配 Apache Web Server,可在 Windows 环境下藉由『网上邻居』登入 Linux 主机里使用者的个人帐号放置网页目录(当然是在局域网络内才行),有了这项功能,编辑个人网页就如同在本机操作一般方便。除此之外,Samba Server 也可以完全取代 NT/2000 PDC(Primary Domain Controler)成为 NT/2000 网域主控者管理 NT/2000 网域机群,当然,Samba 也可以将目录、档案分享给其它 Unix Like、Mac、OS/2 的机器使用,应用层面可以说是相当广阔,更令人惊讶的是 Samba Server 也可做为WINS Server,若配合 DHCP Server 更可以管理大型 NT/2000 网域,想想!这个集合众多优点的服务,是不是会对不同机种的操作系统工作环境在整合上有着极大的助益呢?

  Samba 可以定位为一套功能极为强大的档案服务器软件,所谓档案服务器就是将档案伺服主机上的目录分享出来,让您可以透过网络对分享出来的目录里的档案,做执行、读取、写入等动作。基本上 NT/2000 的网域是使用 NetBEUI 做计算机命名服务,使用广播封包来侦测网络上有哪些计算机、哪些目录提供资源共享,而 Samba 与UNIX主机间的沟通(如目录、档案分享)是透过 TCP/IP 协议达成任务,Samba 若要与NT网域做沟通,透过TCP/IP当然是行不通的,只好使用 NetBIOS 对NT网域做广播,让 Windows 机器能够认识它,进而成为NT网域成员;因此 Samba 是使用 smbd Daemon 透过 TCP/IP 联系 Unix Like 主机,而使用 nmbd Daemon 透过 NetBIOS 对 NT/2000 网域做联系,也就是说 Samba 使用两种机制达成资源共享的目的。

  注:smbd Daemon主要用来处理档案分享和打印分享服务;nmbd Daemon则用来处理WINS 名称解析服务及NT Browser Service(即网上邻居)。

  要使用 Samba Server 相当容易,在安装好 Redhat 后,只要设定好工作群组,激活Samba Server 后就可以正常运作,您可以立即在 Windows 下的『网上邻居』里看到执行Samba服务的Linux 主机名称。

  samba-2.0.7-21ssl
  samba-common-2.0.7-21ssl
  samba-client-2.0.7-21ssl(samba 所需要的套件,请随时更新!!)
  想让开机自动激活 samba 吗?
  #chkconfig --level 345 smb on
  或是手动激活
  #/etc/rc.d/init.d/smb start
  以上是 samba 的简单设定,接着介绍 samba 的设定及其它应用
  当安装完 samba 套件后,也立即拥有以下的 samba 工具
  smbclient:利用这个工具可连接其它 Unix like 的 Samba Server,或是连接 Windows 机器,以取得档案分享服务。
  testparm :这个工具可让您测试 smb.conf 组态档定义是否正确。
  testprns :这个工具可让您测试定义在 printcap 档里的列表机。
  smbstatus:这个工具可用来显示目前 client 端连接到 Samba Server 的联机状况。
  nmblookup:这个工具可使用 NT/2000 网域内的主机名称查询出对应的 IP 地址。
  smbpasswd:这个工具可用来建立、变更登入到 Samba server 的加密密码
  swat:这个工具让您可使用 web接口(如:IE、Netscape)对Samba Server做组态设定。
  先确定在 /etc/services 档案里面这些句子没有被批注掉?s
  netbios-dgm 138/tcp # NETBIOS Datagram Service
  netbios-dgm 138/udp
  netbios-ssn 139/tcp # NETBIOS session service
  netbios-ssn 139/udp

  然后是建立 /etc/lmhosts 档案(如果它不存在的话)?o建立起各主机的对应。我们只需将 MS Winndows 主机对应建立起来则可?o但一定要包括作为 SAMBA 服务器的 Linux 主机本身?s

  vi /etc/lmhosts
  192.168.0.17 redhat52
  192.168.0.15 PII266
  192.168.0.12 nt4ser2
  192.168.0.22 redhat62
  192.168.0.16 w2000ad
  然后是修改 /etc/samba/smb.conf 这个档案

  设定Samba的组态档最基本可分为三个阶段:Server基本设定、使用者home目录的设定、目录分享设定。至于「共享列表机设定」则是当您有需要时再做设定。若是在Samba 的组态设定档/etc/smb.conf档里做设定,则是针对[global]、[homes]、[分享目录]三大项目做设定。


  vi /etc/samba/smb.conf
  若是在etc/smb.conf档里做设定,则是在[global]项目里设定如下:
  [global]
  workgroup = MYGROUP ;不分大小写
  unix password sync = Yes
  设定 Linux 与 samba 使用相同的密码
  domain master = yes
  设定 samba 成为 PDC (网域主控者),注意:若是将Samba设定为独立服务器,则无须设定此项。
  client code page = 950
  如果想使用者能看到中文文件名称?o可以将这行加进 [global] 设定中
  [homes]
  browseable = yes
  writable = yes
  public = yes
  write list = @staff
  samba 内定帐号拥有者可对帐号目录做读写动作,若想让某些使用者也有权利对此目录做写入动作时,请在「Users」卷标的「write list」字段里输入其它使用者名称,如:abc、test、working。

  所谓的使用者home目录是指,以使用者帐号登入 Samba Server 后个人所拥有的帐号目录,如:以帐号 root 登入后,内定的个人目录是 /root。一般而言,对「使用者home目录的设定」着重于是否将此个人目录分享出来及设定存取的权限,其余项目大抵上是无需设定。

  注意:若您选择了「Public access」、「Writable」两个选项,并不代表所有的使用者皆有权利对您所分享的home目录下的档案具有写入权,还得视档案原来在Linux下的权限设定,例如,档案权限为rwxr-xr-x(chmod 755),表示只有拥有者具可写入权,此点务必留意。
  [works]
  comment = share works
  browseable = yes
  path = /works
  public = yes
  writable = yes
  目录分享设定
  使用 Samba 最大的用途当然是将特定的目录分享出去,分享目录的原则不外乎是读写权限及分享对象,把握此原则就可很迅速的设定好分享目录
  用 testparm 来测试一下smb.conf的语法是否正确,或是使用 smbclient -L (computer_name)
  第一次执行的话要先设定 "Options" --> "Preferences" ,设定要登入的 Windows 工作群组

TOP

  然后在本机的图标上按鼠标右键,执行 "rescan group",重新搜寻工作群组

  然后找到其它 Windows 的机器名称,按鼠标右键,执行 "mount"

  设定要 mount 到 Linux 上的 path ,就大功告成了!!

  检测

  若想要知道目前 Samba 的联机状态,可以使用 smbstatus 工具

  [root@vm_cle samba]# smbstatus

  Samba version 2.0.7

  Service uid gid pid machine

  ----------------------------------------------

  abc1234 abc1234 abc1234 1240 abcedf (192.168.0.229) Sun May 6 17:01:09 2001

  No locked files

  Share mode memory usage (bytes):

  1048464(99%) free + 56(0%) used + 56(0%) overhead = 1048576(100%) total

  另外要注意 /etc/hosts 里,是否有加入以下内容:

  IP hosts_name

  如果没有加入上面那一行, /etc/rc.d/init.d/smb start 时都是 [ OK ] ,但是其实都没激活,可以检查 /var/log/samba/* ,看看 log 讯息就知道了!!

TOP

Samba 的 Client 端设定

  若设定使用「Linux 主机的帐号与密码做为登入 Samba Server 的帐号与密码」时,由于 win95OSR2 之前版本及 NT SP3 之前版本的密码机制是不加密的纯文字密码,当登入 Samba Server 时可传送不加密的纯文字密码给 Samba,因而轻易认证登入。

  而 win98 及 NT SP3之后版本及 WIn2000 的密码机制是属于加过密的密码,当登入Samba Server 时所传送的是加密的密码给 Samba,因而无法认证登入,此时,必须为需要登入 Samba Server 的使用者帐号,利用 smbpasswd 这个工具程序建立登入Samba 的密码,当 windows Client 端登入 Samba 时,就可接受加过密的密码做为认证,不过此时就无需使用「Linux主机的帐号与密码做为登入Samba Server的帐号与密码」,因为已经为使用者建立属于登入 Samba 的密码。必须注意的是:登入Samba 的使用者帐号必须是已存在于 /etc/passwd 文件内的Linux系统帐号,唯有如此,才能确保能使用个人帐号目录。

  不加密的联机

  由于 Samba 内定的接受密码机制属于纯文字密码,当设定好Samba Server 端后,此时若Client 端是 Windows 95 OSR2之前的版本或是 Win NT SP3 之前的版本,在登入本机时(假设使用 abc 帐号),直接使用『网上邻居』即可看「home」、「abc」、「works」三个分享目录,这是因为 Client 传送纯文字密码到Server端做为认证。

  若 Client 端是 Windows 95 OSR2以后的版本或是Win NT SP3以后或是 Win2000 的版本,因为 Client 传送加密码到 Samba Server 端做为认证,则需设定为纯文字密码才可以与 Samba Server 联机。您必须使用『登入记录编辑器』(regedit)对联机密码形式做设定:

  Windows 95/98 ==> samba_9x.reg

  REGEDIT4

  [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]

  "EnablePlainTextPassword"=dword:00000001

  Windows NT ==> samba_nt.reg

  REGEDIT4

  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Rdr\Parameters]

  "EnablePlainTextPassword"=dword:00000001

  Windows 2000 ==>samba_2000.reg

  REGEDIT4

  [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanWorkStation\Parameters]

  "EnablePlainTextPassword"=dword:00000001

  你可以手动用 regedit 改,也可以存成 *.reg 直接执行!!

TOP

  使用纯文字密码登入 Samba 的好处是:可享用现成的 Linux 帐号与密码,但却失去了安全性,此时可采用加密的密码登入 Samba。为了让 Samba 能对加密的密码做认证,除了在基本设定里需选择「Encrypted password required」外,还需要使用smbpasswd 为每一帐号建立samba密码,其步骤如下:

  vi /etc/samba/smb.conf

  [global]项目设定加密,如下所示:

  encrypt passwords = yes

  #smbpasswd -a abc

  如上设定后,Client 端是 Windows 95 OSR2以后的版本或是Win NT SP3以后的版本或是windows 2000,则不需要对 registry 的密码项目做纯文字密码设定,直接就可登入Samba Server。

  注意:使用smbpasswd -a username之前,请先确定 /etc/passwd 档里存在username帐号。

  smbpasswd -d username:停用username帐号

  smbpasswd -e username:启用username帐号

  相信您对 Samba 应该有了一些概念,Samba 是个相当强悍的 Server,在组织网域内的机群时,别忘了 Samba + DHCP + DNS 可帮您有效、快速的完成任务。

  用 Browser 管理 Samba

  必须安装套件 -- samba-swat-xxx.rpm ,安装完之后记得 restart smb 才会生效(当然也可以用 Webmin 透过 browser 管理 samba !!)

  /etc/rc.d/init.d/smb restart

  1.先使用 browser 联机, port 901

  为何会 error 呢??这是小编要提醒您的,透过 Browser 方式管理固然方便,但是 security 可不要忘记,可以利用 /etc/samba/smb.conf 里面的 hosts allow 来设定开放给谁使用 Browser 管理!!(千万不要对 internet 全部开放,太危险了!!)

  2.输入 ID , password (会依据不同 user 的权限出现不同的 menu )

TOP

  3.这是 Anderson 这位 user 的 menu !!

  4.另外使用 root 登入

  5.有些 root 才有的权限才会出现!!

  一样,用了 Browser 并不表示不需要学 samba 的 conf ,它只是个"更"方便的工具,对于 samba 的设定还是要熟悉才会操作!!

TOP

版主凶猛异常啊!
能做得更好!

TOP


感谢一直以来您对我们的支持!
当前时区 GMT+8, 现在时间是 2008-9-8 09:51 京ICP证060528 号

Designed By 17DST