在一般的局域网络中 (LAN) 如果都是 Windows 计算机,那么使用『网络上的芳邻』这个功能,就可以让不同的 Windows 计算机分享彼此的档案啰!那么万一这个 LAN 里面有个 Linux 主机时,我怎么让 Linux 也加入这个 Windows 计算机当中的『网络上的芳邻』呢?!也就是说,让 Windows 计算机可以透过『网络上的芳邻』来存取 Linux 主机上面的档案!呵呵!那就是 SAMBA 这个服务器的主要目的了!SAMBA 是很有用的一个服务器,他可以让您的 Linux 剎那间成为一个档案服务器 ( File Server ),并提供整个 LAN 里面的 Windows 很简单的就可以对 Linux 主机进行档案的存取动作。不仅如此, SAMBA 也可以让 Linux 上面的打印机成为打印机服务器 (Printer Server) ,鸟哥个人觉得, SAMBA 对于整个 LAN 的贡献真的是很大!那么就赶紧来玩一玩吧! ^_^ |
原理:
:SAMBA 的发展历史与名称的由来
:SAMBA 的应用功能
:NetBIOS 通讯协议
:SAMBA 使用的 daemons
:联机模式的介绍 ( peer/peer, domain model )
套件安装:
:使用 RPM
:使用 Tarball
Server 端的设定:
:SAMBA 的套件结构
:主机的规划技巧建议
:基础的设定流程与 smb.conf 的主要规划
:没有防备的 SAMBA 分享档案设定 ( testparm )
:设定需要使用者登入的 Workgroup ( smbpasswd )
:设定较大型网域的 Linux Samba PDC ( Primary Domain Controller )主机
:设定成为打印机服务器 ( Printer Server + LPRng 系统)
:设定成为打印机服务器 ( Printer Server + CUPS 系统)
Client 端的设定:
:在 Windows 上浏览 Linux 分享档案的设定
:在 Linux 上浏览 Windows 分享档案的设定
安全相关方面:
:配合 quota 来规范使用者的使用空间
:如何设定防火墙 iptables
:如何设定 daemons 的抵挡功能 ( hosts allow 项目 )
:要备份些什么咚咚?
问题克服:
:重点在登入者身份的确认与该身份的 Linux 档案权限吶!
:什么是 SWAT ( Samba Web Administration Tool )
重点回顾
本章与 LPI 的关系
参考资源:
本章习题练习
-
- 分享档案与打印机服务;
- 可以提供使用者登入 SAMBA 主机时的身份认证,以提供不同身份者的个别数据;
- 可以进行 Windows 网络上的主机名称解析 (NetBIOS name)
- 可以进行装置的分享 ( 例如 Zip, CDROM... )
- 当我们想要登入某部 Windows 主机使用他所提供的档案数据时,必需要加入该 Windows 主机的群组 ( Workgroup ),并且我们的机器也必需要设定一个主机名称,注意喔,这个主机名称跟 Hostname 是不一样的,因为这个主机名称是架构在 NetBIOS 协议上的,我们可以简单的称呼他为 NetBIOS Name 好了。在同一个群组当中,NetBIOS Name 必需要是独一无二的喔!
- 好了,等到我们登入该主机之后,能不能使用该主机所提供的档案数据还要看 Windows 主机有没有提供我们使用的权限吶!所以,并不是登入该 Windows 主机之后,我们就可以无限制的取用该主机的档案资源了。也就是说,如果对方主机允许你登入,但是却没有开放任何资源让您取用,呵呵,登入主机也无法查看对方的硬盘里面的数据的啦!
- smbd :这个 daemon 的主要功能就是用来管理 SAMBA 主机分享什么目录、档案与打印机等等的内容。
- nmbd :这个 daemon 则是用来管理群组啦、NetBIOS name 啦等等的解析。
- peer/peer ( Workgroup model ) :
peer 有同等、同辈的意思存在,那么 peer/peer 由字面上的解释来看,当然就是同等地位的 PC 架构了!这是什么意思呢?简单的来说,在局域网络里面的所有 PC 均可以在自己的计算机上面管理自己的账号与密码,同时每一部计算机也都具有独力可以执行各项软件的能力,只是藉由网络将各个 PC 连结在一起而已的一个架构,所以,每一部机器都是可以独立运作的喔!而在这样的架构下,如果有两部计算机,计算机名称假设为 pc1 与 pc2 好了,那么当您要坐在 pc1 这部计算机前使用 pc1 的资源时,就必须要知道登入 pc1 的使用者名称与密码,才能够登入使用。而如果您想由 pc1 经过网络联机到 pc2 来使用 pc2 的档案资源时,就必须要知道 pc2 的账号与密码才可以顺利的登入 pc2 吶!
这样的架构在目前小型办公室里面是最常见的。例如办公室里面有十个人,每个人桌上可能都安装有一套 Windows 操作系统的个人计算机,而这十部计算机都可以独立进行办公室软件的执行啊、独立上网啊、独立玩游戏啊等等的,因为这十部计算机都可以独立运作,所以不会有一部计算机关掉,其它的计算机就无法工作的情况发生,这就是 peer/peer 的典型架构。
以下图的架构为例,在这样的架构下,假设 A 君写了一个报告书,而 B 君想要以网络直接取用这个报告书时,他就必须要知道 A 君使用的计算机的账号与密码,并且 A 君必须要在 PC A 上面启用 Windows 的『资源共享(或者是共享)』之后,才能够让 B 君联机进入喔 ( 此时 PC A 为 Server ) !而且, A 君可以随时依照自己的喜好来更改自己的账号与密码,而不受 B 君的影响,不过, B 君就得要取得 A 君同意取得新的账号与密码后,才能够登入 PC A 喔!反过来说,同样的, A 要取得 B 的数据时,同样需要取得 PC B 的账号与密码后,才能够顺利登入啊 ( 此时 PC A 为 Client 喔 )!因为 PC A, PC B, PC C 的角色与地位都同时可以为 Client 与 Server ,所以就是 peer/peer 的架构了!
生活周遭中,哪里看到的这种 peer/peer 的架构呢?!想起来了吗?!没错!就是藉由 Windows 的『网络上的芳邻』所达成的『工作群组(workgroup)』的架构,那就是典型的 peer/peer 架构啦!所以, peer/peer 也可以直接说成 workgroup 的联机架构喔。
使用 peer/peer 的架构的好处,是每部计算机均可以独立运作,而不受他人的影响!不过,缺点就是当整个网域内的所有人员都要进行数据分享时,光是知道所有计算机里面的账号与密码,就会很伤脑筋了!所以, Peer/Peer 的架构是比较适合 (1)小型的网域,或者是 (2)没有需要常常进行档案数据分享的网络环境,或者是 (3)每个使用者都独自拥有该计算机的拥有权(就是说,该计算机是使用者的,而不是公用的啦!)!而,如果该单位的所有 PC 均是公有的,而且您需要统一控管整个网域里面的账号与密码的话,那就得使用底下的 domain models 了!
- domain model :
假设今天您服务的单位有 10 部计算机,但是您的单位有 20 个员工,这也就是说,这 20 个员工轮流抢着用这 10 部计算机。如果每部计算机都如同 peer/peer 的架构时,那么每部计算机都需要输入这 20 个员工的账号与密码来提供他们登入喔,而且,今天假如有个员工想要变更自己的密码时,就需要到 10 台计算机上面进行密码变更的作业!否则他就必须要记得这 10 部计算机里面,那一部计算机是记忆那一个密码.....好烦那~
如果上述是这样的情况,使用 peer/peer 架构就不是一个好方法了!这个时候就需要藉由 domain model 来达成您的需求啦!所谓的 domain model 概念其实也很简单,既然使用计算机资源需要账号与密码,那么我将所有的账号与密码都放置在一部主控计算机 ( Primary Domain Controller, PDC ) 上面,在我的网域里面,任何人想要使用任何计算机时,都需要在屏幕前方输入账号与密码,然后通通藉由 PDC 主机的辨识后,才给予适当的使用权限,也就是说,不同的身份还具有不一样的计算机资源使用权限就是了!例如底下的图示:
PDC 主机控管整个网域里面的各个机器 (PC A ~ PC D) 的账号与密码的信息,假如今天有个使用者账号名称为 Ken ,且密码为 mypasswd 时,他不论使用哪一部计算机 (PC A ~ PC D) 只要在屏幕前方输入 ken 与他的密码,则该机器会先到 PDC 上面查验是否有 ken ,以及 ken 的密码,并且 PDC 主机会给予 ken 这个使用者相关的计算机资源使用权限。当 ken 在任何一部主机上面登入成功后,他就可以使用相关的计算机资源了!
这样的架构比较适合人来人往的企业架构,当系统管理员要控管新进人员的计算机资源使用权时,可以直接针对 PDC 来修改就好了,不需要每一部主机都去修修改改的,对于系统管理员来说,这样的架构在控管账号资源上,当然是比较简单的啦!
SAMBA 的发展历史与名称的由来
在早期的网络世界当中,档案数据在不同主机之间的传输大多是使用 FTP 这个好用的服务器软件来进行传送。不过,使用 FTP 传输档案却有个小小的问题,那就是您无法直接修改主机上面的档案数据!也就是说,您想要更改 Linux 主机上面的某个档案时,必需要由 Server 端将该档案下载到您工作的 Client 端后才能修改,也因此该档案在 Server 与 Client 端都会存在。这个时候,万一如果有一天您修改了某个档案,却忘记将数据上传回主机,那么等过了一阵子之后,呵呵,您如何知道那个档案才是最新的?!
既然有这样的问题,那么好吧,我可不可以在 Client 端的机器上面直接取用 Server 上面的档案,如果可以在 Client 端直接进行 Server 端档案的存取,那么我在 Client 端就不需要存在该档案数据啰,也就是说,我只要有 Server 上面的档案资料存在就可以啦!有没有这样的档案系统啊 ( File System ) ,呵呵!很高兴的是,前面我们已经提过的 Network File System, NFS 就是这样的档案系统之一啦!我只要在 Client 端将 Server 所提供分享的目录挂载进来,那么在我 Client 的机器上面就可以直接取用 Server 上的档案数据啰,而且,该数据就像是我 Client 端上面的 partition 一般,真是好用!而除了可以让 Unix Like 的机器互相分享档案的 NFS 服务器之外,在微软 ( Microsoft ) 上面也有类似的档案系统,那就是 Common Internet File System, CIFS 这个咚咚啦!CIFS 最简单的想法就是目前常见的『网络上的芳邻』咯! Windows 系统的计算机可以透过桌面上『网络上的芳邻』来分享别人所提供的档案数据哩!真是方便。不过,NFS 仅能让 Unix 机器沟通, CIFS 只能让 Windows 机器沟通。伤脑筋,那么有没有让 Windows 与 Unix-Like 这两个不同的平台相互分享档案数据的档案系统呢?
在 1991 年一个名叫 Andrew Tridgwell 的大学生就有这样的困扰,他手上有三部机器,分别是跑 DOS 的个人计算机、DEC公司的 Digital Unix 系统以及 Sun 的 Unix 系统。在当时, DEC 公司有发展出一套称为 PATHWORKS 的软件,这套软件可以用来分享 DEC 的 Unix 与个人计算机的 DOS 这两个操作系统的档案数据,可惜让 Tridgwell 觉得较困扰的是,Sun 的 Unix 无法藉由这个软件来达到数据分享的目的。这个时候 Tridgwell 就想说:『咦!既然这两部系统可以相互沟通,没道理 Sun 就必需这么苦命吧?可不可以将这两部系统的运作原理找出来,然后让 Sun 这部机器也能够分享档案数据呢?』,为了解决这样的的问题,他老兄就自行写了个 program 去侦测当 DOS 与 DEC 的 Unix 系统在进行数据分享传送时所使用到的通讯协议信息,然后将这些重要的信息撷取下来,并且基于上述所找到的通讯协议而开发出Server Message Block (SMB) 这个档案系统,而就是这套 SMB 软件就能够让 Unix 与 DOS 互相的分享数据啰!( 注:再次的给他强调一次,在 Unix Like 上面可以分享档案数据的 file system 是 NFS,那么在 Windows 上面使用的『网络上的芳邻』所使用的档案系统则称为 Common Internet File System, CIFS )
既然写成了软件,想一想,嗯!总是需要注册一下商标吧!因此 Tridgwell 就去申请了 SMBServer ( Server Message Block 的简写 ) 这个名字来做为他撰写的这个软件的商标,可惜的是,因为 SMB 是没有意义的文字,因此没有办法达成注册。既然如此的话,那么能不能在字典里面找到相关的字词可以做为商标来注册呢?翻了老半天,呵呵!这个 SAMBA 刚好含有 SMB ,又是热情有劲的拉丁舞蹈的名称,不然就用这个名字来做为商标好了!哈哈!这成为我们今天所使用的 SAMBA 的名称由来啦! ^_^
SAMBA 的应用功能
由上面说明的 SAMBA 发展缘由,您就应该不难知道咯, SAMBA 最初发展的主要目就是要用来沟通 Windows 与 Unix Like 这两个不同的作业平台,这么做有什么好处呢?刚刚我们上面不就已经说过了,最大的好处就是您不必让同样的一份数据放置在不同的地方,搞到后来都不晓得哪一份资料是最新的!而且也可以透过这样的一个档案系统上 Linux 与 Windows 的档案传输变得更为简单!也就是说,您以后可以透过『网络上的芳邻』来进行 Linux 与 Windows 档案的传输啦!那么 SAMBA 可以进行哪些动作呢?
底下我们来谈几个 SAMBA 服务器的应用实例吧!
应用实例一:以鸟哥为例,由于我都是使用 Windows 系统来编辑我的网页画面,然后再传到我的 Linux 机器上。一开始,鸟哥也是以 FTP 来传送我的网页的,后来发现,这样在我的 Windows 上面需要有一份网页数据,然后修改完成之后又要传到 Linux 上面,如此便有两个相同的档案,最麻烦的是,有时候下载下来的档案已经经过好多修改了,却在下次的 FTP 作业,不小心又下载一次旧数据,结果将已经修改过的数据覆盖过去~天吶!又要重写一遍.....真是讨厌!后来,鸟哥就安装了 SAMBA 服务器,将 Linux 上我的网页目录打开成可以资源共享,如此一来,鸟哥就可以直接透过 Windows 的『网络上的芳邻』来修改我的网页数据啰!而且,这就有点像是『在线编修』呢,一修改完成,在 Internet 上面可以立刻检验,方便的很吶!
应用实例二:在我们实验室中,由于计算机数量不多,研究生常常会使用到不同的计算机 ( 因为大家都得抢没有人用的计算机啊! ),此外,也常常有研究生拿自己的 NoteBook 来工作,因此,有些团队的数据就分散在各个计算机当中,使用上相当的不方便。这个时候,我就使用 SAMBA 将硬盘空间分享出来,由于使用者要登入 SAMBA 这个服务器主机时需要输入使用者数据 ( 账号与密码 ),而不同的登入者会取得不一样的目录资源,所以,可以避免自己的数据在公用计算机上面被窥视,此外,在不同的公用计算机上面都可以登入 SAMBA 主机,数据的使用上面真是相当的棒啊!
应用实例三:SAMBA 除了分享档案系统外,也可以分享打印机喔,我们研究室好几部计算机就是直接以 Linux 分享的打印机来印制报告的。您会说『啊 Windows 也可以办的到啊!没有什么了不起的!』是啊。但是因为 Linux 做为服务器主机时,鸟哥认为 Linux 毕竟还是比较稳定一点,可以 24 小时且全年无休的努力工作吶。此外,因为目前透过『网络上的芳邻』来攻击局域网络的 Windows 操作系统的计算机病毒实在是太多了,防不胜防, Linux 对于这样的攻击并没有很大的影响 (因为常见的攻击手法均针对 Windows 而来~),所以也比较安全一些说~
SAMBA 的应用挺广泛的,尤其对于局域网络内的计算机来说,更是一项不可多得的好用的服务器,更多的应用您可以自行发掘吶!
NetBIOS 通讯协议
事实上,就像 NFS 是架构在 RPC Server 上面一样, SAMBA 这个档案系统是架构在 NetBIOS ( Network Basic Input/Output System, NetBIOS )这个通讯协议上面所开发出来的。既然如此,我们当然就要了解一下 NetBIOS 啰!最早 IBM 发展出 NetBIOS 的目的仅是要让局域网络内少数计算机进行网络连结的一个通讯协议而已,所以考虑的角度并不是针对大型网络,因此,这个 NetBIOS 是无法跨路由的 (Router/Gateway)。这个 NetBIOS 在局域网络内 ( Local Area Network, LAN ) 实在是很好用,所以微软的网络架构就使用了这个咚咚来进行沟通的吶!而 SAMBA 最早发展的时候,其实是想要让 Linux 系统可以加入 Windows 的系统当中来分享使用彼此的档案数据的,所以当然 SAMBA 就架构在 NetBIOS 发展出来啰。
不过,如果单纯的使用 NetBIOS 而已,偏偏 NetBIOS 是无法跨路由的,那么该服务器的使用范围不就受限相当的多了?好在,我们还有所谓的 NetBIOS over TCP/IP 的技术呢!这是什么样的技术啊?!举个例子来说好了,我们知道 TCP/IP 是目前网络连接的基本协议,现在,我们将 NetBIOS 想成是一封明信片,这个明信片只能让您自己欣赏而已,如果今天我们要将这个明信片送到远方的朋友那边时,呵呵!就需要透过邮件系统 ( 例如邮局啦、国际快递啦等等的 ) 来传送了!这个 TCP/IP 就可以视为邮件传递系统啦!透过这个 NetBIOS over TCP/IP 的技术,我们就可以跨路由的使用 SAMBA 服务器所提供的功能咯!当然啦,目前 SAMBA 还是比较广泛的使用在 LAN 里面说。注:或许您会发现在 Windows 网络设定里面常常看到 NetBEUI 这个咚咚,那是什么呢?事实上,那个是 NetBIOS Extened User Interface 的简写,也是 IBM 在 NetBIOS 发展出来之后的改良版本。虽然这两者的技术不太相同,不过,我们只要知道一些简单的概念就可以了!所以,在这里我们不针对 NetBEUI 来介绍。
SAMBA 使用的 daemons
知道了 SAMBA 的主要目的是让 Linux 主机加入 Windows 的网络系统当中来分享使用彼此的数据,而 Windows 使用的是 NetBIOS 这个通讯协议,所以说,SAMBA 主要是使用 NetBIOS over TCP/IP 的技术。好了,我们再来谈一谈,那么 SAMBA 在 Linux 操作系统上面工作时,需要启用什么服务呢 ( daemons )?让我们先以 Windows 的『网络上的芳邻』来做简单的说明:
了解了呴,同样的 SAMBA 主机就使用两个 daemons 来管理这两个不同的服务:
所以啰, SAMBA 每次启动至少都需要有这两个 daemons 喔!这可不要忘记啰! ^_^而当我们启动了 SAMBA 之后,主机系统就会启动 137, 138, 139 三个 port ,且同时会有 UDP/TCP 的监听服务喔!这可不要忘记了!因为后面设定防火墙的时候,还会使用到这三个 port 的呢!
联机模式的介绍 ( peer/peer, domain model )
SAMBA 主机的应用相当的广泛,而且可以依照不同的网域联机与使用者账号、密码的控管方式不同,来加以不同的类别应用,例如最常见的 Workgroup 及 Domain 两种方式的联机模式呢!底下我们就是要来谈一谈这两种最常见的局域网络的联机模式 peer/peer 及domain model。
各种架构适用的环境与适用的人都不相同,并没有那个是最好啦!请依照您的工作环境来选择联机的模式啰!当然, SAMBA 可以达到上述两种模式的啦!底下我们会分别来介绍喔!
-
- samba:这个套件主要包含了 SAMBA 的主要 daemon 档案 ( smbd 及 nmbd )、 SAMBA 的文件档 ( document )、以及其它与 SAMBA 相关的 logrotate 设定文件及开机预设选项档案等;
- samba-common:这个套件则主要提供了 SAMBA 的主要设定档 (smb.conf) 、 smb.conf 语法检验的测试程序 ( testparm )等等;
- samba-client:这个套件则提供了当 Linux 做为 SAMBA Client 端时,所需要的工具指令,例如挂载 SAMBA 档案格式的执行档 smbmount 等等。
使用 RPM 来安装
使用 RPM 来安装真是一点都不难啦!不过,要注意一下安装的套件名称就是了,因为不同的 distribution 对于 RPM 档案的命名都不太一样!举个例子来说, Red Hat 9 对于 SAMBA 这个服务器总共需要至少三个套件,分别是:
不过,在 Mandrake 9.1 当中,则将 samba 这个套件又分为 samba-server 与 samba-doc 两个套件,所以在 MDK 9.1 则有四个套件需要安装: samba-server, samba-doc, samba-common, samba-client 。
RPM 的安装不用再介绍了吧?!请拿出您的光盘, mount 上他,然后再将里头的 samba 套件给他 RPM 上去即可!在最后检验的时候,您的系统应该有点像底下这个样子(以 Red Hat 9 为例):
[root@test root]# rpm -qa | grep samba
samba-common-2.2.7a-8.9.0
redhat-config-samba-1.0.4-1
samba-2.2.7a-8.9.0
samba-client-2.2.7a-8.9.0
注意一下,上面显示的例子是 Red Hat 9 的档案,其中那个 redhat-config-samba
是 Red Hat 额外提供的设定功能,可以不用安装他啦!
使用 Tarball 来安装
一般来说,因为各个 distribution 提供的 SAMBA 的功能都差不多,所以实在没有必要使用 Tarball 来进行额外的安装与设定,不过,如果您还是想要自己建置自己的 SAMBA 的话,可以到 SAMBA 的官方网站上下载 samba 的原始程序代码,然后在自己的机器上面编译。不过,连到国外去总是有点慢,建议可以到中山大学下载最新的 SAMBA 原始码:
目前 ( 2003/07/20 ) 最新的版本是 2.2.8a 这个版本,您可以下载 samba-2.2.8a.tar.gz 这个档案,然后将他解开,解开后,记得察看一下 samba-2.2.8a 里面的 README 喔!接下来,您就可以这样编译看看:(注:底下的测试是在 Red Hat 9 上面进行的,如果您的系统并不是 Red Hat 9 时,请注意 source 那个目录底下的 config.log 那个档案,里面会记录相关的错误讯息喔!)
[root@test root]# wget http://ftp.nsysu.edu.tw/Unix/Samba/samba-2.2.8a.tar.gz
注:上面的网址只是一个范例,请自行到中山大学下载!
[root@test root]# cd /usr/local/src
[root@test src]# tar -zxvf /root/samba-2.2.8a.tar.gz
这个时候会有一个目录跑出来: /usr/local/src/samba-2.2.8a
[root@test src]# cd samba-2.2.8a #(在这个目录中察看一下 README 喔!)
[root@test samba-2.2.8a]# cd source
[root@test source]# ./configure --prefix=/usr/local/samba /
> --with-automount --with-smbmount --with-pam /
> --with-mmap --with-quotas --with-libsmbclient
还是要重复的给他强调一下:
1. 请先以 ./configure --help 察看一下 configure 的一些相关的参数用法
2. 如果发生任何错误,请不要往下进行 make 的动作,因为还是不对的!
3. 万一发生任何错误时,通常是由于一些函式库找不到的缘故,请参考此目录
下的 config.log 这个档案的内容,里面会记录一些错误的历程。
[root@test source]# make #(开始进行编译!)
这个过程会花一些时间,因为他会将原始码 (source code) 以您刚刚的设定
并以 gcc 这个 compiler 来进行编译喔!所以会花一些时间的啦!
[root@test source]# make install
将刚刚编译完成的可执行 binary 档案安装到 /usr/local/samba 里面去!
在这个例子当中,未来您在设定 SAMBA 时,必需要到 /usr/local/samba 当中喔!
一般来说,除非您的 Linux distribution 已经相当的老旧了 (例如 Red Hat 6.x 以前的版本),并且在旧的系统上面正在正常的运作一些服务,而仅想要增加 SAMBA 的服务,那就只好使用 Tarball 的方式来安装 SAMBA ,否则的话,蛮强烈的建议直接以 RPM 的方法来安装您的 SAMBA 服务器软件即可!因为既简单方便,又容易统一设定喔! ^_^
-
- 先在自己的计算机上面安装必要的协议:那就是 NetBIOS ( 有时候会是 NetBEUI 喔!)的安装咯!直接在网络设定里面设定好即可;
- 再来则是在档案总管里面设定好要分享的目录、磁盘或者是装置(如打印机);
- 然后,给这个分享出来的咚咚一组账号及密码(如果需要的话),让外部使用者可以使用这组账号密码登入 Windows 主机;
- 然后就开始运作了!
- 先参考 局域网络的设定 那一章节,先搞定硬件的联机吧!
- 之后,先在 linux 上面的 SAMBA 设定档 smb.conf 里面设定好主机所支持的各项功能,例如是否需要密码、是否支持 PDC 等等;
- 然后在 smb.conf 的后半部当中设定好想要分享的目录与该目录的属性;
- 如果在步骤 2 里面的 smb.conf 档案内设定的分享方法是需要账号与密码的登入时,就以 smbpasswd 建立使用者的账号与密码;
- 启动 smb 的服务,开始运转啰!
- SAMBA 的设定档:
在较早期的版本中, SAMBA 的设定档都直接放置在 /etc 底下,后来的版本则将设定档通通放置到 /etc/samba 底下去了 ( 有的 distribution 放在 /etc/smb 有的则是 /etc/samba.d ,请使用 locate 搜寻! )。在 /etc/samba 底下的几个重要的设定档有:
- /etc/samba/smb.conf:这个就是 SAMBA 最主要的设定档了!在较为简单的设定当中,这也是唯一的一个设定档!此外,这个档案本身就含有相当丰富的说明,所以,在设定之前,请使用 vi 好好的详细的观看一下这个档案吧!这个设定档主要的设定分为两部份,分别是 [global] 这个设定主机功能的项目,以及接下来的每个分享出去的目录的属性设定。我们会在后续的部分进行更多的说明。
- /etc/samba/lmhosts:这个档案的主要目的在对应 NetBIOS name 与该主机名称的 IP ,事实上,他有点像是 /etc/hosts 的功能!只不过这个 lmhosts 对应的主机名称是 NetBIOS name 喔!不要跟 /etc/hosts 搞混了!由于目前 SAMBA 的功能越来越强大,所以通常只要您一启动 SAMBA 时,他就能自己捉到 LAN 里面的相关计算机的 NetBIOS name 对应 IP 的信息,因此,这个档案通常可以不用设定了!
- /etc/samba/smbpasswd:这个档案预设并不存在啦!他是 SAMBA 预设的使用者密码对应表。当我们设定的 SAMBA 服务器是较为严密的,需要使用者输入账号与密码后才能登入的状态时,使用者的密码预设就是放置在这里咯 ( 当然啰,您可以自行在 smb.conf 里面设定密码放置的地方及密码文件名,不过,我们这里都以预设的状态来说明 ) 。比较需要注意的是,这个档案因为包含了使用者的密码,所以,当然权限方面要较为注意啦!这个档案的拥有者需要是 root ,且权限设定为 600 才行喔!
- SAMBA 的执行档:
SAMBA 的执行档可就多了!一般来说,做为 SAMBA Server 的执行档有 testparm, smbd, nmbd, smbpasswd,至于做为 SAMBA Client 的执行档主要则是:smbmount, smbclient。
- smbd 与 nmbd:还记得我们在原理部分提到的 SAMBA 需要启动的 daemons 吧?!呵呵!这两个执行档就是那两个主要的 daemons 啰!每次启动 SAMBA 都会使用到的两个执行档啦!
- testparm:当我们设定完成了 smb.conf 这个主要设定档之后,而想要查看一下 SAMBA 的所有设定参数与 smb.conf 的设定项目是否正确时,就需要使用这个 testparm 来查看啰 ( 其实就是 test parameters 的简写!)!所以说,每次在修改完 smb.conf 之后,请务必要使用 testparm 查看看是否有设定错误喔!
- smbpasswd:如果您的 SAMBA 设定的较为严格,需要规定使用者的账号与密码,那么那个密码档案的建立就需要使用 smbpasswd 来建置才可以的喔!所以这个指令与建立 SAMBA 的密码有关咯!
- smbclient:当你的 Linux 主机想要藉由『网络上的芳邻』的功能来查看别台计算机所分享出来的目录与装置时,就可以使用 smbclient 来查看啦!这个指令也可以使用在自己的 SAMBA 主机上面,用来查看是否设定成功哩!
- smbmount:在 Windows 上面我们可以设定『网络磁盘驱动器』来连接到自己的主机上面,同样的,在 Linux 上面,我们可以透过 smbmount 来将远程主机分享的档案与目录挂载到自己的 Linux 主机上面哪!不过,其实我们也可以直接使用 mount 这个指令来进行同样的功能就是了。
- SAMBA 的相关目录:
这部份需要较为注意的应该算是 SAMBA 的『登录档』吧!因为最近以来,利用『网络上的芳邻』来进行破坏的病毒是越来越多了!而且也有越来越多的搞怪者会以网络上的芳邻的相关漏洞进行入侵的伎俩,所以啰,了解一下登录档放置的地点,并且加以分析,呵呵!可以得到不小的监测呢!
- /usr/share/doc/samba:这个目录包含了 SAMBA 的所有相关的技术手册喔!也就是说,当您安装好了 SAMBA 之后,您的系统里面就已经含有相当丰富而完整的 SAMBA 使用手册了!值得高兴吧! ^_^,所以,赶紧自行参考喔!
- /var/log/samba:这个目录就是 SAMBA 预设的登录文件放置目录了!如果您的 SAMBA 老是设定不起来,又或者怀疑被人家以 port 137~139 入侵的话,就到这里来观察吧!
- /usr/share/samba/codepages:这个目录里面放置的就是各个语言的支持格式。举例来说,想让您的 SAMBA 支持中文吗?那么就需要 codepage.950 这个档案的支持啰!当然啦,在 smb.conf 里面设定即可!
- 在安装 Linux 的时候,建议不需要安装 X Window ;
- 在规划 Linux 时,/home 最好独立出一个 partition ,而且硬盘空间最好能够大一些;
- /home 独立出来的 partition 可以单独进行 quota 的作业,以规范每个使用者能够使用的最大硬盘容量;
- 由于 SAMBA 可以做为打印机服务器,所以建议打印机可以直接连接在 Linux 主机的打印端口 (LPT1);
- 由于 SAMBA 一般来说都仅针对内部 ( LAN ) 主机进行开放,所以,可能的话, SAMBA 主机直接使用内部保留 IP 来设定即可 (Private IP),当然啦, SAMBA 是否使用 private IP 还得视您的整个网域的 IP 网段的特性来规划。以我们研究室来说,因为实验室所有计算机的 IP 都是 Public IP,那么 SAMBA 如果使用 Private IP ,当然大家都无法连接上啊! ^_^
- 如果您的 SAMBA 主机使用 Public IP 时,请特别留意规范好防火墙的设定,尽量仅让 LAN 内的计算机可以联机进来即可,不要对 Internet 开放喔!
- 一个是 [global] 的主机相关设定,这个是每个 SAMBA 主机都需要设定的喔!里面的规定都与 SAMBA 主机的环境有关!
- 至于 [Webpage] 呢?他是什么玩意~这里我们举个实际的例子好了,当您在局域网络内以网络上的芳邻登入某部主机之后,不是会看到该主机所提供的『目录或者装置的名称』吗?!那个 Webpage 就是名称啦!也就是说,当您以网络上的芳邻登入 linux 时,看到的 Linux 所分享出来的目录名称就是『Webpage』啦!不过,这个 Webpage 只是在 SAMBA 服务当中所显示的名称而已,并不是真正的 Linux 档案系统上面的目录!这个 Webpage 所代表的真正的目录要看底下设定项目的『path』设定项目才行!这也就是说,当您在网络上的芳邻登入 Linux 后,看到 Webpage 这个目录,用鼠标将他点下去,接下来看到的内容就是 /var/www/html 这个真正 Linux 档案系统里面的数据咯!