注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

gnaw0725博客

活动目录、网络安全

 
 
 
 
 

日志

 
 

从文件夹快捷方式拒绝访问到symbolic link符号连接  

2007-07-06 11:16:00|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
 

大家可能已经注意到在Vista中有些特殊的目录,例如“c:\Documents and Settings”或者“C:\user\All users”或者“C:\user\username\Local Settings”等等目录,这些目录默认状态下是隐藏的,当您打开隐藏文件查看后,可以看到这些带着一个快捷方式的图标,它们都是原来在Windows XP下曾经出现过的,当您尝试点击它的时候,系统会提示您拒绝访问。
其实这些目录在vista中已经不存在了,之所以还存在一个“快捷方式”,是为了保持应用程序的兼容性,以便于之前的应用程序在vista上仍然能够找到原来的目录。而其实这些快捷方式已经指向到了vista中新的目录。
这些特殊的“快捷方式”,实际上是使用了一种称为“symbolic link符号连接”的技术,这个技术最早在Windows 2000上启用,不过那个时候,符号连接仅仅支持硬连接,也就是当您操作连接对象的时候,被连接的对象也会产生一样的效果,例如您删除了连接,那么原有的对象也被删除了。这个效果与Linux或者Unix中的硬连接是一样的。Vista则增加了软连接的功能。
为什么系统会拒绝我们访问呢?如果您查看这些连接的安全属性,会注意到连接的拥有者只有system账户,出于安全性的考虑,Vista阻止了GUI方式访问。大家不要试图通过夺取拥有者的办法,以查看符号连接的内容,这可能破坏该连接,导致连接的中断。
那么如何了解这些符号连接连接到了哪些目录呢?您可以打开cmd,默认状态下,当前目录应该是用户配置文件目录,也即 c:\user\username,此诗您输入 dir /al,就可以看到众多的“假目录”,也就是符号连接。当老的应用程序试图写入这些目录的时候,就被导向到了其它目录,这个过程对应用程序是透明的。例如应用程序尝试写入 c:\documents and settings\username ,但最终文件被写入到了 c:\user\username。这个设计理念,其实也充分体现了vista是如何保持向下兼容性,以及产品的平滑过渡的。这里列出一些使用了符号连接:
Application Data [C:\Users\gnaw0725\AppData\Roaming]
Cookies [C:\Users\gnaw0725\AppData\Roaming\Microsoft\Windows\Cookies]
Local Settings [C:\Users\gnaw0725\AppData\Local]
My Documents [C:\Users\gnaw0725\Documents]
NetHood [C:\Users\gnaw0725\AppData\Roaming\Microsoft\Windows\Network Shortcuts]
PrintHood [C:\Users\gnaw0725\AppData\Roaming\Microsoft\Windows\Printer Shortcuts]
Recent [C:\Users\gnaw0725\AppData\Roaming\Microsoft\Windows\Recent]
SendTo [C:\Users\gnaw0725\AppData\Roaming\Microsoft\Windows\SendTo]
Templates [C:\Users\gnaw0725\AppData\Roaming\Microsoft\Windows\Templates]
「开始」菜单 [C:\Users\gnaw0725\AppData\Roaming\Microsoft\Windows\Start Menu]

更多vista技巧请参考 http://gnaw0725.blogbus.com/c1404553/
一般来说,不建议删除这些假目录,一旦删除,一些老的应用程序可能无法正常工作。说到这里,大家可能还是心有不甘,ok,大家可以通过下面的实验,来体会符号连接的魅力。
环境配置:在根目录下建立一个测试目录,例如 d:\test1,然后在里面建立一个文本文件,例如 d:\test1\test1.txt。我们使用vista中的一个命令行工具 mklink来完成符号连接的建立,mklink的命令行格式如下:
MKLINK [[/D] | [/H] | [/J]] Link Target
        /D      创建目录符号链接。黙认为文件符号链接。
        /H      创建硬链接,而不是符号链接。
       /J      创建目录联接。
        Link    指定新的符号链接名称。
        Target  指定新链接引用的路径 (相对或绝对)。

实验1:创建文件类型的符号连接
输入:mklink d:\test d:\test1
回车,系统提示“ 为 d:\test <<===>> d:\test1 创建的符号链接” ,您在资源管理器中看到根目录建立了一个文件“快捷方式”的图标。
实验2:创建目录类型的符号连接
输入:mklink /d d:\test d:\test1
回车,系统提示 “为 d:\test <<===>> d:\test1 创建的符号链接”,您在资源管理器中看到根目录建立了一个目录“快捷方式”的图标,双击它,会看到和d:\test1目录中相同的内容。
尝试编辑这个目录中的test1.txt,那么d:\test1\test1.txt也会发生同样的变化,反之亦然。那么删除d:\test,d:\test1会被删除吗?不会,因为vista都一些常用命令作出了修正,使之能够理解符号连接。除非使用了 /h创建硬连接,原有对象不会被删除,但出于某些原因,/h参数即便在管理员模式下也会提示拒绝访问。

  评论这张
 
阅读(83)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017