Linux 文件服务器之二 SAMBA服务器

Samba服务器允许Linux系统与Windows环境下的文件共享,通过NetBIOS协议实现异质平台的文件和打印机共享。Samba提供了用户身份验证、主机名解析等功能,支持Workgroup和Domain两种联机模式。主要服务包括smbd(权限管理)和nmbd(NetBIOS名称查询)。配置Samba涉及工作群组、NetBIOS名称、共享目录等设置,以及管理用户账号和密码。安装完成后,通过smb.conf文件进行详细配置,确保服务器和客户端的正确联机。Samba在Linux中的应用包括mount.cifs用于挂载远程共享,smbclient用于查看共享资源等。Samba的使用有助于简化多平台间的文件管理和协作。
摘要由CSDN通过智能技术生成

如果想要共享档案,在Linux对Linux的环境下透过NFS这个东东,而在Windows对Windows的环境下则是用【网络上的芳邻】,如果使用Windows与Linux,而且要实现共享文件

系统的话,那就使用Samba服务器,Samba可以让Linux加入Windows的网芳支持,让异质平台可以共享文件系统,不仅如此,Samba也可以让Linux上面的打印机成为服务器

总之,Samba对于整个区网的贡献很大。在早期的网络世界当中,档案数据的传输大多使用FTP这个服务器进行传送,但是FTP无法让你直接在主机上面修改档案数据的,也就是

说更改Linux主机上面的档案,需要下载后才能进行修改,也因此该档案的在服务器与客户端都会存在,这个时候,万一哪天你修改了某个档案,却忘记将数据上传回主机,那么

经过一阵子,你就不知道这个档案是否是最新的了。

让档案在两部主机之间直接修改: NFS 与 CIFS

NFS这个文件系统可以让你将Server提供分享的目录挂载进来,那么在客户端的机器上面就可以直接取用Server上的档案资料了,该数据就像是我客户端上面的partation一般。

而除了可以让 Unix Like 的机器互相分享档案的 NFS 服务器之外,在微软操作系统上面也有类似的文件系统,那就是CIFS这个东东,CIFS最简单的想法就是目前常见的网络上

的芳邻,Windows系统的计算机可以透过桌面上【网络上的芳邻】来分享别人所提供的档案数据,不过NFS仅适合LInux机器沟通,而CIFS只能让Windows机器沟通,此时想要

让不同的平台相互分享档案数据的时,就要用到SAMBA了。SAMBA可以进行哪些动作?

1 分享档案与打印机服务

2 可以提供用户登入SAMBA主机时的身份认证,以提供不同身份者的个别数据

3 可以进行Windows网络上的主机名解析(NetBIOS name)

4 可以进行装置的分享(例如Zip CDROM)

利用软件直接编修 WWW 主机上面的网页数据

很多人利用个人计算机将网页制作完毕之后,再以类似FTP之类的服务将网页上传到WWW主机上,这样的困扰就是同时在客户端与WWW主机上面都有一份网页数据

常常忘记哪一份是最新的,如果有安装SAMBA服务器的设定的话,那么透过【网芳】的功能,直接联机远程服务器所提供的目录,如此一来就可以在个人计算机上面修改

服务器的档案数据,只需要一份正确的数据即可,有点像在线编修。

做成可直接联机的文件服务器

SAMBA可以将硬盘空间分享出来,由于使用者要登入SAMBA这个服务器主机时需要输入用户(账号与密码),而不同的登入者会取得不一样的目录资源,所以可以避免自己的数据

在公用计算机上面被偷窥,此外,在不同的公用计算机上面都可以登入SAMBA主机,数据的使用上面真的很方便

打印机服务器

SAMBA 除了分享文件系统外,也可以分享打印机,直接以Linux分享的打印机来印刷报告

SAMBA 的应用挺广泛的,尤其对于局域网络内的计算机来说,更是一项不可多得的好用的服务器,SAMBA的功能其实就是模仿Windows的网芳以及AD相关的软件,但是

Windows XP对于网芳的联机限制依据版本而有所不同,以企业常见的专业版,他仅能提供最多同时十个联机到网芳的联机能力,而SAMBA没有限制联机数,并且稳定,可靠

SAMBA 使用的 NetBIOS 通讯协议

事实上,就像NFS是架设在RPC Server上面一样,SAMBA这个文件系统是架构在NetBIOS这个通讯协议上面所开发出来的,NetBIOS其实早期的目的仅是让局域网络内少数

计算机进行网络链接的一个通讯协议而已,所以考虑的不是针对大型网络,因此,NetBIOS是无法跨路由的(Router / Gateway)。这个NetBIOS在局域网络内实在很好用,所以

微软的网络架构就使用了这个东东进行沟通的,而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 这个咚咚,也是 IBM 在 NetBIOS 发展出来之后的改良版本。

SAMBA 使用的 daemons

NetBIOS当初发展时就是着眼于在局域网络内的快速数据交流,而因为是定义在局域网络内,因此他并没有使用类似TCP/IP之类的传输协议,也就不需要IP的设定,如此一来

数据如果在两部主机之间交流?其实主机在NetBIOS协议当中的定义为使用『NetBIOS Name』,每一部主机必须要有不同的NetBIOS Name才行,而档案数据就是在不同的

NetBIOS name之间沟通,我们以一个网芳的设定来做简单的说明:

1,取得对方主机的 NetBIOS name 定位该主机所在:当我们想要登入某部Windows主机使用他所提供的档案数据时,必须要加入该Windows主机的群组(Workgroup),并且我们

的机器也必须要设定一个主机名,这个主机名跟Hostname是不一样的,因此这个主机名是架构在NetBIOS协议上的,我们可以简单的称呼为NetBIOS name,在同一个群组当中

,NetBIOS name 必须要是独一无二的

2,利用对方给予权限存取可用资源:在我们找到该主机名后,是否能登入该主机或者是取用对方主机所提供的资源,还要看对方Windows主机有没有提供我们使用的权限,所

以,并不是登入该Windows主机之后我们就可以无限制的取用该主机的档案资源了,也就是说,如果对方主机允许你登入,但是却没有开放任何资源让你使用,此时登入主机也

无法查看对方的硬盘里面的数据的

我们的 SAMBA 则是透过两支服务来控制这两个步骤,分别是:

nmbd:这个daemon是用来管理工作组,NetBIOS name等等的解析,主要利用UDP协议开启port 137,138来负责名称解析的任务

smbd:这个daemon的主要功能就是用来管理SAMBA主机分享的目录,档案与打印机等等,主要利用可靠的TCP协议来传输数据,开放的端口为139及445(不一定存在)

所以啰, SAMBA 每次启动至少都需要有这两个 daemons 喔!这可不要忘记,而当我们启动了 SAMBA 之后,主机系统就会启动 137, 138 这两个 UDP 及 139 这一个 TCP 埠

口,这也不要忘记,因为后面设定防火墙的时候,还会使用到这三个 port 的。

联机模式的介绍 (peer/peer, domain model)

SAMBA服务器可以依照不同的网域联机方式,与不同的用户账号密码的控管方式来进行分类,例如常见的Workgroup及Domain两种方式的联机模式:

这两种最常见的局域网络的联机模式:peer/peer (对等模式) 及 domain model (主控模式)

peer/peer (Workgroup model, 对等模式):

peer/peer 当然就是指两部主机的地位相等,例如局域网络中的所有PC都可以在自己的计算机上面管理自己的账号和密码,同时每部计算机都具有独立执行各项软件的能力

只是藉由网络将各个PC链接在一起而已的一个架构,所以每部机器都是可以独立运作的,在这样的架构底下,要如何透过网络联机来取得对方的数据?首先必须要知道对方

使用的密码,并且对方要启用Windows的资源共享之后,才能够去进行联机,反过来对方想要取得我的数据,也要取得我的账号和密码,因此对方主机和我的主机地位是相同的

这就是peer/peer 的架构,这种架构的好处是每部计算机可以独立运行,不受他人的影响,缺点就是当整个网域内的所有人员都要进行数据分享时,光是要知道所有计算机里面

的账号和密码,就很伤脑经了,Peer/Peer 的架构是比较适合 (1)小型的网域,或者是 (2)没有需要常常进行档案数据分享的网络环境,或者是 (3)每个使用者都独自拥有该计算机

的拥有权(就是说,该计算机是用户的,而不是公用的啦!),而如果该单位的所有PC都是公有的,例如学校的计算机教室环境,而且你需要统一控管整个网域里面的账号与密码

的话,那就使用底下的domain models 了!

domain model (主控模式)

假如有十部计算机,但是有20个员工轮流使用,如果使用peer/peer的架构时,每部计算机要输入这20个员工的账号与密码来提供他们登入,而且,如果想要变更密码的话就需要

到10台计算机上面进行密码变更的作业,使用 peer/peer 架构就不是一个好方法了!这个时候就需要藉由 domain model 来达成你的需求啦,既然使用计算机资源需要账号密码

那么我将所有的账号和密码都放置在一部主控计算机上面,而网域内,任何人想要使用任何计算机时,都需要在屏幕前输入账号与密码,然后通通藉由PDC服务器的辨识后,才

给予适当的权限,也就是说,不同的身份还具有不一样的计算机资源权限就是了,PDC 服务器控管整个网域里面的各个机器的账号与密码的信息,例如有一个账号名称为vbird

且密码为12345时,他不论使用哪一部计算机只要在屏幕前输入vbird与密码后,该机器会先到PDC上面查验是否有vbird以及vbird的密码,并且PDC主机会给予vbird这个用户相关

的计算机资源权限,当vbird在任何一部主机上面登入成功后,他就可以使用相关的计算机资源了,这样的架构比较适合人来人往的企业架构,当系统管理员要控管新进人员的计

算机资源使用权时,可以直接针对 PDC 来修改就好了,不需要每一部主机都去修修改改,这两种模式要依照环境来选择联机的模式,当然SAMBA可以达到上述两种模式的。

SAMBA 服务器的基础设定

SAMBA软件几乎在所有Linux上面都有提供,当你需要联机到远程的Windows网芳,那时就需要得到SAMBA提供的客户端软件功能,因此只要直接安装系统上面提供的SAMBA

版本即可,先介绍SAMBA服务器,再介绍客户端功能。

Samba 所需软件及其软件结构

1.samba: 这个软件主要提供了 SMB 服务器所需的各项服务程序 (smbd 及 nmbd)、 的文件档、以及其他与 SAMBA 相关的 logrotate 配置文件及开机默认选项档案等;

2.samba-client: 这个软件则提供了当 Linux 做为 SAMBA Client 端时,所需要的工具指令,例如挂载 SAMBA 文件格式的 mount.cifs、 取得类似网芳相关树形图的 smbtree 等;

3.samba-common: 这个软件提供的则是服务器与客户端都会使用到的数据,包括 SAMBA 的主要配置文件 (smb.conf)、语法检验指令 (testparm) 等等;

安装好之后,与他相关的配置文件有这些:

/etc/samba/smb.conf: 这是 Samba 的主要配置文件,基本上,咱们的 Samba 就仅有这个配置文件而已,且这个配置文件本身就有很详细的说明文件了,主要的设定分为

服务器的相关设定,如工作组,NetBIOS名称与密码等级,以及分享的目录等相关设定,如实际目录,分享资源名称与权限等等两大部分

/etc/samba/lmhosts: 早期的 NetBIOS name 需额外设定,因此需要这个 lmhosts 的 NetBIOS name 对应的 IP 檔,事实上有点像/etc/hosts的功能,只不过这个lmhosts对应的主

机名是NetBIOS name,不要和/etc/hosts 搞混了!目前 Samba 预设会去使用你的本机名称 (hostname) 作为你的 NetBIOS name,因此这个档案不设定也无所谓。

/etc/sysconfig/samba: 提供启动 smbd, nmbd 时,你还想要加入的相关服务参数。

/etc/samba/smbusers: 由于Windows与Linux在管理员与访客的账号名称不一致,例如: administrator (windows) 及 root(linux), 为了对应这两者之间的账号关系,可使用这个

档案来设定。

/var/lib/samba/private/{passdb.tdb,secrets.tdb}: 管理 Samba 的用户账号/密码时,会用到的数据库档案;

/usr/share/doc/samba-<版本>: 这个目录包含了 SAMBA 的所有相关的技术手册

至于常用的脚本文件案方面,若分为服务器与客户端功能,则主要有底下这几个数据:

/usr/sbin/{smbd,nmbd}:服务器功能,就是最重要的权限管理 (smbd) 以及 NetBIOS name 查询 (nmbd) 两个重要的服务程序;

/usr/bin/{tdbdump,tdbtool}:服务器功能,在 Samba 3.0 以后的版本中,用户的账号与密码参数已经转为使用数据库了,Samba使用的数据库名称为TDB,数据库的控制指令

tdbdump可以查看数据库的内容,tdbtool可以进入数据库操作接口直接手动修改账号和密码参数,不过,你先要安装tdb-tools 这个软件才行;

/usr/bin/smbstatus:服务器功能,可以列出目前 Samba 的联机状况, 包括每一条 Samba 联机的 PID, 分享的资源,使用的用户来源等等,让你轻松管理 Samba 啦;

/usr/bin/{smbpasswd,pdbedit}:服务器功能,在管理 Samba 的用户账号密码时, 早期是使用 smbpasswd 这个指令,不过因为后来使用 TDB 数据库了,因此建议使用新的 

pdbedit 指令来管理用户数据;

/usr/bin/testparm:服务器功能,这个指令主要在检验配置文件 smb.conf 的语法正确与否,当你编辑过 smb.conf 时,请务必使用这个指令来检查

/sbin/mount.cifs:客户端功能,在Windows上面可以设定【网络驱动器机】来连接到自己的主机上面,在Linux上面,需要透过mount.cifs来将远程主机分享的档案与目录挂载到

自己的Linux主机上面

/usr/bin/smbclient:客户端功能,你的 Linux 主机想要藉由『网络上的芳邻』的功能来查看别台计算机分享出来的目录与装置,使用 smbclient查看,也可以使用在SAMBA主机上

/usr/bin/nmblookup:客户端功能,有点类似 nslookup 啦!重点在查出 NetBIOS name 就是了。

/usr/bin/smbtree:客户端功能,这玩意就有点像 Windows 系统的网络上的芳邻显示的结果,可以显示类似【靠近我的计算机】之类的数据,能够查到工作组与计算机名称的

树状目录分布图。

基础的网芳分享流程与 smb.conf 的常用设定项目

既然SAMBA要加入Windows的网芳服务当中,所以他的设定方式应该要与网芳差不多才行,目前的Windows XP的SP2(服务包第二版) 之后加入了很多的预设防火墙机制, 因此

使用网芳的预设限制常常会是这样的:

服务器与客户端之间必须要在同一个网域当中(否则需要修改 Windows 预设防火墙);

最好设定为同一工作组

主机的名称不可以相同(NetBIOS name);

专业版的Windows XP最多仅能提供同时10个用户联机到同一台网芳服务器上

工作组与主机名的设定,你可以在『我的计算机』右键单击,选择内容后去修订相关的设定值,设定好之后,分享的步骤是:

1. 叫出档案总管,,然后在要分享的目录、磁盘或装置 (如打印机) 上面按下右键,选择『共享』,然后就能够设定好分享的数据了

2. 最好建立一组给用户的使用的账号与密码,让其他主机的用户可以透过该账号密码联机进入使用网芳分享的资源。

假设你打开 Windows XP 的档案总管,在 D:\VBird\Data 这个目录下,按下右键选『共享与安全性』,然后勾选:【在网络上共享这个文件夹】,最后输入共享的名称

【VBGame】,假设你的IP是10.0.0.5,此时你的用户看得的网址列是:『 \\192.168.100.20\VBGame 』 ,『 \\IP\分享资源名称』,分享资源名称为 VBGame

依据上述的限制以及流程你可以这样想象:

1. 服务器整体设定方面:在smb.conf当中设定好工作组,NetBIOS主机名,密码使用状态(无密码分享或本机密码) 等等;

2. 规划准备分享的目录参数,在smb.conf内设定好预设要分享的目录或装置以及可供使用的账号数据

3. 建立所需要的文件系统:根据步骤2的设定,在Linux文件系统当中建立好分享出去的档案或目录,以及相关的权限参数

4. 建立可用SAMBA的账号:根据步骤2的设定,建立所需的Linux实体账号,再以pdbedit建立使用SAMBA的密码

5.启动服务:启动SAMBA的smbd,nmbd服务,开始运转

根据上面的设定,其实smb.conf档案可以分为两部分来看,一个是主机信息部分,在smb.conf当中以【global】做为设定的依据,另一个则是分享的信息,以个别的目录名称

为依据,另外,由于SAMBA主要是想要加入网芳功能,因此smb.conf内的很多设定都和Windows类似的

1. 在 smb.conf 当中,井字号与分号 (# 跟 ;) 都是批注符号;

2. 在这个配置文件中,大小写是没关系的!因为 Windows 没分大小写!

smb.conf 的服务器整体参数: [global] 项目,在smb.conf这个配置文件当中的设定项目有点像底下这样:# 会有很多加上 # 或 ; 的批注说明,你可以自行加上提醒自己相关设定

[global]

参数项目 = 设定内容

[分享资源名称]

参数项目 = 设定内容

在【globa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值