我在一个学区工作。 我已经负责为学生build立一个存储服务器。 一个地方让他们从学校和家庭的工作。
我的挑战是让这个在家工作。 在学校他们login,身份validation,他们得到一个映射驱动器到服务器上的文件夹( S:\fileserver\studentname )。
我的问题是我怎样才能让这个在家里的学生?
服务器正在运行Windows Server 2008 R2。 我有PHP,Apache和MySQL一起工作。 我的想法是编写一个脚本,通过包含所有学生文件夹的目录“爬行”,然后在MySQL DB中创build每个文件和文件夹的实例。 创build一个login页面,使用LDAP进行身份validation,一旦他们从家里login到服务器,他们会得到一个页面,其中的文件夹与用户名相关联。
有没有人曾经把这样的东西放在一起?
如果你坚持这样做(而不是与@sweaves答案),那么我会开始:
删除Php,Apache和MySql。 他们没有必要,会引起他们自己的头痛。
启动并运行FTPS服务器。 根据这些方面,您可能会考虑倾销Windows Server 2003,转而采用2008 R2。 IIS 7内置了更好的FTP项目。http://blogs.technet.com/b/chrisavis/archive/2008/06/12/how-to-configure-ftp-over-ssl-secure-ftp-on-窗户-2008-在-低于10 minutes.aspx
如果你不能这样做,看看这个如何设置文件Zilla与AD一起工作。 http://retrohack.com/enabling-filezilla-server-integration-with-active-directory-authentication/
另一个选项(感谢@ jscott)是使用WebDav( http://www.iis.net/download/webdav )。 这是另一所学校完成同样的事情: http : //kb.iu.edu/data/araf.html
您也可以设置一个“> SFTP服务器.SFTP支持无密码login,但不支持Windows开箱即用。
值得注意的是,filezilla解决scheme比IIS 7更具有pipe理function。
更简单的解决scheme是build立一个VPN。 学生可以login到VPN并访问他们所有的资源,就像他们坐在校园内一样。 查看详情… http://lifehacker.com/162563/how-to-set-up-free-vpn
他们究竟需要做什么? 只需访问? 如果你把它打开到FTP,你要问大问题。 如果他们需要访问一致的工具来处理来自学校的文档,请打开用于远程桌面服务的服务器(或集群)。
是的,他们需要安装远程桌面客户端,如果他们还没有(他们可能已经这样做),但客户端可用于Linux,Windows和Mac免费。 连接是encryption的,他们可以访问任何你的学校使用的Office或其他工具,除非你正在运行像Photoshop这样的重任。
如果你使用RDP,你可以获得encryption,你的防火墙上有一个端口可以打开,并且你可以实现标准化的工具(没有“我在家做这个,工作正常,为什么不在这里打开?集中pipe理。 我已经看到类似的问题,像这样几次解决,只有在特定的情况下,有问题。
另外,你没有学生多份文件,抱怨他们不知道为什么他们的论文是错误的版本,因为它在家里工作的精细…或他们没有把它保存到正确的位置.. 。等等。
WebDAV如何?
这在apache中得到了支持,您仍然可以使用LDAP进行身份validation。
用户将能够从浏览器访问他们的文件,现代版本的Windows和OS X允许用户分别在Explorer和Finder下安装WebDAV共享。
这也可以防止与你的方法中的数据库同步存储不断变化的文件系统状态相关的问题。
看看Adito / OpenVPN ALS 。 它是免费的,将安装在Windows或Linux上,并且非常容易设置文件共享的Web界面以及许多其他function。 我在我工作的大学使用它。 它有一些缺点:它需要在客户端上安装Java,在许多浏览器上启动popup窗口阻止程序,证书设置可能更容易,文件列表的分页视图可能更容易。 如果您select安装webdav,则可以使用它来使用户更容易(也更可靠)获得正确的驱动器映射。
正如其他人所说 – 不要使用FTP – 它有很多很多错误的东西。 OTOH,你应该使用一个不需要用户安装额外的客户端软件的协议; 尽pipe基于ssh的访问(sftp,scp)是理想的,但MSWindows机器并不以客户端为标准。
PHP中没有可用的文件pipe理器 (也可能是其他语言)。 IIS使用NTLM权限隧道做了一些非常奇怪的事情 – 但是如果你使用Apache,它应该是相当安全的 – 但是访问硬盘并不像从服务器\用户名\读取那么简单 – 你需要允许这些文件的networkingpipe理员权限 – 但这是一个安全的噩梦!
我这样做(对于一个非常不同types的应用程序)是通过smbclient使用用户名/密码从用户PHP会话处理I / O – 但是在Linux机器上 – AFAIK,在MSWindows上没有等价物。
当然,您会希望使用用户提供的凭据来对存储进行身份validation。
这很快变得可怕复杂!
所以一个实际的解决办法是让学生通过互联网来映射驱动器。 这样你就不必担心提供一个文件pipe理器的复杂性,而这个文件pipe理器不是操作系统的一个组成部分(即可以直接从应用程序访问)。 但是你不想把你的服务器暴露给任何人和每个人。 解决这个问题的常用方法是VPN,而且有很多好的和低成本的方法 。 或者简单地使用客户端证书authentication将服务包装在SSL中 。 但是这又需要客户端安装。
所以…..
如何通过Web表单来validationIP地址的用户,然后在防火墙上创build一个时间限制的漏洞,以便通过SMB连接该IP地址(并且他们仍然需要提供用户名/密码来映射驱动器) 。
PS:我个人认为,如果将系统移植到* nix,将会有更好的成功率,因为可以提供更多的select(自由)
想到的是:
将更改上传到Dropbox 。 关于Dropbox的好处是他们提供了一个20GB的免费计划(现在),可以和任何stream行的操作系统(Windows / Linux / MacOSX)一起使用,没有任何麻烦。 我还没有阅读/实施任何使用Dropbox API ,但希望你可以实现没有太多头痛。 我想问题是当他们改变定价计划时会发生什么,但是这是以后的事情。
执行快速Googlesearch之后,此链接提供了一些开源替代方法,但我不知道它们中的任何一个是否有用,因此您应该对其进行testing。
而不是让用户select同步只提供他们下载文件/文件夹(压缩)的机会。 我想你可以写一个像这样的系统,没有太多的委屈。
像其他一些用户说,让用户使用VPN / RPClogin。
看看Ajaxplorer( http://www.ajaxplorer.info )
这是一个基于Web的文件pipe理器(使用PHP和Javascript编写),可以轻松pipe理权限,用户和组,并且可以设置共享存储库以及个人存储库。
它也可以做webdav,并具有各种系统的authentication连接器(ldap,mysql,flatfile …..)
使用文件系统连接器,您可以设置规则将用户帐户自动映射到单个目录,这将整理访问用户映射驱动器的要求。
我们刚刚开始在这里使用(devise/networking代理),所有技术能力的客户都很容易使用/理解
您应该能够将其整合到您当前的系统中,而无需更改