2020年10月10日第4卷第19期
现代信息科技
Modern Information Technology
Oct.2020 Vol.4 No.19
121
2020.10收稿日期:2020-08-25
基于FTP与NTFS权限的文件共享设计与实现电脑开机显示器不亮
张伟
(江苏联合职业技术学院徐州财经分院,江苏 徐州 221008)
摘 要:目前各类学校机房中使用最广泛的操作系统是微软的Windows 系统。在机房的教学与考试中经常需要创建共享,以便下载与上传文件。由于Windows 系统的连接数限制,多人访问共享存在问题。通过对多种文件共享方式的对比和对共享的需求分析,利用C#、FTP 、NTFS 等技术开发了Windows 共
享系统,实现了Windows 环境下多人文件共享访问,提供了精细的权限控制,解决了机房内文件传输需求。
关键词:FTP ;NTFS 权限;文件共享
中图分类号:TP311.52;TP393.1 文献标识码:A
文章编号:2096-4706(2020)19-0121-05
Design and Implementation of File Sharing Based on FTP and NTFS Permission
ZHANG Wei
(Xuzhou Branch of Finance and Economics ,Jiangsu Union Technical Institute ,Xuzhou 221008,China )
Abstract :At present ,the most widely used operating system in all kinds of school computer rooms is Microsoft ’s Windows
system. In the teaching and examination of the computer room ,it is often necessary to create a share in order to download and upload
files. Due to the limited number of connections in the Windows system ,there is a problem with multi-person access sharing. Through the comparison of various file sharing methods and the analysis of the sharing requirements ,the Windows sharing system is developed by using C#,FTP ,NTFS and other technologies. It realizes the multi-person file sharing access under Windows ,provides fine permission control ,and solves the file transmission requirements in the computer room.
Keywords :FTP ;NTFS permission ;file sharing
0 引 言
在教育部发布《教育信息化2.0行动计划》,信息技术飞速发展背景下,各类学校更加重视信息化教学,在机房中进行教学的课程越来越多,充分利用数字资源、多媒体资源与实训平台等,以期取得更好的教学与实训效果。在实际教学实施中,会遇到文件传输需求:如教学资料的下发,课后作业的上交,未完成的作业下次课下载继续完成,考试时作品、账套、截图的提交等等。以上需求可以具体总结为以下两点:(1)需要简便快捷的共享。最简便常用的方式是使用Windows 文件共享来在机房中
传输文件。但由于Windows 系统有连接数限制,Win XP 及Win 7为10个,Win 10为20个。多人访问局域网中的共享文件的时候,会遇到提示“达到连接数目限制”,进而无法访问共享。(2)需要权限控制。学生对共享文件夹要有下载和上传的权限,但特殊时候需要对上传的权限加以限制,如考试时,学生有上交文件的权限,但不能删除、打开、复制已经上交的文件,防止作弊和恶意行为。
为了实现上述需求,目前实践中一般采取的方法有以下几种:(1)利用教学软件收发,此种方式收作业方便,但需要二次整理。下发作业很麻烦,无法方便做到作业和学生的对应下发。(2)利用Windows 系统的共享功能来实现,
但是有连接数限制,远满足不了共享需求,且必须经过精心
设计的权限控制才能避免对已上交文件的下载、删除。(3)机房内搭建FTP ,利用FTP 下载、上传功能来实现。可以
解决连接数限制,但部署复杂,权限控制粒度粗糙,只有读、写两种权限。虽可利用“用户隔离”限制用户的权限[1],但账号密码管理是十分庞大的工作,且上传的文件分散到不同的文件夹中,不利于集中管理。
以上方法对于需求的解决均存在一定的不足。利用Windows 系统自带的FTP 及NTFS 权限相结合的方
法,在Windows 环境下快速地实现文件传输是一种可行的解决方案[2]。但具体操作过程步骤较多,过于专业,在部署和改变需求时,需要完全理解每个设置的意义,才能有效地做好配置。这对于使用者来说非常不友好,甚至由于专业知识的欠缺,无法部署及应用。
作者依据FTP 配合NTFS 权限的方法思路进行了系统需求分析,详细设计,程序编写与功能测试,最终实现了程序自动化部署和应用,解决了机房内文件收发及权限控制的需求,在江苏联合职业技术学院徐州财经分院的机房内实现了很好的应用。
1 依赖技术介绍
1.1 FTP 协议
FTP 是TCP/IP 协议组中的协议之一。FTP 协议包括两
DOI:10.19850/jki.2096-4706.2020.19.031
素材空间学生空间
服务端
素材空间学生空间
客户端
服务端与客户端桌面图标
第19期
123
2020.10
系统,使用基于结构化的XML 的配置系统来存储IIS 设置,该系统取代了IIS 6.0和更早版本中使用的配置数据库。这个新的配置系统是ASP .NET 引入的,它基于使用*.config 文件的管理系统的分层系统,多个文件在不同层级配置,可以帮助Web 应用、站点、机器分别配置自己的扩展配置数据。IIS 启动的时候会加载配置文件中的配置信息,然后缓存这些信息。在运行过程中ASP .NET 应用程序会监视配置文件的变化情况,一旦编辑了这些配置信息,就会重新读取这些配置信息并缓存。其配置文件的层级关系如图4所示。在继承层次结构方面,根文件是fig ,然后是同一目录中的fig (称为根fig ),接着是fig ,最后是各站点中的可选fig 文件。
<fig
fifig
(fig )
<fig
虫字旁的全部字fig
IIS 7其它配置文件fifig
IIS 7配置文件
图4 IIS 7配置文件及继承层次结构
使用IIS 7及更高版本时,fig 是配置系统的根文件,fig 与fig 是用于IIS 自身管理的配置文件,它们位于%WinDir%\System 32\Inetsrv\Config 文件夹中。图4中各个配置文件的作用如表1所示。
表1 IIS 7配置文件及作用
文件
作用
<fig 保存.NET Framework 设置的全局默认值,
定义了针对当前机器的WinForm 程序和ASP .
NET 应用程序的配置
<fig (fig )根fig ,与fig 在同一文件夹,这个文件包含了ASP.NET 网站的常用配置广东省旅游
<fig 存储所有网站和应用程序的设置,以及Web
淘宝代销服务器设置的全局默认值
<fig
某一站点中的配置,可覆盖掉上级fig
文件中的同名配置
Administration.
config
存储IIS 管理的设置。这些设置包括为IIS
管理器工具安装的管理模块的列表,以及
管理模块的配置设置
<fig 支持从单个集中式配置文件管理多个IIS 服务器在配置文件中,“节”为最小单元、以结构化方式来组织,这些节进一步分为与逻辑相关的集合,称为“节组”。节组可以嵌套,但一个节始终仅属于一个节组。以下为一个配置示例:
<system.webServer><!--webserver 配置节组--><security><!--webserversecurity 配置节组--><authentication><!--webserverauthentication 配置节组--><!--三个authentication 节-->&/>&/>&/></authentication></security>
</system.webServer>
3.3.2 利用配置文件创建FTP 站点
对FTP 站点的创建与管理,主要配置的内容为:system. applicationHost/sites 节组、<site>节和<ftpServer>节,其功能如表2所示。
表2 创建FTP 站点用到的节组与节节组/节作用
<sites>
包含IIS 7服务器上所有站点的配置设置。<sites>元素包含<site>元素的集合。创建新网站时,IIS 将<site>元素添加到集合中
<site>
在IIS 7和更高版本上创建新网站时,可以配置<site>元素。<site>元素包含一个name 属性,该属性定义为网站分配的名称,以及一个id 属性,该属性定义该网站的数字标识符。<site>元素包含子元素,这些子元素定义了在站点上运行的应用程序和虚拟目录,以及网站的端口,协议,日志记录和跟踪配置设置
<ftpServer><ftpServer>元素指定FTP 站点的功能设置以下为一个FTP 站点主要的配置XML 代码示例:<sitename="sucai"id="1"><applicationpath="/">
<virtualDirectorypath="/"physicalPath="c:\inetpub\sucai"/></application><bindings>
<bindingprotocol="ftp"bindingInformation="*:21:"/></bindings><ftpServer><security>
<authentication>
<basicAuthenticationenabled="true"/>
<anonymousAuthenticationenabled="false"/></authentication></security></ftpServer></site>
基于XML 的配置系统大大方便了通过代码的方式进行站点的部署与配置。C#中的Microsoft.Web.Administration.ServerManager 类提供对配置系统的读写访问,使用此类需要先引入Microsoft.Web.Administration.dll 。ServerManager 类可以访问应用程序集合、网站集合、WorkerProcess 集合、绑定对象和VirtualDirectory 集合,其公开的属性是只读的,属性返回的对象是具有读取和写入权限的。对配置对象所做的更新必须使用CommitChanges 显式写入配置系统,更新后IIS
张伟:基于FTP 与NTFS 权限的文件共享设计与实现
第19期现代信息科技
1242020.10
会自动读取新配置并应用。
创建FTP 站点主要代码为:
using(ServerManagerserverManager=newServerManager()){
Configurationconfig=serverManager.GetApplicationHostCo nfiguration();
ConfigurationSectionsitesSection=config.GetSection("system. applicationHost/sites");
ConfigurationElementCollectionsitesCollection=sitesSecti on.GetCollection();
//创建FTP 站点
ConfigurationElementsiteElement=sitesCollection.Create Element("site");
siteElement["name"]=FtpSiteName;siteElement["id"]=canuseID;
ConfigurationElementCollectionbindingsCollection=siteEle ment.GetCollection("bindings");
ConfigurationElementbindingElement=bindingsCollection.CreateElement("binding");bindingElement["protocol"]=@"ftp";
bindingElement["bindingInformation"]=@"*:"+PortN um+":";
bindingsCollection.Add(bindingElement);
//设置FTP 站点选项、物理目录、用户权限等……
1月14日是什么情人节?serverManager.CommitChanges();}
3.4 共享与模式设置
共享的允许与禁止,通过fig 配置文件中<ftpServer>元素的Start 或Stop 方法启动、停止FTP 站点。调用Start 、Stop 方法后,可以通过state 属性的值确定FTP 站点的运行时状态。
权限控制方面,素材空间较简单,直接设置FTP 站点权限为只读即可。学生空间需要设置FTP 权限为读写,更细粒度的访问权限则要用相应文件夹的NTFS 权限来控制。
NTFS 权限是基于ACL 的,一个ACL 条目表示定义文
件或目录访问规则的访问控制项(ACE )[3,
4],包含表3中的要素。
要素名称
访问控制
作用对象权限继承还是显式传递对象传递方式要素释义允许、拒绝有效的用户或组帐户F 、W 、R 等是继承的权限还是显
式设置的权限
叶子、容器
(文件夹)是否传递给子对象
要素取值AccessControlType 枚举(Allow ,Deny )IdentityReference 对象表示的标识的字符串值FileSystem Rights 枚举InheritanceFlags 枚举(ContainerInherit ,None ,ObjectInherit )InheritanceFlags 枚
举(Node ,Con-tainerInherit ,Object-Inherit )PropagationFlags 枚举
(None ,NoPropagate Inherit ,InheritOnly )
表3 创建访问控制项包含的要素
C#的System.Security.AccessControl 命名空间提供了对安全对象的访问权限以及审核、安全相关的操作。命名空间中的FileSystemSecurity 类表示文件或目录的访问控制和审核安全,其派生了DirectorySecurity 类和FileSecurity 类,用
情人节朋友圈说说于更方便的对目录和文件的操作。
在服务端对“学生空间”文件夹进行NTFS 权限设置的步骤如图5所示,其中“用户”指的是用于访问FTP 的用户。
获得当前目录的Windows ACL
遍历ACL 中的ACE ,删除用户的访问
规则
使用FileSystemRights 枚举来指定访问
规则
为用户对目录创建新访问规则,指定
如何将访问规则传播到子对象将修改应用到与此ObjectSecurity 对象
关联的DACL 中将ACL 项应用于当前DirectoryInfo
对象所描述的目录
图5 对用户设置文件夹的NTFS 权限步骤
其核心代码为:
/// 设置用户对文件夹的权限
privatestaticvoidChangeFolderPower(stringfolderPath, stringusername, InheritanceFlagscontainerInherit)
{
DirectoryInfodirinfo=newDirectoryInfo(folderPath); if ((dirinfo.Attributes&FileAttributes.ReadOnly) !=0) {
dirinfo.Attributes=FileAttributes.Normal; }
//取得访问控制列表
DirectorySecuritydirsecurity=dirinfo.GetAccess
Control();
//获得权限列表
AuthorizationRuleCollectionacl=dirsecurity.GetAccess Rules(true, true,
typeof(System.Security.Principal.NTAccount));
foreach (FileSystemAccessRuleaceinacl) //遍历权限列表
{
if (ace.IdentityReference.Value==username) {
dirsecurity.PurgeAccessRules(ace.Identity Reference); //删除权限
图7 程序运行后初次部署成功界面
图8 共享与模式设置成功界面
论
本文为了实现在机房Windows系统环境下文件传输及
权限控制的目的,分析了目前解决需求几种方式的不足
Windows桌面版操作系统在机房环境中“文件共享
》的思路上,进一步研究了FTP部署、配置及
权限分配的机制,利用C#不仅完成了Windows共享工具的6 客户端快捷方式
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论