SVN二次开发——让SVN、TSVN(TortoiseSVN)支持windows的访问控制模型、NTFS ADS (可选数据流、NTFS的安全属性)

 

SVN二次开发

——让SVN、TSVN(TortoiseSVN)支持windows的访问控制模型、NTFS ADS

(可选数据流、NTFS的安全属性)

SVN secondary development:Let svn(subversion),TSVN(TortoiseSVN) support NTFS ADS(NTFS alternate data streams), NTFS Security Properties(NTFS Security attributes,NTFS  Extended Attributes),Windows access control model

  前几年和北京的一家信息安全公司合作对svn1.6.16进行了二次开发,今天有时间在博客中概要的整理记录一下。

  Windows操作系统支持NTFS格式的文件系统,NTFS和FAT相比怎加了附加属性或叫扩展属性(NTFS  Extended Attributes),也称为:ADS(Alternate Data Streams, 可选数据流、附加数据流、交换数据流)、NTFS安全属性(NTFS Security Properties,NTFS Security attributes),NTFS是一个有安全性质的文件系统,除了windows操作系统支持的windows访问控制模型(Windows access control model)的安全属性外,客户还可利用ADS实现一些用户专门应用,如设置密级属性页,存放专门的保密数据等。然而,SVN(Subversion)不 支持NTFS的扩展属性(安全属性、ADS),这给使用扩展属性(安全属性、ADS)且又使用SVN的用户带来不便,限制了SVN的适用范围。前两年和北 京一家信息安全公司合作对svn1.6.16进行了二次开发,使之增加了对NTFS安全属性(即NTFS的扩展属性、NTFS ADS)的支持,大大方便了用户的使用,扩展了SVN的适用范围。

  subversion-1.6.16核心源代码26.7M,加上支撑环境源代码,编译后达407M,使之支持NTFS安全属性的二次开发涉及客 户端和服务端核心代码,工作量很大,收集的相关资料高达7G,项目的总体设计、详细设计、开发笔记等纸质文档就高达400多页,如果用博客把各个细节记录 下来,就要写成多集长篇了,因时间所限只能简单的整理成本文,它包含windows的访问控制模型、SVN的简介、二次开发的总体框图、SVN源代码分析 概要。有需要详细资料和支持NTFS扩展属性(NTFS安全属性)的SVN、TSVN网友请和我联 系:QQ:1561724180,0311-87024917.

一、windows的访问控制模型 (NTFS的安全属性)

  Windows NT的最初设计目标就是提供一个为操作系统提供安全实现的层,为它的对象实现安全保护,其实现方法是通过访问控制模型(Access Control Model)来实现的 。Windows访问控制模型是Windows安全性的基础构件。访问控制模型有两个主要的组成部分,访问令牌(Access Token)和安全描述符(SD:Security Descriptor),它们分别是访问者和被访问者拥有的东西。通过访问令牌和安全描述符的内容,Windows可以确定持有令牌的访问者能否访问持有 安全描述符的对象。

 访问令牌是与特定的Windows账户关联的。当一个Windows账户登录的时候,系统会从内部数据库里读取该账户的信息,然后使用这些信息生 成一个访问令牌。在该账户环境下启动的进程,都会获得这个令牌的一个副本,进程中的线程默认持有这个令牌。线程要想去访问某个对象,或者执行某些系统管理 相关的操作时,Windows就会使用这个线程持有的令牌进行访问检查。

  安全描述符是与被访问对象关联的,比如:文件、目录,它包含:

  • 版本号。
  • 这个对象所有者的OwnerSID和GroupSID(SID:Security IDentifiers)。
  • 自由访问控制列表DACL(Discretionary Access Control List),它包含由对象的所有者定义的对象访问控制项(ACE,Access Control Entry),每个访问控制项的内容描述了允许或拒绝特定账户对这个对象执行特定操作。
  • 系统访问控制列表SACL(System Access Control List,有时称为审核 ACE)是一种控制与资源关联的审核消息的机制。与DACL相似,SACL包含定义指定资源的审核规则的ACE。通过审核ACE,可以记录访问资源的成功 尝试或失败尝试,但与DACE不同的是,审核ACE不控制哪些账户可以使用某个资源。例如,可以创建一个ACE并将其应用于某个文件的SACL,以记录打 开该文件的所有成功尝试。
  • 还有其自身的一些控制位。

  该结构体在WRK中定义如下:

typedef struct _SECURITY_DESCRIPTOR {
    UCHAR Revision;
    UCHAR Sbz1;
    SECURITY_DESCRIPTOR_CONTROL Control;
    PSID Owner;
    PSID Group;
    PACL Sacl;
    PACL Dacl;
} SECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;

下图说明了,安全对象和DACL以及访问者之间的联系(来源于MSDN)。注意,DACL表中的每个ACE的顺序是有意义的,如果前面的Allow(或denied)ACE通过了,那么,系统就不会检查后面的ACE了。

windows的文件、目录的安全描述符SD保存在NTFS文件系统的扩展属性中,对于FAT文件系统因为不支持扩展属性,所以不能进行安全控制。如果你的操作系统是NTFS,那么,你可以看到你创建出来的文件的安全属性的样子。

 

 

<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值