网络安全 频道

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 档案里面这些句子没有被批注掉﹕

  netbios-dgm 138/tcp # NETBIOS Datagram Service

  netbios-dgm 138/udp

  netbios-ssn 139/tcp # NETBIOS session service

  netbios-ssn 139/udp

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

  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

  如果想使用者能看到中文文件名称﹐可以将这行加进 [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)

  重新激活 SAMBA

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

将 Samba 做为WINS Server

  Samba 最大的功用除了做 file Server 外,还可以做 WINS Server。Wins Server最大的好处是可在 NT/2000 网域内做名称解析,传统上在 Internet 上做 FQDN(Full Quality Domain Name)与 IP address 之间的转换是藉由 DNS 做解析,但在局域网络里尤其是 NT/2000 网域,当您使用 NT/2000 的 WINS Server 与 NT/2000 的 DNS 做配搭时,假设有一台主机名称叫做 abc,所属领域是 test.com.tw,IP地址是192.168.0.229,目前此部主机尚未在 DNS 上注册,但是在DNS 上激活正反查都可藉由 WINS 解析,当您使用 nslookup 查询 abc 主机时,您会发现可解析出 192.168.0.229,并且观察 DNS 上正查区域内,DNS自动将 abc 以A资源纪录指定 IP 192.168.0.229,而反查区域内,DNS 自动将229.0.168.192.in-addr.arpa 指到 abc.test.com.tw,这就是 WINS 的好处。

  以往在 NT/2000 网域内使用 DNS+WINS Server 可免去在 DNS 上登录主机记录,若再搭配 DHCP Server 那么连 Client 端主机的 IP 也免输入,一切由 DHCP Server分配动态 IP ,再由 DNS+WINS Server 自动登录主机 FQDN 与 IP 解析关系,这个简单、易用组织网域的方法,如今也可以由 DNS+Linux下的Samba+Linux下的DHCP来取代,因为 Samba 可担任 WINS Server 或指定 WINS Server做网域名称解析。假设目前欲做 WINS + DHCP 的 Linux主机IP为192.168.0.229,其设定方式如下:

  首先确定已激活 DNS Server,并且在 DNS 里启用正、反查皆可透过 WINS 做解析。

  以下设定Samba为Wins Server

  wins server = 192.168.0.229

  设定完成后,可使用 nmblookup 查询名称解析,假设目前有一主机其名称为 abc,使用动态分配 IP 联机,所配得的IP地址是192.168.0.100,那么当您使用nmblookup asp做名称查询时,则出现下列画面:

  [root@abc testing]# nmblookup abc

  192.168.1.100 abc<00>

  当然,使用 DNS + DHCP + WINS 除了可分配动态 IP 外,『网上邻居』、区域内主机 FQDN 与 IP 的对应关系皆可正常运作。

  Samba 除了可做为 File Server、Wins Server 外,还可做为 Printer Server,设定方法其为简单:

  首先使用 Redhat 的print tool,列表机类型设定使用本机列表机。

  # linuxconf。

  按一下「Config」、「Networking」、「Server tasks」。

  按一下「Samba file server」、「Default setup for printers」。

  选择 [X] This share is enable选项,可做打印分享。

  若选择 [X] Public access选项,任何人皆可使用此部Printer Server,不限定只有拥有登入Samba帐号使用者。

  接下来设定win95/98/NT Client端

  在桌面上按两下「我的计算机」、「打印机」、「新增打印机」。

  选择「网络打印机」、「下一步」。

  出现「网络队列或路径名称」对话窗后,请使用「浏览」钮挑选Samba Server所分享出来的打印服务,如:\\abc\lp。

  接着设定列表机的驱动程序后,即可大功告成。

  您会发现有了 Samba 后,NT/2000 所具备的优点似乎皆被取代了!

Samba存取控制

  NT/2000 对分享出的目录可针对特定群组、使用者做权限管理,同样的,Samba 也能做到,并且能够更精细的权限管理。在 Samba 里对于目录的管理可区分为『使用者帐号目录』与『共享目录』,『使用者帐号目录』是在 Samba 的「Defaults」项目里做设定,『共享目录』则是在Samba的「Disk shares」项目里做设定,其设定方式是不一样的。

  首先就以「Defaults」项目为例,说明如何做Samba存取控制:

  若要针对登入 Samba 的来源主机做允许登入Samba主机,请在Allow hosts栏里输入来源主机,如:

  192.168.0.0/255.255.255.0 ;表示允许192.168.0. class C登入Samba。

  abc,test,working ;表示允许此三部主机登入 Samba。

  @mygroup ;表示允许mygroup群组内的成员登入Samba。

  若要针对登入 Samba 的来源主机做不允许登入 Samba 主机,请在 Deny hosts栏里输入来源主机,如:

  192.168.0.25 ;表示不允许此部主机登入 Samba。

  cracker,badboy ;表示不允许此两部主机登入 Samba。

  @mygroup ;表示不允许这个工作群组成员登入 Samba。

  再以「Disk shares」项目为例,说明如何做 Samba 存取控制:

  Allow hosts栏、Deny hosts栏的设定方式与上述相同。

  「User list」栏可用来设定哪些使用者可使用分享目录,例如:

  aaa,bbb,ccc,ddd,root ;表示此五个帐号可使用分享目录。

  @cracker ;表示属于 cracker 群组的帐号可使用分享目录。

  @cracker,abc ;表示 cracker 群组成员及 abc 可使用分享目录。

  「Write list」栏可用来设定哪些使用者具有写入权,例如:

  aaa,bbb,root ;表示此三个帐号具有写入权。

  @cracker ;表示属于 cracker 群组的帐号具有写入权。

  @cracker,abc ;表示 cracker 群组成员及 abc 具有写入权。

  「Valid users」栏可用来设定哪些使用者可登入 Samba,例如:

  aaa,bbb,root ;表示此三个帐号登入Samba。

  @cracker ;表示属于 cracker 群组的帐号登入Samba。

  @cracker,abc ;表示 cracker 群组成员及 abc 登入Samba。

  「Max. connections」栏可用来设定此分享目录的最大联机数量,例如:10。内定值是0,表示没有联机限制。

 mba Client
  Samba 除了提供 Server 方面的服务外,也可以充当 Samba Client 端登入其它Samba Server 或 Windows 所分享出来的目录,要享用这些网络上的分享资源并不难,用法如下:

  mount -t smbfs -o username=test,password=test //abc/test /data/test
 
0
相关文章