📄 0370samba.htm
字号:
<hr /><a NAME="theory_daemons"></a><img src="images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">SAMBA 使用的 daemons</span><br />
<div class=block2>
NetBIOS 当初发展时就著眼在区域网路内的快速资料交流,而因为是定义在区域网路内,因此他并没有使用类似
TCP/IP 之类的传输协定,也就不需要 IP 的设定。如此一来资料如何在两部主机之间交流呢?
其实主机在 NetBIOS 协定当中的定义为使用『NetBIOS Name』,每一部主机必须要有不同的 NetBIOS Name 才行,
而档案资料就是在不同的 NetBIOS name 之间沟通棉!我们以一个网芳的设定来作简单的说明好了∶<br />
<ol>
<li><span class=text_import1>取得对方主机的 NetBIOS name 定位该主机所在∶</span><br />
当我们想要登入某部 Windows 主机使用他所提供的档案资料时,必需要加入该 Windows 主机的群组
(Workgroup),并且我们的机器也必需要设定一个主机名称,注意喔,这个主机名称跟 Hostname
是不一样的,因为这个主机名称是架构在 NetBIOS 协定上的,我们可以简单的称呼他为
<span class=text_import2>NetBIOS Name 好了。在同一个群组当中,NetBIOS Name 必需要是独一无二的喔!</span></li><br />
<li><span class=text_import1>利用对方给予权限存取可用资源∶</span><br />
在我们找到该主机名称后,是否能登入该对方主机或者是取用对方主机所提供的资源,
还要看对方 Windows 主机有没有提供我们使用的权限呐!所以,并不是登入该 Windows
主机之后我们就可以无限制的取用该主机的档案资源了。也就是说,如果对方主机允许你登入,
但是却没有开放任何资源让您取用,呵呵,登入主机也无法查看对方的硬碟里面的资料的啦!
</ol>
我们的 SAMBA 则是透过两支服务来控制这两个步骤,分别是∶<br />
<ul><span class=text_import2>
<li>nmbd ∶这个 daemon 是用来管理工作群组啦、NetBIOS name 啦等等的解析。
主要利用 UDP 协定开启 port 137, 138 来负责名称解析的任务;</li><br />
<li>smbd ∶这个 daemon 的主要功能就是用来管理 SAMBA 主机分享的目录、档案与印表机等等。
主要利用可靠的 TCP 协定来传输资料,开放的埠口为 139 及 445(不一定存在) 。
</span></ul>
所以棉, SAMBA 每次启动至少都需要有这两个 daemons 喔!这可不要忘记棉! ^_^而当我们启动了 SAMBA
之后,主机系统就会启动 137, 138, 139 三个 port ,且同时会有 UDP/TCP 的监听服务喔!这可不要忘记了!
因为后面设定防火墙的时候,还会使用到这三个 port 的呢!
<br /><br />
</div>
<hr /><a NAME="theory_connect"></a><img src="images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">连线模式的介绍
(peer/peer, domain model)</span><br />
<div class=block2>
SAMBA 主机的应用相当的广泛,而且可以依照不同的网域连线与使用者帐号、密码的控管方式不同,
来加以不同的类别应用,例如最常见的 Workgroup 及 Domain 两种方式的连线模式呢!
底下我们就是要来谈一谈这两种最常见的区域网路的连线模式 peer/peer 及domain model。<br /><br />
<li><span class=text_import1>peer/peer (Workgroup model)∶</span></li>
<div class=block2>
peer 有同等、同辈的意思存在,那么 peer/peer 由字面上的解释来看,当然就是同等地位的 PC
架构了!这是什么意思呢?简单的来说,在区域网路里面的所有 PC 均可以在自己的电脑上面管理自己的帐号与密码,
同时每一部电脑也都具有独力可以执行各项软体的能力,只是藉由网路将各个 PC 连结在一起而已的一个架构,
所以,每一部机器都是可以独立运作的喔!<br /><br />
这样的架构在目前小型办公室里面是最常见的。例如办公室里面有十个人,每个人桌上可能都安装有一套 Windows
作业系统的个人电脑,而这十部电脑都可以独立进行办公室软体的执行啊、独立上网啊、独立玩游戏啊等等的,
因为这十部电脑都可以独立运作,所以不会有一部电脑关掉,其他的电脑就无法工作的情况发生,这就是 peer/peer
的典型架构。<br /><br />
以下图的架构为例,在这样的架构下,假设 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 的架构了!<br /><br />
<a name="fig_01"></a><center><img SRC="0370samba/peer-peer.jpg"
title="Peer/Peer 的连线模式"
alt="Peer/Peer 的连线模式"><br />
图一、Peer/Peer 的连线模式</center><br />
生活周遭中,哪里看到的这种 peer/peer 的架构呢?想起来了吗?没错!就是藉由 Windows
的『网路上的芳邻』所达成的『工作群组(workgroup)』的架构,那就是典型的 peer/peer 架构啦!所以,
peer/peer 也可以直接说成 workgroup 的连线架构喔。 <br /><br />
使用 peer/peer 的架构的好处,是每部电脑均可以独立运作,而不受他人的影响!不过,
缺点就是当整个网域内的所有人员都要进行资料分享时,光是知道所有电脑里面的帐号与密码,就会很伤脑筋了!
所以, Peer/Peer 的架构是比较适合 <span class=text_import2>(1)小型的网域,或者是
(2)没有需要常常进行档案资料分享的网路环境,或者是
(3)每个使用者都独自拥有该电脑的拥有权(就是说,该电脑是使用者的,而不是公用的啦!)</span>
而,如果该单位的所有 PC 均是公有的,而且您需要统一控管整个网域里面的帐号与密码的话,那就得使用底下的
domain models 了!<br /><br />
</div>
<li><span class=text_import1>domain model</span></li>
<div class=block2>
假设今天您服务的单位有 10 部电脑,但是您的单位有 20 个员工,这也就是说,这 20 个员工轮流抢著用这 10
部电脑。如果每部电脑都如同 peer/peer 的架构时,那么每部电脑都需要输入这 20
个员工的帐号与密码来提供他们登入喔,而且,今天假如有个员工想要变更自己的密码时,就需要到
10 台电脑上面进行密码变更的作业!否则他就必须要记得这 10 部电脑里面,那一部电脑是记忆那一个密码.....好烦那~<br /><br />
如果上述是这样的情况,使用 peer/peer 架构就不是一个好方法了!这个时候就需要藉由 domain model
来达成您的需求啦!所谓的 domain model 概念其实也很简单,既然使用电脑资源需要帐号与密码,
那么我将所有的帐号与密码都放置在一部主控电脑 (<span class=text_import2>Primary Domain Controller, PDC</span>)
上面,在我的网域里面,任何人想要使用任何电脑时,都需要在萤幕前方输入帐号与密码,然后通通藉由 PDC
主机的辨识后,才给予适当的使用权限,也就是说,不同的身份还具有不一样的电脑资源使用权限就是了!
例如底下的图示∶<br /><br />
<a name="fig_02"></a><center><img SRC="0370samba/domain.jpg"
title="domain model 的连线模式"
alt="domain model 的连线模式"><br />
图二、domain model 的连线模式</center><br />
PDC 主机控管整个网域里面的各个机器 (PC A ~ PC D) 的帐号与密码的资讯,假如今天有个使用者帐号名称为
Ken ,且密码为 mypasswd 时,他不论使用哪一部电脑 (PC A ~ PC D) 只要在萤幕前方输入 ken
与他的密码,则该机器会先到 PDC 上面查验是否有 ken ,以及 ken 的密码,并且 PDC 主机会给予 ken
这个使用者相关的电脑资源使用权限。当 ken 在任何一部主机上面登入成功后,他就可以使用相关的电脑资源了!<br /><br />
这样的架构比较适合人来人往的企业架构,当系统管理员要控管新进人员的电脑资源使用权时,可以直接针对 PDC
来修改就好了,不需要每一部主机都去修修改改的,对于系统管理员来说,这样的架构在控管帐号资源上,当然是比较简单的啦!
<br /><br />
</div>
各种架构适用的环境与适用的人都不相同,并没有那个是最好啦!请依照您的工作环境来选择连线的模式棉!当然, SAMBA
可以达到上述两种模式的啦!底下我们会分别来介绍喔!<br />
</div>
</div>
<hr /><a NAME="server"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class="text_h1">SAMBA 伺服器的基础设定</span><br />
<div class=block1>
SAMBA 这个套件几乎在所有的 Linux distributions 上面都有提供,因为即使你的 Linux 仅做为个人桌上型电脑使用时,
你依旧可能会需要连线到远端的 Windows 的网芳的,那个时候就得要 samba 提供的用户端软体功能棉!
因此你只要直接安装系统上面提供的预设 samba 版本即可。底下我们会先介绍 samba 伺服器,然后在介绍用户端功能喔!<br /><br />
<hr /><a NAME="server_pkg"></a><img src="images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class="text_h2">Samba 所需套件及其套件结构</span><br />
<div class=block2>
目前常见的 samba 版本为 3.x 版,旧版的 2.x 版在设定上有点不一样,因此在进入设定前请先确认你的 samba 版本。
咱们的 CentOS 4.x 提供的是 Samba 3.x 的版本。那么你需要什么套件呢?基本上有这些∶<br />
<ul>
<li><span class=text_import1>samba</span>∶<br />
这个套件主要包含了 SAMBA 的主要 daemon 档案 (smbd 及 nmbd)、 SAMBA 的文件档
(document)、以及其他与 SAMBA 相关的 logrotate 设定档及开机预设选项档案等;</li><br />
<li><span class=text_import1>samba-common</span>∶<br />
这个套件则主要提供了 SAMBA 的主要设定档 (smb.conf) 、 smb.conf
语法检验的测试程式 (testparm)等等;</li><br />
<li><span class=text_import1>samba-client</span>∶<br />
这个套件则提供了当 Linux 做为 SAMBA Client 端时,所需要的工具指令,例如挂载 SAMBA
档案格式的执行档 smbmount 等等。
</ul>
这三个套件你都得要安装才行喔!如果尚未安装的话,看是要由原版光碟去安装,还是使用 yum 都可以啦!
安装完毕之后,你可以依序察看一下 Samba 的套件结构喔!与他相关的档案基本上有这些东西∶<br />
<ul>
<li><span class=text_import1>/etc/samba/smb.conf</span>∶<br />
smb.conf 是 Samba 的主要设定档名,如果你的 distribution 的 SAMBA 设定档不在 /etc/samba/ 目录当中,
那么你应该使用 locate 或 find 等方式将他找出来就好啦。基本上,咱们的 Samba 就仅有这个设定档而已,
且这个设定档本身就是很详细的说明文件了,请用 vi 去查阅他吧!这个档案主要在设定工作群组、
NetBIOS 名称以及分享的目录等相关设定,我们后续要介绍的都是这个档案而已啦!</li><br />
<li><span class=text_import1>/etc/samba/lmhosts</span>∶<br />
这个档案的主要目的在<span class=text_import2>对应 NetBIOS name 与该主机名称的 IP</span> ,事实上他有点像是
/etc/hosts 的功能!只不过这个 lmhosts 对应的主机名称是 NetBIOS name 喔!不要跟 /etc/hosts 搞混了!由于目前
SAMBA 的功能越来越强大,所以通常只要您一启动 SAMBA 时,他就能自己捉到 LAN 里面的相关电脑的 NetBIOS name
对应 IP 的资讯,因此这个档案通常可以不用设定了!</li><br />
<li><span class=text_import1>/etc/samba/smbpasswd</span>∶<br />
这个档案<span class=text_import2>预设并不存在啦!他是 SAMBA 预设的使用者密码对应表</span>。当我们设定的
SAMBA 伺服器是较为严密的,需要使用者输入帐号与密码后才能登入的状态时,使用者的密码预设就是放置在这里咯
(<span class=text_vbird>当然棉,您可以自行在 smb.conf 里面设定密码放置的地方及密码档名,
不过我们这里都以预设的状态来说明</span>) 。比较需要注意的是,这个档案因为包含了使用者的密码,
当然权限方面要较为注意啦!这个档案的拥有者需要是 root ,且权限设定为 600 才行喔!</li><br />
<li><span class=text_import1>/etc/samba/smbusers</span>∶<br />
由于 Windows 与 Unix-like 在管理员与访客的帐号名称不一致,分别为 administrator 及 root,
为了对应这两者之间的帐号关系,可以使用这个档案来设定。不过这个档案的使用必须要经由 smb.conf
内的『 username map 』设定项目来启动才行。</li><br />
<li><span class=text_import1>testparm</span>∶<br />
这个指令主要在检验 samba 设定档 smb.conf 的语法正确与否,当你编辑过 smb.conf 时,请务必使用这个指令来检查一次,
避免因为打字错误引起的困扰啊!</li><br />
<li><span class=text_import1>smbd, nmbd</span>∶<br />
前几个小节曾经提过的两个主要 daemon 就在这里!</li><br />
<li><span class=text_import1>smbstatus</span>∶<br />
列出目前的 SMB server 的状态,也是很有用途的一个指令啦!</li><br />
<li><span class=text_import1>smbpasswd</span>∶<br />
如果您的 SAMBA 设定的较为严格,需要规定使用者的帐号与密码,那么那个密码档案的建立就需要使用 smbpasswd
来建置才可以的喔!所以这个指令与建立 SAMBA 的密码有关咯!</li><br />
<li><span class=text_import1>smbclient</span>∶<br />
当你的 Linux 主机想要藉由『网路上的芳邻』的功能来查看别台电脑所分享出来的目录与装置时,就可以使用 smbclient
来查看啦!这个指令也可以使用在自己的 SAMBA 主机上面,用来查看是否设定成功哩!</li><br />
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -