作者:陆麟
转载请征得作者同意.
2001.9.7
对于一个文件系统的文件对象,可以指定如下权限.
FILE_READ_DATA :读取数据
FILE_WRITE_DATA :写数据
FILE_APPEND_DATA :追加数据
FILE_READ_EA :读扩展属性
FILE_WRITE_EA :写扩展属性
FILE_EXECUTE :执行文件(用于创建SECTION对象)
FILE_READ_ATTRIBUTES :读文件属性
FILE_WRITE_ATTRIBUTES :写文件目录属性
SYNCHRONIZE :同步操作
DELETE :删除
READ_CONTROL :允许查询对象的安全设置,如果此位没设定,GetSecurityInfo等函数会返回出错.
WRITE_DAC :改变对象的安全设置
WRITE_OWNER :改变对象的拥有者.
这么多的文件访问选项, 并不需要我们记住,而且SDK中也没有这些访问权的定义. 因为NT的IOS(IO管理器)会自动为我们映射我们需要的权限. 我们在编程时只要记住GENERIC_READ,GENERIC_WRITE,GENERIC_EXECUTE.GENERIC_ALL,我们着重看一下GENERIC_类的定义, 因为这是我们最为常用的映射:
#define FILE_GENERIC_READ
(STANDARD_RIGHTS_READ |\
FILE_READ_DATA
|\
FILE_READ_ATTRIBUTES |\
FILE_READ_EA
|\
SYNCHRONIZE)
#define FILE_GENERIC_WRITE
(STANDARD_RIGHTS_WRITE |\
FILE_WRITE_DATA |\
FILE_WRITE_ATTRIBUTES |\
FILE_WRITE_EA
|\
FILE_APPEND_DATA |\
SYNCHRONIZE)
#define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE
|\
FILE_READ_ATTRIBUTES |\
FILE_EXECUTE
|\
SYNCHRONIZE)
文件系统对象的访问权扩展只是NT安全体系中的细小枝节. NT安全体系提供的是对各种对象的保护,包括用户/组的帐号,内核对象和EXECUTIVE对象.内核对象和EXECUTIVE对象包括如下内容:
DESKTOP,DEVICE,EVENT,EVENT PAIR,FILE,IO COMPLETION PORT, KEY, MUTEXT,
OBJECT DIRECTORY,PORT, PRINTER, PRINT JOB, PROCESS, PROFILE, SAM ALIAS,
SECTION, SEMAPHORE, SYMBOLIC LINK, THREAD,THREAD, TIMER, TOKEN, WORKSTAION.
这些东西可能对于很多朋友都很陌生, 我会在下一次进行解释.
好了, 今天这篇是WINNT/2000 Security programming brief的开场白, 讲的具体的东西过多了.
更详细的东西请看以后的文章哦.