从Windows Server文件服务到分布式文件服务
一、序言
不知道大家是否考虑过服务器与终端机或者叫桌面机、工作站等的区别都有什么?也许你会说体积不同,也许你会说功能不同,甚至有些人会拉一个清单出来说说硬件上面的区别等。其实我最想说的是,两者最大的区别之一:服务器是给多个人用的,属于共享型设备,而终端机也好,桌面机也罢,大部分情况下都是给个人用的,属于独享型设备。从高层应用层来看,无论是WEB服务器、邮件服务器、代理服务器、数据库服务器、无论提供的是什么服务,这些服务都是共享资源型,从硬件的角度上看,都是属于共享型的设备。提出这个观点 ,忽悠你接受这个概念,是为了下面更好的说明。www.it165.net
二、文件服务
文件服务是服务器最古老的服务之一。现在的操作系统无论是WINDOWS 还是LINUX本身都提供了很强大的服务组件,用来将服务器部署成各种需求的应用服务、基础服务、存储。或集群服务等。在文件或文件夹共享中,LINUX系统使用了大名鼎鼎的SAMBA服务。而在WINDOWS SERVER中叫“文件服务”。不过很多人还是对文件服务有一点点小小的误区。所谓文件服务,其实说白了就是文件或文件夹共享或者用我的观点叫共享文件管理。很多人把文件服务同时理解为文件管理。实际上并不是文件管理。(基础的文件管理是基于文件系统来进行的)。如果文件或文件夹没有集中共享的需求,那么分散到各个客户端由创造者独自使用是理所当然的,但是如果有共享文件或文件夹,甚至不止一个共享文件后文件夹群集,分散的存放和管理就会带来很多问题。不仅仅是网络环境变的更复杂,管理起来也变的非常麻烦。如下图2.1
三、文件服务与服务器消息块
先问大家几个问题:无论是windows还是windows server为什么都要提供”共享文件夹”服务?如果说windows server提供文件服务是把文件集中起来进行共享管理,那么windows提供文件夹共享是为了什么?如果功能与SERVER系统的功能一样,而为什么还要windows系统的文件夹共享做并发连接限制?以下两种情况说明了原因的所在。第一种:远程访问一些文件资源。这种情况就是你有一台A计算机,远程有一台B计算机,现在你要通过A计算机网络访问B计算机上的一些文件,很显然,共享文件夹远程访问就很方便了。文件共享到底使用了什么样的协议进行文件传输呢?它不使用文件传输协议FTP,也不是用远程登录协议TELNET,而是使用windows内置的SMB协议共享出我们需要访问的文件或文件夹。如下图3.1
除非使用GHOST系统安装,当使用原版的系统光盘安装系统,默认安装会启动共享功能。说到共享,微软实际上提供了两种共享服务,一个就是打印机的共享服务,被称为”打印和文件服务“,另一个就是我们一直在吵吵的文件共享服务,被称为”文件服务“。有一点,我对微软是不太满意的,因为微软的服务组件总是更换名字,从03到08R2,名字就发生了很大的变化,不过还好,这两种服务还是各自独立的。看下图4.1
(图4.1 windows server 2003里叫文件服务器和打印服务器)
从上面两张图中我们发现,服务组件的名称发生了一些变化,实际上一些功能也发现了变化。鉴于windows server 2008R2已步入主流,下面的内容尽量以windows server 2008r2进行举例。还是回到正题,其实我们即便是不安装”文件服务“ windows和windows server系统都会默认安装有“Microsoft 网络客户端”、“Microsoft 网络的文件和打印机共享”和 TCP/IP。前者允许您访问网络资源,后者用于文件和打印机的共享。如下图4.3
我们可以很清楚的看到默认三类共享:远程管理、默认共享和远程IPC。其实上系统会把磁盘包括光驱根分区作为默认共享,比如C$ 从$这个符我们可以看出这是一个隐藏共享,不过这个秘密已经不是什么秘密了。这个隐藏共享就是默认共享,无法修改其权限,无法删除。即使当时停止了这个共享,实际上下一次启动还会出现,这就是所谓的默认共享。将WINDOWS系统文件共享出来就叫远程管理共享,就是ADMIN$ 默认的文件夹地址为c:\windows,那么共享就指向这里。IPC$(Internet Process Connection) 是共享 " 命名管道 " 的资源。它是为了让进程间通信而开放的命名管道。由于微软在WIN2000时代的一些严重漏洞和默认初始安装的较低安全性,这个本来只是为了方便管理员远程管理计算机的功能成为了很多企业的噩梦。于是如何关闭默认共享网上的文章铺天盖地而来。其实我们不用对这个默认共享产生恐惧,因为这几个共享只有管理员权限和备份操作员权限的用户才可以共享,普通用户是无法使用的。
一个为power user组的用户z00w00 试图去访问c$,如下图4.4
(图4.4)其结果必然是拒绝访问。
(图4.5)
使用“服务器管理器”添加“角色”任务就可以很方便的添加“文件服务”角色,如下图5.1
勾选“文件服务”然后选择下一步,可以看出很多组件,2008R2角色只能一次创建,我们先不选择分布式文件系统,选择的内容我们会逐步介绍。如下图5.2
(图5.3)
当监控的卷到达阀值时,会生成一个报道,下面就是提示报告的位置。如下图5.4
重启计算机后就可以正常使用了。创建共享文件夹的方法有好几种,下面介绍两种第一种:是大家最常用的,在WINDOWS系统下也这么做,就是右键要共享的文件夹,然后选择属性,如下图5.5
请看下面跨网段计算机通过主机名访问共享文件夹的结果,如下图5.10 www.it165.net
原因很简单,因为主机名无法解析,域环境用户无此问题,如果遇到该问题,说明DNS解析有问题了。我会在以后的文章中介绍。关于授权访问共享文件夹账号的具体设置,在稍后的文章中介绍。
第二种方法就是安装了“文件服务”后利用“服务器管理器”的“文件服务”角色管理,我个人更喜欢这种方法,因为不但是管理,查看更方便。如下图5.11
图中很直观的列举了所有共享文件的内容(包括上文提到的默认共享等),点击右侧操作—设置共享,就可以创建共享文件夹了。我之所以喜欢这样设置,是因为这样提供了一个共享文件夹设置向导的功能,可以一步步的进行设置,非常全面。所以我个人推荐使用这种方式设置共享文件夹,如下图5.12
当我们创建完共享文件或文件夹后,第一个需要思考的问题就是如何访问这些共享文件或文件夹。一般来说,我们最常使用的方法有三种:
(一) 使用“开始”----“运行”或“资源管理器”
如果我们并不是经常访问这些共享文件夹或者一台计算机有多个人使用,我们不想让其它人知道有这样一个或几个共享文件夹存在,通常使用这种方法。如下图6.1
还有一种方法就是使用资源管理。当你双击“我的电脑”打开一个窗口的时候,实际上就是启动了资源管理(Windows Explorer)然后在地址栏中输入共享文件夹的UNC。如下图6.2
如果用户每天甚至更频繁的要访问这些共享文件夹,每次都要在“开始”-”运行“中输入共享文件夹的UNC,显然很麻烦。将远程计算机的共享文件夹映射成一个本地驱动器盘符。这样,就感觉是本地计算机的一个逻辑磁盘。如下图6.2-A
这是很多系统管理员喜欢使用的方法。甚至在AD中,就是利用NET USE命令结合组策略,可以给相关的计算机或账户将远程计算机的共享文件夹映射驱动器。(关于这一点,在稍后介绍)
命令语法:net use Driveletter(Z:) \\servername\sharename 如下图6.3
(图6.3)
七、 共享文件夹的匿名访问与授权访问
((一)匿名访问
我们共享文件或文件夹通常处于两种目的:第一种,类似集中发放的文件或文件夹共享。比如你有一个文档或电子书,任何人都可以远程访问你共享的文件夹下载这个文档或电子书。这种情况下是谁来访问并不重要。因为任何人都可以,如下图7.1
实际上我们之前说了WIN7&2008R2的时代有两种设置共享的方法,一种是普通共享,一种是高级共享,今天还要强调的是,文件夹共享同时受到共享权限和NTFS权限双重联合控制。通过图7.3的上文我们可以了解到,通过网络访问共享文件夹的时候首先要通过“共享权限”的验证,然后再通过“NTFS权限”的验证。(NTFS权限控制本地访问)只有通过两者的授权才能正常的访问被共享的文件夹,很多人就是在这里设置不当,造成共享文件夹无法访问。匿名访问的设置其实很简单,就是“共享权限”和“NTFS权限”中设置”everyone”组读权限即可,如下图7.4-A和7.4-B
由于设置了只读模式,所以只能读取和运行文件夹中的文件和目录,无法删除该目录中的文件和新增文件。我们测试一下,如下图7.6-A和7.6-B
(二)可怕的Everyone组
我思考了一下,觉得还是要先说一下这个everyone组,并且给了“可怕的”这个定语,因为这个everyone组确实很可怕。可能有人会问我为什么?很抱歉,我一直想写一篇关于WINDOWS用户组管理方面的博文,但是一直还没有,我将来会在那个文章中详述,因为这个everyone组实际上是组嵌套中那个最大的容器。通俗一点说,这个EVERYONE组包含了默认的管理员账号、来宾账号和计算机默认所有的组。所以在设置权限的时候一个不小心,就会出问题。很多人在设置共享权限的时候就是喜欢用EVERYONE组,但是又没有搞清楚这个组的恐怖所在,贸然使用,最后导致始终无法设置成自己想要的权限。现在我们来看一个小小的实验,下面有一个用户z00w00,在共享权限和NTFS权限中都设置了可读/写权限,按理说修改个文件名不在话下吧,我就是在看似八竿子打不着的everyone组中设置了写入拒绝,结果z00w00就不能改用户名了。看下图7.7-A和7.7-B
下面我们把read me111.txt改为read me222.txt结果就是拒绝访问,如下图7.10
非常有意思的windows的NTFS权限和LINUX是不同的,既然我们领略到everyone组的拒绝写入权限已经造成了该文件不可更名,实际上它还禁止了在这个文件(实际上包括所有的三个文件)中写入,和保存在WL文件夹中。我们现在实验一下印证理论,如下图7.11-A和7.11-B