ACCESSwindow权限 及c++实现 【网摘】(转)

from : http://blog.csdn.net/zipper9527/article/details/6256459

http://www.lihuasoft.net/article/show.php?id=755

http://www.360doc.com/content/07/0404/15/21275\_430071.shtml

 

坐程序的措施操纵NTFS 的公文权限

Windows NT/2K/XP版本的操作系统还支持 NTFS 格式的文件系统,这是一个发生平安性能的文件系统,你可经 Windows 的资源管理器来安对每个目录及 文件的用户访问权限。这里自己哪怕不针对 NTFS 的安全性展开描述了,我默认你针对 NTFS 的文件目录的安设置有矣迟早之问询。在此,我以向你介绍以  Windows 的 API 函数来操纵 NTFS 的文书权限。

一律、理论同术语

 

在Windows NT/2K?XP 下之目标,不自然是文件系统,还发出另外的片靶,如:进程、命名管道、打印机、网络共享、或是注册表等等,都好装用户访问权限。在  Windows 系统受到,其是因此一个康宁描述称( Security Descriptors )的构造来保存其权力的安信息,简称也 SD ,其以 Windows SDK中之结构名是“ SECURITY_DESCRIPTOR ”,这是包了安设置信息之结构体。一个康宁描述称包含以下信息:

一个安全标识符(Security identifiers) ,其标识了拖欠信息是何许人也目标的,也就是用于记录安全目标的 ID 。简称也: SID 。

一 单DACL ( Discretionary Access Control List ),其指出了同意和拒绝某用户或用户组的存取控制列表。 当一个历程要看安全目标,系统就是会检讨 DACL 来控制进程的访问权。如果一个对象没 DACL ,那么就是这目标是任何人都可有所了的访问权 限。

一个SACL ( System Access Control List ),其指出了以拖欠目标及之同一组存取方式(如,读、写、运行等)的存取控制权限细节之列表。还来那自己的片段操纵各项。

DACL和 SACL 构成了整存取控制列表 Access Control List ,简称 ACL , ACL 中的各国一样项,我们誉为 ACE ( Access Control Entry ), ACL 中的各个一个 ACE 。

 

我们的次第不用直接保护SD 这个组织,这个组织由网保障。我们只用使用 Windows  提供的相关的 API 函数来博并设置 SD 中之音讯就是执行了。不过这些 API 函数独生 Windows NT/2K/XP 才支撑。

 

康宁目标Securable Object 是装有 SD 的 Windows 的对象。所有的吃命名的 Windows 的靶子都是平安目标。一些并未命名的对象是高枕无忧目标,如:进程以及线程,也时有发生 安全描述符 SD 。在针对大部分的创建平安目标的操作中还得您传递一个 SD 的参数,如: CreateFile 和 CreateProcess 函数。另 外,Windows 还提供了同层层有关安全目标的安信息的存取函数,以供应你取得对象及之安康设置,或修改对象上之平安设置。 如:GetNamedSecurityInfo, SetNamedSecurityInfo , GetSecurityInfo, SetSecurityInfo 。

 

下图说明了,安全目标和DACL 以及访问者之间的维系(来源于 MSDN )。注意, DACL 表中之每个 ACE 的逐条是发含义的,如果前的 Allow(或 denied ) ACE 通过了,那么,系统就无见面检讨后的 ACE 了。

 

ACCESS 1

系会仍顺序依次检查有着的ACE 规则,如下面的尺码满足,则脱离:

1、 如果一个 Access-Denied 的 ACE 明显地不肯了请求者。

2、 如果某 Access-Allowed 的 ACE 明显地允许了请求者。

3、 全部的 ACE 都检查完毕了,但是没有同久 ACE 明显地允许或是拒绝请求者,那么网将祭默认值,拒绝请求者的访问。

复多之辩论和讲述,请参见MSDN 。

 

第二、实践以及例程

 

1、  例程一:创建一个发出权力设置的目

 

#include <windows.h>

 

void main(void)

{

  SECURITY_ATTRIBUTES sa;  //和文件有关的安康布局

  SECURITY_DESCRIPTOR sd;  //声明一个 SD

 

  BYTE aclBuffer[1024];

  PACL pacl=(PACL)&aclBuffer; //声明一个 ACL ,长度是 1024

 

  BYTE sidBuffer[100];

  PSID psid=(PSID) &sidBuffer;  //声明一个 SID ,长度是 100

 

  DWORD sidBufferSize = 100;

  char domainBuffer[80];

  DWORD domainBufferSize = 80;

  SID_NAME_USE snu;

  HANDLE file;

 

  //初始化一个 SD

  InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION);

  //初始化一个 ACL

  InitializeAcl(pacl, 1024, ACL_REVISION);

  //查找一个用户 hchen ,并赢得该用户的 SID

  LookupAccountName(0, “hchen”, psid,

      &sidBufferSize, domainBuffer,

      &domainBufferSize, &snu);

  //设置该用户的 Access-Allowed 的 ACE ,其权力为“所有权限”

AddAccessAllowedAce(pacl, ACL_REVISION, GENERIC_ALL, psid);

//把 ACL 设置到 SD 中

  SetSecurityDescriptorDacl(&sd, TRUE, pacl, FALSE);

 

  //把 SD 放到文件安全组织 SA 中

  sa.nLength = sizeof(SECURITY_ATTRIBUTES);

  sa.bInheritHandle = FALSE;

  sa.lpSecurityDescriptor = &sd;

 

  //创建文件

  file = CreateFile(“c://testfile”,

    0, 0, &sa, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);

  CloseHandle(file);

}

 

 

旋即 单例证我是于网上查找来的,改了改变。其中以及之最主要之API 函数,我还把那个加以多少了。从程序中我们可见到,我们先初始化了一个 SD 和一个 ACL,然后调用  LookupAccountName 取得用户的 SID ,然后通过这个 SID ,对 ACL 中加入一个出允许看权限的 ACE ,然后还管全部 ACL 设置及SD  中。最后,组织文件安全描述的 SA 结构,并调用 CreateFile 创建文件。如果你的操作系统是 NTFS ,那么,你得观看您创造出来的文件的安全属性 的典范:

 

ACCESS 2

 

是次旨在认证如何好成一个初的SD 和 ACL 的用法,其发生四单地方的欠缺与非根本:

 

1、 对于 ACL 和 SID 的宣示采用了硬编码的方指定其长。

2、 对于 API 函数,没有错处理。

3、 没有证明如何改就起文件或者目录的平安设置。

4、 没有征安全设置的继承性。

 

对此这些自将在生单例程中讲述。

 

2、  例程二、为目录增加一个安康设置项

 

以本人把这例程序例出来以前,请允许我多说一下。

 

1、  对于文本、目录、命令管道,我们无肯定要采取 GetNamedSecurityInfo 和 SetNamedSecurityInfo 函数,我们得使用那 专用函数 GetFileSecurity和 SetFileSecurity 函数来赢得要设置文件对象的 SD ,以安其访问权限。需要采取即时半单函数并无容 易,正使前方我们所说之,我们还欲处理 SD参数,要拍卖 SD ,就待处理 DACL 和 ACE ,以及用户的有关 SID ,于是,一系列的函数就为立即有限独函数 带出来了。

2、  对于达一个例子中之运硬编码指定 SID 的处理方法是。调用 LookupAccountName 函数时,先将 SID , Domain 名的参数传为空  NULL ,于是 LookupAccountName 会返回用户的 SID 的尺寸及 Domain 名的长短,于是你得因这个长度分配内存,然后还调用  LookupAccountName 函数。于是便好直达到态分配内存的力量。对于 ACL 也一样。

3、  对于让文件之 ACL 中追加一个 ACE 条目,一般的做法是事先取出文件及之 ACL ,逐条取出 ACE ,和现需要多的 ACE 比较,如果起冲突,则去已有些  ACE ,把新加底 ACE 添置到结尾。这里的最终,应该是非继承而来的 ACE 的终极。关于 ACL 继承, NTFS 中,你可装文件和目录是否继续给那个父目录 的装。在次中同可装。

要么要看例程,这个顺序于长,来源于MSDN ,我举行了一点点改,并把自己之理解加于诠释中,所以,请留心代码中的诠释:

#include <windows.h>

#include <tchar.h>

#include <stdio.h>

//使用 Windows 的 HeapAlloc 函数进行动态内存分配

#define myheapalloc(x) (HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, x))

#define myheapfree(x) (HeapFree(GetProcessHeap(), 0, x))

typedef BOOL (WINAPI *SetSecurityDescriptorControlFnPtr)(

  IN PSECURITY_DESCRIPTOR pSecurityDescriptor,

  IN SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest,

  IN SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet);

typedef BOOL (WINAPI *AddAccessAllowedAceExFnPtr)(

 PACL pAcl,

 DWORD dwAceRevision,

 DWORD AceFlags,

 DWORD AccessMask,

 PSID pSid

);

BOOL AddAccessRights(TCHAR *lpszFileName, TCHAR *lpszAccountName,

   DWORD dwAccessMask) {

  // 声明 SID 变量

  SID_NAME_USE  snuType;

  // 声明与 LookupAccountName 相关的变量(注意,全否 0 ,要于次中动态分配)

  TCHAR *    szDomain    = NULL;

  DWORD     cbDomain    = 0;

  LPVOID     pUserSID    = NULL;

  DWORD     cbUserSID   = 0;

  // 和文件有关的安康描述符  SD  的变量

  PSECURITY_DESCRIPTOR pFileSD = NULL;   // 结构变量

  DWORD     cbFileSD    = 0;    // SD的 size

  // 一个新的 SD 的变量,用于组织新的 ACL (把已经有的 ACL 和用新加底 ACL 整合起来)

  SECURITY_DESCRIPTOR newSD;

  // 和 ACL  相关的变量

  PACL      pACL      = NULL;

  BOOL      fDaclPresent;

  BOOL      fDaclDefaulted;

  ACL_SIZE_INFORMATION AclInfo;

  // 一个初的  ACL  变量

  PACL      pNewACL    = NULL; //结构指针变量

  DWORD     cbNewACL    = 0;   //ACL的 size

  // 一个现用的  ACE  变量

  LPVOID     pTempAce    = NULL;

  UINT      CurrentAceIndex = 0; //ACE在 ACL 中之职位

  UINT      newAceIndex = 0; //新添的 ACE 在 ACL 中之职

  //API函数的归来值,假设有的函数都回到失败。

  BOOL      fResult;

  BOOL      fAPISuccess;

  SECURITY_INFORMATION secInfo = DACL_SECURITY_INFORMATION;

  // 下面的有数只函数是初的 API 函数,仅于 Windows 2000 以上版本的操作系统支持。

  // 在是以自 Advapi32.dll 文件中动态载入。如果你用 VC++ 6.0 编译程序,而且若想

  // 使用就简单单函数的静态链接。则呼吁也公的编译加上: /D_WIN32_WINNT=0x0500

  // 的编译参数。并且保证您的 SDK 的腔文件与 lib 文件是风靡的。

  SetSecurityDescriptorControlFnPtr _SetSecurityDescriptorControl = NULL;

  AddAccessAllowedAceExFnPtr _AddAccessAllowedAceEx = NULL;

  __try {

   //

   // STEP 1: 通过用户称博 SID

   //   在这同样步着 LookupAccountName 函数被调用了个别不好,第一不好是取出所需要

   // 的内存的高低,然后,进行内存分配。第二不善调整用才是获得了用户之项户信息。

   // LookupAccountName同样可取得域用户可能用户组的信息。(请参考 MSDN )

   //

   fAPISuccess = LookupAccountName(NULL, lpszAccountName,

      pUserSID, &cbUserSID, szDomain, &cbDomain, &snuType);

   // 以上调用 API 会失败,失败原因是内存不足。并把所需要的内存大小传出。

   // 下面是拍卖不内存不足的错误。

   if (fAPISuccess)

     __leave;

   else if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) {

     _tprintf(TEXT(“LookupAccountName() failed. Error %d/n”),

        GetLastError());

     __leave;

   }

   pUserSID = myheapalloc(cbUserSID);

   if (!pUserSID) {

     _tprintf(TEXT(“HeapAlloc() failed. Error %d/n”), GetLastError());

     __leave;

   }

   szDomain = (TCHAR *) myheapalloc(cbDomain * sizeof(TCHAR));

   if (!szDomain) {

     _tprintf(TEXT(“HeapAlloc() failed. Error %d/n”), GetLastError());

     __leave;

   }

   fAPISuccess = LookupAccountName(NULL, lpszAccountName,

      pUserSID, &cbUserSID, szDomain, &cbDomain, &snuType);

   if (!fAPISuccess) {

     _tprintf(TEXT(“LookupAccountName() failed. Error %d/n”),

        GetLastError());

     __leave;

   }

   //

   // STEP 2: 取得文件(目录)相关的平安描述符 SD

   //   使用 GetFileSecurity 函数取得一致份文件 SD 的正片,同样,这个函数也

    // 是被调用两不良,第一不良同是取 SD 的内存长度。注意, SD 有一定量种植格式:自相关的

    // ( self-relative )和 完全的( absolute ), GetFileSecurity 只能落到“自

    // 相关的”,而 SetFileSecurity 则用了的。这就是是为何要一个新的 SD ,

    // 而不是一直以 GetFileSecurity 返回的 SD 上进展修改。因为“自有关的”信息

    // 是无整的。

   fAPISuccess = GetFileSecurity(lpszFileName,

      secInfo, pFileSD, 0, &cbFileSD);

   // 以上调用 API 会失败,失败原因是内存不足。并拿所急需之内存大小传出。

   // 下面是处理不内存不足的缪。

   if (fAPISuccess)

     __leave;

   else if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) {

     _tprintf(TEXT(“GetFileSecurity() failed. Error %d/n”),

        GetLastError());

     __leave;

   }

   pFileSD = myheapalloc(cbFileSD);

   if (!pFileSD) {

     _tprintf(TEXT(“HeapAlloc() failed. Error %d/n”), GetLastError());

     __leave;

   }

   fAPISuccess = GetFileSecurity(lpszFileName,

      secInfo, pFileSD, cbFileSD, &cbFileSD);

   if (!fAPISuccess) {

     _tprintf(TEXT(“GetFileSecurity() failed. Error %d/n”),

        GetLastError());

     __leave;

   }

   //

   // STEP 3: 初始化一个新的 SD

   //

   if (!InitializeSecurityDescriptor(&newSD,

      SECURITY_DESCRIPTOR_REVISION)) {

     _tprintf(TEXT(“InitializeSecurityDescriptor() failed.”)

      TEXT(“Error %d/n”), GetLastError());

     __leave;

   }

   //

   // STEP 4: 从 GetFileSecurity  返回的 SD 中取 DACL

   //

   if (!GetSecurityDescriptorDacl(pFileSD, &fDaclPresent, &pACL,

      &fDaclDefaulted)) {

     _tprintf(TEXT(“GetSecurityDescriptorDacl() failed. Error %d/n”),

        GetLastError());

     __leave;

   }

   //

   // STEP 5: 取  DACL 的内存 size

   //   GetAclInformation可以提供 DACL 的内存大小。只传入一个种也

   // ACL_SIZE_INFORMATION的 structure 的参数,需 DACL 的信息,是为了

   // 方便我们遍历其中的 ACE 。

   AclInfo.AceCount = 0; // Assume NULL DACL.

   AclInfo.AclBytesFree = 0;

   AclInfo.AclBytesInUse = sizeof(ACL);

   if (pACL == NULL)

     fDaclPresent = FALSE;

   // 如果 DACL 不呢空,则赢得其消息。(大多数景下“自干”的 DACL 为空)

   if (fDaclPresent) {      

     if (!GetAclInformation(pACL, &AclInfo,

        sizeof(ACL_SIZE_INFORMATION), AclSizeInformation)) {

      _tprintf(TEXT(“GetAclInformation() failed. Error %d/n”),

         GetLastError());

      __leave;

     }

   }

   //

   // STEP 6: 计算新的 ACL 的 size

   //  计算的公式是:原有的 DACL 的 size 加上要加上的一个 ACE 的 size ,以

   // 及增长一个暨 ACE 相关的 SID 的 size ,最后减去两独字节以赢得纯粹的大大小小。

   cbNewACL = AclInfo.AclBytesInUse + sizeof(ACCESS_ALLOWED_ACE)

      + GetLengthSid(pUserSID) – sizeof(DWORD);

   //

   // STEP 7: 为新的 ACL 分配内存

   //

   pNewACL = (PACL) myheapalloc(cbNewACL);

   if (!pNewACL) {

     _tprintf(TEXT(“HeapAlloc() failed. Error %d/n”), GetLastError());

     __leave;

   }

   //

   // STEP 8: 初始化新的 ACL 结构

   //

   if (!InitializeAcl(pNewACL, cbNewACL, ACL_REVISION2)) {

     _tprintf(TEXT(“InitializeAcl() failed. Error %d/n”),

        GetLastError());

     __leave;

   }

   //

   // STEP 9 比方文件(目录)  DACL  有数据,拷贝其中的 ACE 到新的 DACL 中

   //

   //   下面的代码假设首先检查指定文件(目录)是否留存的 DACL ,如果有的话,

   // 那么就是拷贝所有的 ACE 到新的 DACL 结构面临,我们好观看其遍历的道是以

   // ACL_SIZE_INFORMATION结构面临的 AceCount 成员来成功的。在此轮回中,

   // 会按照默认的 ACE 的逐一来进行拷贝( ACE 于 ACL 中之一一是生重大的),在拷

   // 贝过程中,先拷贝非继承的 ACE (我们领略 ACE 会从上层目录中连续下去)

   //

   newAceIndex = 0;

   if (fDaclPresent && AclInfo.AceCount) {

     for (CurrentAceIndex = 0;

        CurrentAceIndex < AclInfo.AceCount;

        CurrentAceIndex++) {

      //

      // STEP 10: 从 DACL 中取 ACE

      //

      if (!GetAce(pACL, CurrentAceIndex, &pTempAce)) {

        _tprintf(TEXT(“GetAce() failed. Error %d/n”),

           GetLastError());

        __leave;

      }

      //

      // STEP 11: 检查是不是是非继承的 ACE

      //   如果手上之 ACE 是一个于父目录继承来的 ACE ,那么即便退出循环。

      // 因为,继承的 ACE 总是以非继承的 ACE 之后,而我们所假设抬高的 ACE

      // 应该当既部分非继承的 ACE 之后,所有的存续的 ACE 之前。退出循环

      // 正是为要增补加一个初的 ACE 到新的 DACL 中,这晚,我们再度将后续的

      // ACE拷贝到新的 DACL 中。

      //

      if (((ACCESS_ALLOWED_ACE *)pTempAce)->Header.AceFlags

        & INHERITED_ACE)

        break;

      //

      // STEP 12: 检查如果拷贝的 ACE 的 SID 是否与要参加的 ACE 的 SID 一样,

      // 如果相同,那么就算相应废掉已存在的 ACE ,也就是说,同一个用户的存取

      // 权限的装置的 ACE ,在 DACL 中应当唯一。这在里,跳了针对性平用户已经设置

      // 了底 ACE ,仅是拷贝其它用户的 ACE 。

      //

      if (EqualSid(pUserSID,

        &(((ACCESS_ALLOWED_ACE *)pTempAce)->SidStart)))

        continue;

      //

      // STEP 13: 把 ACE 加入到新的 DACL 中

      //  下面的代码中,注意  AddAce  函数的老三个参数,这个参数的意思是

      // ACL中的索引值,意呢使管 ACE 加到某索引位置然后,参数 MAXDWORD 的

       // 意思是保当前底 ACE 是深受加入到最终的职务。

      //

      if (!AddAce(pNewACL, ACL_REVISION, MAXDWORD, pTempAce,

         ((PACE_HEADER) pTempAce)->AceSize)) {

        _tprintf(TEXT(“AddAce() failed. Error %d/n”),

           GetLastError());

        __leave;

      }

      newAceIndex++;

     }

   }

 

  //

  // STEP 14: 把一个  access-allowed  的 ACE  加入到新的 DACL 中

  //   前面的大循环拷贝了颇具的非继承且 SID 为任何用户的 ACE ,退出循环的首先码事

  // 就是在我们指定的 ACE 。请留意首先先动态装载了一个 AddAccessAllowedAceEx

  // 的 API 函数,如果装载不成功,就调用 AddAccessAllowedAce 函数。前一个函数仅

  // 以 Windows 2000 以后的本子支持, NT 则从未,我们以利用新本子的函数,我们首

  // 先事先检查一下当前系统受到可是免得以装这个函数,如果可以尽管就是利用。使用动态链接

  // 比使用静态链接的补益是,程序运行时无会见盖无这 API 函数而报错。

  //

  // Ex版的函数多生了一个参数 AceFlag (第三人参数),用是参数我们得以来安同样

  // 个叫 ACE_HEADER 的布局,以便为咱们所设置的 ACE 可以给其子目录所累下来,而

  // AddAccessAllowedAce函数不可知定制者参数,在 AddAccessAllowedAce 函数

  // 中,其会把 ACE_HEADER 这个结构安装成非继承的。

  //

   _AddAccessAllowedAceEx = (AddAccessAllowedAceExFnPtr)

      GetProcAddress(GetModuleHandle(TEXT(“advapi32.dll”)),

      “AddAccessAllowedAceEx”);

   if (_AddAccessAllowedAceEx) {

      if (!_AddAccessAllowedAceEx(pNewACL, ACL_REVISION2,

       CONTAINER_INHERIT_ACE | OBJECT_INHERIT_ACE ,

        dwAccessMask, pUserSID)) {

       _tprintf(TEXT(“AddAccessAllowedAceEx() failed. Error %d/n”),

          GetLastError());

       __leave;

     }

   }else{

     if (!AddAccessAllowedAce(pNewACL, ACL_REVISION2,

        dwAccessMask, pUserSID)) {

       _tprintf(TEXT(“AddAccessAllowedAce() failed. Error %d/n”),

          GetLastError());

       __leave;

     }

   }

   //

   // STEP 15: 按照已是的 ACE 的各个拷贝从父目录继承而来之 ACE

   //

   if (fDaclPresent && AclInfo.AceCount) {

     for (;

       CurrentAceIndex < AclInfo.AceCount;

       CurrentAceIndex++) {

      //

      // STEP 16: 从文本(目录)的 DACL 中继承取 ACE

      //

      if (!GetAce(pACL, CurrentAceIndex, &pTempAce)) {

        _tprintf(TEXT(“GetAce() failed. Error %d/n”),

           GetLastError());

        __leave;

      }

      //

      // STEP 17: 把 ACE 加入到新的 DACL 中

      //

      if (!AddAce(pNewACL, ACL_REVISION, MAXDWORD, pTempAce,

         ((PACE_HEADER) pTempAce)->AceSize)) {

        _tprintf(TEXT(“AddAce() failed. Error %d/n”),

           GetLastError());

        __leave;

      }

     }

   }

   //

   // STEP 18: 把新的 ACL 设置及新的 SD 中

   //

   if (!SetSecurityDescriptorDacl(&newSD, TRUE, pNewACL,

      FALSE)) {

     _tprintf(TEXT(“SetSecurityDescriptorDacl() failed. Error %d/n”),

        GetLastError());

     __leave;

   }

   //

   // STEP 19: 把一直的 SD 中的支配标记再拷贝到新的 SD 中,我们利用的凡一个为

   // SetSecurityDescriptorControl() 的 API 函数,这个函数同样只有设有让

   // Windows 2000后头的本子被,所以我们还是如动态地拿该由 advapi32.dll

   // 中载入,如果系统非支持之函数,那即便无拷贝老的 SD 的支配标记了。

   //

   _SetSecurityDescriptorControl =(SetSecurityDescriptorControlFnPtr)

      GetProcAddress(GetModuleHandle(TEXT(“advapi32.dll”)),

      “SetSecurityDescriptorControl”);

   if (_SetSecurityDescriptorControl) {

     SECURITY_DESCRIPTOR_CONTROL controlBitsOfInterest = 0;

     SECURITY_DESCRIPTOR_CONTROL controlBitsToSet = 0;

     SECURITY_DESCRIPTOR_CONTROL oldControlBits = 0;

     DWORD dwRevision = 0;

     if (!GetSecurityDescriptorControl(pFileSD, &oldControlBits,

      &dwRevision)) {

      _tprintf(TEXT(“GetSecurityDescriptorControl() failed.”)

         TEXT(“Error %d/n”), GetLastError());

      __leave;

     }

     if (oldControlBits & SE_DACL_AUTO_INHERITED) {

      controlBitsOfInterest =

        SE_DACL_AUTO_INHERIT_REQ |

        SE_DACL_AUTO_INHERITED ;

      controlBitsToSet = controlBitsOfInterest;

     }

     else if (oldControlBits & SE_DACL_PROTECTED) {

      controlBitsOfInterest = SE_DACL_PROTECTED;

      controlBitsToSet = controlBitsOfInterest;

     }    

     if (controlBitsOfInterest) {

      if (!_SetSecurityDescriptorControl(&newSD,

        controlBitsOfInterest,

        controlBitsToSet)) {

        _tprintf(TEXT(“SetSecurityDescriptorControl() failed.”)

           TEXT(“Error %d/n”), GetLastError());

        __leave;

      }

     }

   }

   //

   // STEP 20: 把新的 SD 设置设置及文件之安性能被(千山万水啊,终于到了)

   //

   if (!SetFileSecurity(lpszFileName, secInfo,

      &newSD)) {

     _tprintf(TEXT(“SetFileSecurity() failed. Error %d/n”),

        GetLastError());

     __leave;

   }

   fResult = TRUE;

  } __finally {

   //

   // STEP 21: 释放已分配的内存,以免 Memory Leak

   //

   if (pUserSID) myheapfree(pUserSID);

   if (szDomain) myheapfree(szDomain);

   if (pFileSD) myheapfree(pFileSD);

   if (pNewACL) myheapfree(pNewACL);

  }

  return fResult;

}


int _tmain(int argc, TCHAR *argv[]) {

  if (argc < 3) {

   _tprintf(TEXT(“usage: /”%s/” <FileName> <AccountName>/n”), argv[0]);

   return 1;

  }

  // argv[1] – 文件(目录)名

  // argv[2] – 用户(组)名

  // GENERIC_ALL表示拥有的权限,其是均等多元之 NTFS 权限的或者

  //   NTFS的文书权限很细,还呼吁参见 MSDN 。

  if (!AddAccessRights(argv[1], argv[2], GENERIC_ALL)) {

   _tprintf(TEXT(“AddAccessRights() failed./n”));

   return 1;

  }

  else {

   _tprintf(TEXT(“AddAccessRights() succeeded./n”));

   return 0;

  }

}

 

老三、 一些系的API 函数

 

由此上述之以身作则,相信您都掌握怎么样操作NTFS 文件安全性能了,还有有 API 函数需要介绍一下。

1、 如果你而进入一个 Access-Denied  的 ACE ,你得下 AddAccessDeniedAce 函数

2、 如果你只要抹一个 ACE ,你可使用 DeleteAce 函数

3、 如果你若检查你所设置的 ACL 是否合法,你可以采用 IsValidAcl 函数,同样,对于 SD 的合法呢出一个让 IsValidSecurityDescriptor 的函数

 

Windows XP权限整合使用全解

一经如去除某个用户对加密文件之拜访权限,那么单纯待选中此用户后点击“删除”按钮即可。作为 微软  第 一个安静且安全之操作系统,Windows XP 经过几年的磨合过渡期,终于因跨越 Windows 系列操作系统 50% 的用户占有量成为当下用户以最多之操作系统。在慢慢熟悉了 Windows XP 后,人们日益开始不满足基本的系以了,他们越来越渴望上学有较深刻且实用的知识,以便能叫系统充分发挥出 Windows XP 的高级性能。

  因此本文为Windows XP Professional 版本也平台,引领大家感受一下 Windows XP 在“权限”方面的宏图魅力!

  一、什么是权

  Windows XP 提供了很细心的权决定项,能够准确定制用户指向资源的访问控制能力,大多数之权位由其名及就得着力了解其所能够实现的情节。

   “权限”(Permission) 是针对资源而言的。也就是说,设置权限只能是因资源也目标,即“设置有文件夹出怎样用户可拥有相应的权柄”,而未 能是坐用户为主,即“设置有用户可本着安资源有权力”。这就算象征“权限”必须对“资源”而言,脱离了资源去谈权限毫无意义──在涉权限的求实 实施时,“某个资源”是必在的。

  以权力可以控制资源给看的法,如User 组的积极分子对某个资源有“读取”操作权限、 Administrators 组成员有“读取 + 写副 + 删除”操作权限等。

   值得一提的是,有部分Windows 用户往往会将“权力”与“权限”两个老相像之定义将混淆,这里举行一下简说明:“权力” (Right) 主要是针对性 用户而言的。“权力”通常含“登录权力” (Logon Right) 和“特权” (Privilege) 两种植。登录权力决定了用户如何登录到计算机,如是否采用地面交互式登录、是否也网络签到等。特权则是一样多样 权力之总称,这些权力要用以帮助用户对系统进行管制,如是否同意用户设置或加载驱动程序等。显然,权力和权力有精神上之分。

  二、安全标识符、访问控制列表、安全主体

   说及Windows XP 的权力,就必须说说“安全标识符” (Security Identifier, SID) 、“访问控制列表” (Access Control List , ACL) 和安全重点(Security Principal) 这三只同该有关的设计了。

  1. 康宁标识符

  在 Windows XP 中,系统是由此 SID 对用户展开认识别的,而不是诸多用户认为的“用户称”。 SID 可以采用被系统内的有用户、组、服务或微机,因为 SID 是一个 具有惟一性、绝对不见面再次发生的数值,所以,在去了一个账户 ( 如名为“ A ”的账户 ) 后,再次创造是“ A ”账户时,前一个 A 与继一个 A 账户的 SID 是不 相同的。这种计划使得账户的权得到了无以复加基础之护,盗用权限的景吧即根本杜绝了。

  查看用户、组、服务或者算机 的SID 值,可以使“ Whoami ”工具来实施,该工具包含在 Windows XP 安装光盘的“ Support/Tools ”目录中,双击执行该目录下的“ Setup ”文件后,将会见生出囊括 Whoami 工具在内的同等文山会海命令行工具拷贝 到“ X:/Program Files/Support Tools ”目录中。此后以自由一个命令提示符窗口被还好履“ Whoami /all ”命令来查时用户之周信。

  2. 访问控制列表 (ACL)

  访问控制列表是权的核心技术。顾名思义,这是一个权力列表,用于定义特定用户指向有资源的造访权限,实际上就就算是Windows XP 对资源开展保障时所用的一个业内。

   在访问控制列表中,每一个用户还是用户组都对应一组访问控制项(Access Control Entry, ACE) ,这等同接触只是待在“组要用户称”列表中选取不同之用户要组时,通过下方的权列表设置项是不同的立刻或多或少就可以看出来。显然,所有用户还是用户组的且 限访问设置都拿会晤以此间为储存下来,并允许随时被出权力进行改动的用户展开调整,如取消某个用户对某个资源的“写副”权限。

  3. 安康主体 (Security Principal)

  在Windows XP 中,可以以用户、用户组、计算机还是服务都看成是一个安主体,每个安全中心都富有相对应的账户名称和 SID 。根据网架构的差,账户的军事管制章程吗截然不同──本地账户为地面的 SAM 管理;域的账户则会吃活动目录进行管理……

  一般的话,权限的差过程实际上就是是吧某资源指定安全主体( 即用户、用户组等 ) 可以拥有什么样的操作过程。因为用户组包括多单用户,所以大部分状况下,为资源使权限时建议以用户组来完成,这样好十分有利于地形成联合保管。

  三、权限的季宗核心原则

  在Windows XP 中,针对权限的田间管理有四码骨干条件,即:拒绝优于允许标准、权限太小化原则、累加标准化和权限继承性原则。这四桩核心尺度于权力的设置来说,将会从至特别重大之意向,下面就来了解一下:

  1. 驳回优于允许标准

   “拒绝优于允许”原则是一模一样漫漫好关键且基础性的规则,它好挺全面地拍卖好为用户以用户组的名下方面引起的权力“纠纷”,例如,“shyzhong ” 这个用户既属于“ shyzhongs ”用户组,也属于“ xhxs ”用户组,当我们针对“ xhxs ”组中某个资源开展“写副”权限的汇集分配( 即针对用户组进 行 ) 时,这个时候该组中的“ shyzhong ”账户将机关拥有“写副”的权力。

  但让人奇怪的是, “shyzhong ”账户明明有对之资源的“写副”权限,为什么实际操作中可力不从心履行为?原来,在“ shyzhongs ”组中同样也本着 “ shyzhong ”用户进行了针对这个资源的权限设置,但设置的权杖是“拒绝写副”。基于“拒绝优于允许”的规格,“ shyzhong ”在 “ shyzhongs”组中被 “拒绝写副”的权将优先为“ xhxs ”组中被与的兴“写副”权限被实施。因此,在实际操作中,“ shyzhong ”用户无法对这资源进行“写副” 操作。

  2. 权力太小化原则

  Windows XP 将“保持用户最好小的权位”作为一个核心原则开展实践,这一点凡好有必要之。这漫长准得以保证资源得到最充分的安保持。这条原则得以不择手段给用户不可知顾还是不必要看的资源得到实惠之权限赋予限制。

   基于这漫长原则,在实质上的权能赋予操作中,我们不怕非得也资源明显予以允许或拒绝操作的权杖。例如系统受到新建的受限用户“shyzhong ”在默认状态下对 “ DOC ”目录是没有另外权力的,现在内需为者用户给对“ DOC ”目录有“读取”的权位,那么即使不能不在“ DOC ”目录的权杖列表中呢 “ shyzhong ”用户增长“读取”权限。

  3. 权继承性原则

  权限 继承性原则得以给资源的权杖设置变得愈加简约。假设本生个“DOC ”目录,在是目录中出“ DOC01 ”、“ DOC02 ”、“ DOC03”等子目录,现 在用针对 DOC 目录及其下之子目录均设置“ shyzhong ”用户有“写副”权限。因为发继承性原则,所以只是待对“ DOC ”目录设置“shyzhong ” 用户有“写副”权限,其下之所有子目录将机关连续这个权力的安。

  4. 丰富原则

  这个标准于好理解,假要现在“zhong ”用户既属于“ A ”用户组,也属于“ B ”用户组,它以 A 用户组的权位是“读取”,在“ B ”用户组中的权杖是“写副”,那么根据累加标准,“ zhong ”用户之实在权力将会晤是“读取 + 写副”两栽。

  显然,“拒绝优于允许”原则是用来缓解权力设置上的撞问题的;“权限太小化”原则是用于维持资源安全的;“权限继承性”原则是用以“自动化”执行权设置的;而“累加原则”则是吃权力的设置更灵活多变。几单标准各有所用,缺少哪一样宗都见面让权力的安装带来多麻烦!

   注意:在Windows XP 中,“ Administrators ”组的浑成员都装有“取得所有者身份” (Take Ownership) 的权能,也不怕是管理员组的分子好自其他用户手中“夺取”其地位的权限,例如受限用户“ shyzhong ”建立了一个 DOC 目录,并 只与自己所有读取权力,这好像完美的权设置,实际上,“ Administrators ”组的满贯分子用得以通过“夺取所有权”等办法获得此权力。

  四、资源权限高级应用

  因文件以及公事夹的权为条例,依据是否为共享到网络上,其权力可以分为NTFS 权限和共享权限有限种,这半栽权限既可独立采取,也可以相辅使用。两者之间既能够相互制约,也得以相互加。下面来探视哪些开展安装:

  1.NTFS 权限

  首先我们只要清楚:只要是有NTFS 磁盘分区上的文本夹或文件,无论是否给共享,都备这个权限。此权限对使用 FAT16/FAT32 文件系统的文书与公事夹无效!

  NTFS 权限有点儿良要素:一是正经看权限;二凡是特地看权限。前者以片常用的系统权限选项比较含糊地组成 6 栽“套餐型”的权能,即:完全控制、修改、读取和周转、列有文件夹目录、读取、写副。

   于大多数底状况下,“标准权限”是好满足管理亟待之,但对于权力管理要求严的条件,它往往就非能够使得管理员等满意了,如只是想给某用户发建文件夹的 权限,却并未起文件之权限;如不得不去当前目录中的文本,却不可知去当前目录中之子目录的权力等……这个时候,就得叫拥有富有权限选项之“特别权力” 来一试身手了。也就是说,特别权力不再行使“套餐型”,而是用可以允许用户进行“菜单型”的细节化权限管理选择了。

  那么什么样设置专业看权限呢?以对一个于NTFS 分区中之叫也“ zhiguo ”的文本夹进行安装标准看权限为例,可以随如下方法进行操作:

   因为NTFS 权限需要在资源属性页面的“安全”选项卡安装界面被展开,而 Windows XP 在设置后默认状态下是没有激活“安全”选项卡安装功能的,所以待首先启用系统遭到之“安全”选项卡。方法是:依次点击“开始”→“设置”→“控制面 板”,双击“文件夹选项”,在“查看”标签页设置界面及之“高级设置”选项列表中消除“使用简便文件共享 ( 推荐 ) ”选项前的复选框后点击“应用”按钮即 可。

  设置结束后即好右键点击“zhiguo ”文件夹,在弹出的全速菜单中选择“共享以及安全”,在“ zhiguo  属性”窗口中就可以看见“安全”选项卡的存了。针对资源拓展 NTFS 权限设置就是经者选项卡来促成的,此时答应首先以“组要用户称”列表中甄选得 赋予权力的用户名组 ( 这里选择“ zhong ”用户 ) ,接着在凡间的“ zhong  的权杖”列表中安该用户可有的权力即可。

  下面简单解释一下六只权力选项的意思:

  ①净控制(Full Control) :该权限允许用户对文件夹、子文件夹、文件进行全权控制,如修改资源的权柄、获取资源的主人、删除资源的权等,拥有完全控制权限就等所有了其余所有的权位;

  ②改动(Modify) :该权限允许用户改要删除资源,同时给用户有写入及读取和运转权限;

  ③念博以及周转(Read & Execute) :该权限允许用户所有读取和列出资源目录的权力,另外呢同意用户在资源中开展活动及遍历,这让用户会一直访问子文件夹和公事,即使用户并未权限访问这路;

  ④排列有文件夹目录(List Folder Contents) :该权限允许用户查看资源遭到之子文件夹和文件名称;

  ⑤诵读博(Read) :该权限允许用户查看该公文夹着的文本以及子文件夹,也同意查看该公文夹的性质、所有者和有的权等;

  ⑥状副(Write) :该权限允许用户在该公文夹着创造新的文书和子文件夹,也可以改变文件夹的习性、查看文件夹的持有者和权杖等。

   如果在“组要用户称”列表中无所待的用户要组,那么就得进行相应的增长操作了,方法如下:点击“添加”按钮后,在产出的“选择用户和组”对话框 中,既好直接当“输入对象名称来选”文本区域受到输入用户或组的名( 使用“计算机名 / 用户名”这种措施 ) ,也足以点击“高级”按钮,在弹出的对话框中 点击“立即搜索”按钮让系统列出当前网遭到负有的用户组和用户称列表。此时再次双击选择所要用户要组用那个在即可。如图 2 所示。

   如果想去某个用户组或用户来说,只需要在“组要用户称”列表中当选相应的用户还是用户组后,点击下方的“删除”按钮即可。但骨子里,这种去并无克管 被删去的用户要用户组被驳回访问某个资源,因此,如果期望拒绝某个用户还是用户组访问某个资源,还要以“组要用户称”列表中挑选相应的用户名用户组后,为 其选中下方的“拒绝”复选框即可。

  那么哪些设置非常权限呢?假设现在亟需对一个号称也“zhiguo ”的目录赋予 “ zhong ”用户指向那颇具“读取”、“建立文件及目录”的权能,基于安全考虑,又操收回该账户的“删除”权限。此时,如果下“标准权限”的话,将无 法完成要求,而使用专门权力则可非常轻松地就安装。

   首先,右键点击“zhiguo ”目录,在右键快捷菜单中选择“共享与安全”项,随后以“安全”选项卡安装界面被当选“ zhong ”用户并点击下方的“高 级”按钮,在弹出的对话框中点击清空“从父项继承那些可以使到子对象的权杖项目,包括那些当是强烈概念之花色”项选中状态,这样可以断开当前权限设置与 父级权限设置前的延续关系。在就弹出的“安全”对话框中点击“复制”或“删除”按钮后 ( 点击“复制”按钮可以率先复制继承的父级权限设置,然后再断开 继承关系 ) ,接着点击“应用”按钮确认设置,再选择着“ zhong ”用户并点击“编辑”按钮,在弹出的“ zhong 的权位项目”对话框中要首先点击“全部清 除”按钮,接着在“权限”列表中精选“遍历文件夹 / 运行文件”、“列出文件夹 / 读取数据”、“读取属性”、“创建文件 / 写副数据”、“创建文件夹 / 附加数 据”、“读取权限”几项,最后点击“确定”按钮结束设置。

  在通过上述设置后,“zhong ”用户在针对“ zhiguo ”进行删减操作时,就会弹有提示框警告操作不能够打响之唤醒了。显然,相对于专业看权限设置上之暧昧,特别看权限则可实现又有血有肉、全面、精确的权设置。

  为了大家又好地亮非常权限列表中的权限含义,以便做出还准的权杖设置,下面简单解释一下其意思:

   ⑴遍历文件夹/ 运行文件 (Traverse Folder/Execute File) :该权限允许用户以文书夹和其子文件夹之间活动 ( 遍历 ) ,即使这些文件夹本身并未看权限。注意:只有当当“组策略”中 ( “计算机配置”→ “ Windows 设置”→“安全设置”→“本地策略”→“用户权利指派” ) 将“跳了遍历检查”项与了一定的用户或用户组,该项权限才能够起作用。默认状态 下,包括“ Administrators ”、“ Users ”、“ Everyone ”等在内的组都可以动用该权限。对于文本来说,拥了这项权限后,用户可以 执行该次文件。但是,如果单纯为文件夹设置了这项权限的话,并无会见为用户对其中的文件带达“执行”的权杖;

  ⑵列出文件/ 读取数据 (List Folder/Read Data) :该权限允许用户查看文件夹着之文件名称、子文件夹名称及查阅文件被的数目;

  ⑶读取属性(Read Attributes) :该权限允许用户查看文件要文件夹的属于性 ( 如系、只念、隐藏等属于性 ) ;

  ⑷读取扩展属性(Read Extended Attributes) :该权限允许查看文件或者文件夹的恢宏属性,这些扩展属性通常由程序所定义,并可叫先后修改;

  ⑸创建文件/ 写副属性 (Create Files/Write Data) :该权限允许用户以文书夹着创造新文件,也允许用数据写入现有文件并挂现有文件中之数额;

  ⑹创建文件夹/ 附加数据 (Create Folder/Append Data) :该权限允许用户以文件夹着开创新文件夹或同意用户以现有文件之末梢添加数据,但不能够针对文本现有的数码开展覆盖、修改,也不可知去除数据;

  ⑺写副属性(Write Attributes) :该权限允许用户改文件要文件夹的性质;

  ⑻写副扩展属性(Write Extended Attributes) :该权限允许用户对文本要文件夹的扩充属性进行修改;

  ⑼删除子文件夹和文件(Delete Subfolders and Files) :该权限允许用户删除文件夹着的子文件夹或文件,即使以这些子文件夹和文件上尚未设置删除权限;

  ⑽删除(Delete) :该权限允许用户删除时文件夹和文书,如果用户以该文件或者文件夹上无去除权限,但是于那父级的文本夹上发生删除子文件以及文件夹权限,那么即便仍可以去除其;

  ⑾读取权限(Read Permissions) :该权限允许用户读取文件要文件夹的权能列表;

  ⑿更改权限(Change Permissions) :该权限允许用户改文件或者文件夹上之共处权限;

  ⒀取得所有权(Take Ownership) :该权限允许用户得到文件或者文件夹的所有权,一旦得到了所有权,用户就是可以对文件或者文件夹进行全权控制。

   这里要独自说明一下“修改”权限和“写副”权限的区分:如果仅仅对一个文书拥有修改权限,那么,不仅可以本着该文件数量开展摹写副和叠加,而且还得创建 新文件或者删除现有文件。而如一味对一个文件拥有写副权限,那么既好对文本数量开展摹写副和附加,也足以创建新文件,但是不能够去文件。也就是说,有描绘副 权限不抵所有去权限,但持有修改权限,就相同于所有删除和描绘副权限。

  2. 共享权限 (Shared Permission)

   只要是共享出来的文件夹就肯定有所此权限。如该文件夹存在于NTFS 分区中,那么其以以兼有 NTFS 权限和共享权限,如果这个资源又有NTFS 和 共享两栽权限,那么网受到针对权力的具体实施将为稀种权限中之“较严苛的权位”为本──这吗是“拒绝优于允许”原则的一致种体现!

  例如,某个共享资源的NTFS 权限设置也全控制,而共享权限设置为读取,那么远程用户就只好动用“读取”权限对共享资源进行访问了。

   注意:如果是FAT16/FAT32 文件系统中的共享文件夹,那么将不得不被共享权限的保障,这样一来就容易发生安全性漏洞。这是为共享权限只能够限 制从网及看资源的用户,并无法界定一直登录本机的人数,即用户一旦能登录本机,就可以无限制修改、删除 FAT16/FAT32 分区中的数目了。因此,从 安全角度来拘禁,我们是不推荐在 Windows XP 中采取 FAT16/FAT32 分区的。

  设置共享权限很简单,在 右键选中并点击一个文书夹后,在右键快捷菜单中选择“共享以及安康”项,在弹出的性质对话框“共享”选项卡安装界面中点击选中“共享该文件夹”项即可,这将 使共享资源使用默认的权杖设置( 即“ Everyone ”用户拥有读取权限 ) 。如果想切实装共享权限,那么要点击“权限”按钮,在开拓的对话框中可以看到 权限列表中发出“完全控制”、“更改”和“读取”三宗权力可供应选择。

  下面先简单介绍一下应声三独权力的含义:

  ①通通控制:允许用户创建、读取、写副、重命名、删除时文件夹着之公文以及子文件夹,另外,也可以改该公文夹着之NTFS 访问权限和夺取所有权;

  ②更改:允许用户读取、写副、重命名暨去时文件夹着的文本和子文件夹,但未克创新文件;

  ③读博:允许用户读取当前文件夹的文本和子文件夹,但是未可知拓展摹写副或删除操作。

  说了了权力的意义,我们就算好点击“添加”按钮,将急需安装权限的用户或用户组添加进来了。在缺少省气象下,当上加新的组要用户时时,该组或用户以装有“读取”(Read) 权限,我们可因实际状况以红尘的权能列表中进行复选框的精选与清空。

   就还来说说令很多读者觉得意外之“组与用户称”列表中的“Everyone ”组的意思。在 Windows 2000 中,这个组为含有了“Anonymous Logon ”组,所以它表示“每个人”的意。但以 Windows XP 中,请留心──这个组为只有包括“ Authenticated Users ”和“ Guests ”两单组,而不再包括“ Anonymous Logon ”组,所以她象征了“可看计算机的有用户”,而不再是“每个人”!请留心这是发出分别的,“可看计算机的所有用户”意味着必须是经验证的 用户,而“每个人”则无需考虑用户是否通过了征。从平安地方来拘禁,这或多或少是直促成安全隐患是否在关键所在!

   当然,如果想以Windows XP 中落实 Windows 2000 中那种“ Everyone ”设计编制,那么得透过编制“本地安全政策”来促成,方法是:在“运行”栏中输入“ Secpol.msc ”命令打开 “安全设置”管理单元,依次展开“安全设置”→“本地策略”,然后上“安全选项”,双击右侧的“网络访问:让‘每个人’权限行使为匿名用户”项,然后选择 择“已启用”项既可。

  注意:在Windows XP Professional 中,最多可又有 10 个用户通过网络登录 ( 指使用验证账户登录的用户,对于访问由 IIS 提供的 Web 服务之用户没有限制 ) 方式使用有平等大计算机提供的共享资源。

  3. 资源复制或位移时权的生成与拍卖

  以权力的使被,不可避免地会遇见设置了权后的资源要复制或活动的状态,那么是时段资源相应的权力会有怎样的浮动呢?下面来打探一下:

  (1) 复制资源时

  于复制资源时,原资源的权限不见面发生变化,而新生成的资源,将连续其目标位置父级资源的权柄。

  (2) 移动资源时

   以活动资源时,一般会遇见两种植情况,一凡要资源的动有在平等驱动器内,那么对象保留自己固有的权位不更换( 包括资源本身权限和本由父级资源对接承 的权限 ) ;二是如果资源的运动有在不同的驱动器之间,那么不仅对象自我的权会掉,而且原来由父级资源遭到持续的权位也会于从目标位置的父级资源持续的 权限所取代。实际上,移动操作就是率先进行资源的复制,然后于原本位置去资源的操作。

  (3) 非 NTFS 分区

  上述复制或挪资源时生的权限变化就是针对性NTFS 分区上而言的,如果将资源复制或走到非 NTFS 分区 ( 如 FAT16/FAT32 分区 ) 上,那么所有的权均会自行全部不见。

  4. 资源所有权的高等级管理

   有时我们会发觉眼前登录的用户无法对某资源拓展任何操作,这是呀原因为?其实这种普遍的场景特别有或是盖对有资源拓展的NTFS 权限设置得无敷 完善造成的──这将见面招所有人 ( 包括“ Administrator ”组成员 ) 都无法访问资源,例如非小心用“ zhiguo ”这个文件夹的兼具用户都勾 了,这将见面招致有用户还无法访问这个文件夹,此时广大爱人就会见山穷水尽了,其实通过采取更改所有权的方式就可以很轻松地解决当下类似权限问题了。

   首先,我们要检查一下资源的主人是谁,如果想查看有资源( 如 sony 目录 ) 的用户所有权的语,那么就需要使用“ dir sony /q ”命令就可了。在报告消息的率先实行就可以看到用户是何许人也了,例如第一履行的音信是“ lovebook/zhong ”,那么意思就是是 lovebook 这台 计算机被的“ zhong ”用户。

  如果想在图形界面中查所有者是孰,那么得上资源的特性对话框,点击“安全”选项卡安装界面中之“高级”按钮,在弹出的“( 用户名 ) 高级安全设置”界面被点击“所有者”选项卡,从中间的“目前该项目之持有者”列表中就可以看到当前资源的主人是哪个了。

  如果想将所有者更改用户,那么就需要以“将所有者更改为”列表中选择对象用户称后,点击“确定”按钮即可。此外,也可一直以“安全”选项卡安装界面被点击“添加”按钮上加一个用户并与相应的权力后,让这用户来博当前文件夹的所有权。

  注意:查看所有者究竟对资源具有怎样的权杖,可点击进入“有效权限”选项卡安装界面,从中点击“选择”按钮添加当前资源的持有者后,就得于人间的列表中权限选项之勾取状态来博知了。

  五、程序下权力设定

  Windows XP 操作系统在文书管理方面功能设计上极为多样、周全以及智能化。这里经过“程序文件使用权力”设置、将“加密文件授权多只用户可看”和询问系统日志的拜会权限三独例证让大家解释一下如何开展日常使用。

  1. 程序文件权限设定

  要打听Windows XP 中有关程序文件之访问权限,我们应首先来打探一下 Windows XP 在这方面的星星独计划,一凡组策略中 软件  限制策略的规划;二凡是现分配程序文件使用权限的设计。

  (1) 软件限制方针

   以“运行”栏中输入“Gpedit.msc ”命令打开组策略窗口后,在“计算机配置”→“ Windows 设置”→“安全设置”分支中,右键选中“软件限 制策略”分支,在弹出的快捷菜单中选择新建一个政策后,就可以打“软件限制方针”分支下新出现的“安全级别”中见到出些许栽安全级别的留存了。

  这半长长的安全级别对于程序文件及用户权限之前是发明细关系的:

  ①不容许的:从夫解说着可以看,无论用户的访问权如何,软件都未会见运作;

   ②请勿受限的:这是默认的安全级别,其解释吗“软件访问权由用户之访问权来决定”。显然,之所以在网被好安装各种权力,是盖发夫默认安全策略在背 后冷支持之缘由。如果想将“不同意的” 安全级别设置为默认状态,只待双击进入该性能界面后点击“设为默认值”按钮即可。

  (2) 临时分配程序文件

   为什么而临时分配程序文件的管理权限呢?这是坐于Windows XP 中,有众多生关键的主次还是求用户拥有一定之管理权限才会用的,因此当动用权力不足以使用一些程序的账户时,为了能够用程序,我们便待也团结 临时分配一个看程序的管理权限了。为顺序分配临时管理权限的法子充分简短:右键点击要运行的次序图标,在弹出的快速菜单中选择“运行方式”,在开拓的“运 行身份”对话框中选中“下列用户”选项,在“用户名”和“密码”右侧的文本框中指定用户与密码即可。

  显然,这个临时切换程序文件管理权限的规划是怪发必不可少的,它可以非常好地自及保安体系的目的。

  2. 授权多个用户访问加密文件

  Windows XP 在 EFS 上之改进之一就是是可以允许多只用户访问加密文书,这些用户既好是本地用户,也可是域用户要受信任域的用户。由于无法以证书颁发给用户组,而不得不发布给用户,所以不得不授权单个的账户访问加密文书,而用户组将不克于授权。

  要授权加密文件可以被多独用户访问,可以按照如下方法进行操作:

   选中都加密的文书,用鼠标右键点击该加密文件,选择“属性”,在开辟的属性对话框中“常规”选项卡下点击“高级”按钮,打开加密文书之高档属性对话 框,点击其中的“详细信息”按钮( 加密文书夹此按钮无效 ) ,在打开的对话框中点击“添加”按钮上加一个或多独新用户即可 ( 如果计算机在了域,则还好触 击“寻找用户”按钮在整个域范围外搜索用户 ) 。

  3. 日志的拜会权限

   什么是日记?我们得以以日志理解吧系统日记,这按照“日记”可以按系统管理员预先的设定,自动将系统遭到发出的拥有事件还依次记录在案,供管理员查询。既然 日志信息具有如此重大之参考作用,那么就算应有做好未经授权的用户改或者查看的权杖决定。因此,我们大有必不可少去探听一下日志的拜会权限在Windows XP 中凡如何设计之。一般的话, Administrators 、 SYSTEM 、 Everyone 三栽类型的账户可以看日志。

  这三种植类型的账户对两样类别的日记拥有不同的拜会权限,下面来拘禁一下表中具体的证实,请小心“√”表示所有这权限;“×”表示无论是夫权限。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

针对应用程序日志的权力

 

账户

 

读取

 

写入

 

清除

 

Administrators

 

 

 

 

 

SYSTEM

 

 

 

 

 

Everyone

 

 

 

×

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

对安康日志的权柄

 

账户

 

读取

 

写入

 

清除

 

Administrators

 

 

×

 

 

 

SYSTEM

 

 

 

 

 

Everyone

 

×

 

×

 

×

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本着网日志的权

 

账户

 

读取

 

写入

 

清除

 

Administrators

 

 

 

 

 

SYSTEM

 

 

 

 

 

Everyone

 

 

×

 

×

  通过对比,可以见到SYSTEM拥有的权杖最高,可以本着轻易档次的日志进行读写及排操作;Everyone用户则可读取应用程序和系统日
志,但针对平安日志无法读取。这是盖安全日志相对其他几种植档次的日记在安全性方面的求而后来居上有,只有SYSTEM能够对之写副。

  如果想啊其他用户赋予管理审核安全日志的权杖,那么可以“运行”栏中输入“Gpedit.msc”命令打开组策略编辑器窗口后,依次进来“计
算机配置”→“Windows设置”→“安全设置”→“本地策略”→“用户权利指派”,双击右侧的“管理审核及平安日志”项,在弹出的对话框中补充加所待的
用户即可。

  六、内置安全中心和权力

  于Windows
XP中,有雷同浩大匪也人知的用户,它们的打算是可以叫咱叫权限到某种“状态”的用户(如“匿名用户”、“网络用户”)等,而未是某某特定的用户或组(如
“zhong”、“CPCW”这仿佛用户)。这样一来,对用户权限的保管即越发爱精确控制了。这群用户以Windows
XP中,统一称为内置安全重点。下面被咱来打听一下:

  1.康宁中心的藏身之处

  下面要需要吗一个称呼也“zhiguo”的目设置内置安全重点中的“Network”类用户权限为例,看看就多“默默无闻”的用户藏身于系何处。

  首先进入“zhiguo”目录属性界面的“安全”选项卡安装界面,点击其中的“添加”按钮,在弹出的“选择用户要组”对话框中点击“对象类型”按钮。在弹出对话框中单保留列表中之“内置安全中心”项,并点击“确定”按钮。

  以搭下的对话框中点击“高级”按钮,然后于展开的对话框中点击“立即寻找”按钮,就可以看到放安全中心中含的用户列表了。

 

  2.安康主体作用说明

  虽然坐安全主体来为数不少,但健康能以权力设置中动用到的并无多,所以下面就说明里几独比较重要之:

  ①Anonymous Logon:任何没有经Windows
XP验证程序(Authentication),而因匿名方式上录域的用户都属此组;

  ②Authenticated Users:与前面项相反,所有通过Windows
XP验证程序登录的用户都属于此组。设置权限和用户权限时,可考虑用这个起代替Everyone组;

  ③BATCH:这个组包含其他访问这大计算机的批处理程序(Batch Process);

  ④DIALUP:任何通过拨号网络登录的用户;

  ⑤Everyone:指具备经历证登录的用户与客(Guest);

  ⑥Network:任何通过网签到的用户;

  ⑦Interactive:指其他直接登录本机的用户;

  ⑧Terminal server user:指其他通过极端服务登录的用户。

  ……

  于亮了放安全主体的企图后,在进展权力的求实指派时就是得为权力的施用精确程度还强、权限的运用效益更是快捷。显然,Windows
XP中设置此类账户是殊生出必不可少之,毕竟计算机是为使用为主,以使用类型进行账户分类,必然会要权力的管住不再混乱,管理进一步客观!

 

Windows XP权限整合应用全解(二)

随之还来说说令很多读者感到意外的” 组和用户称” 列表中之”Everyone”
组的意思。在Windows 2000 中,这个组为含有了”Anonymous Logon”
组,所以它们表示” 每个人” 的意。但每当Windows XP 中,请留意──
这个组因为就囊括”Authenticated Users” 和”Guests”
两个组,而不再包括”Anonymous Logon” 组,所以她象征了”
可看计算机的保有用户” ,而不再是” 每个人” !请留意及时是来分别之,”
可看计算机的享有用户” 意味着必须是透过认证的用户,而” 每个人”
则不用考虑用户是否经过了验证。从安者来拘禁,这一点凡是一直造成安全隐患是否是关键所在! 

    当然,如果想以Windows XP 中落实Windows 2000 中那种”Everyone”
设计编制,那么可以经编制” 本地安全政策” 来落实,方法是:在” 运行”
栏中输入”Secpol.msc” 命令打开” 安全设置” 管理单元,依次进行” 安全设置”→”
本地策略” ,然后进入” 安全选项” ,双击右侧的” 网络访问:让‘ 每个人’
权限行使被藏身名 
用户” 项,然后择” 已启用” 项即可。 

    注意:在Windows XP Professional 中,最多可又产生10
个用户通过网络签到( 指使用验证账户登录的用户,对于访问由IIS 提供的Web
服务的用户没有范围) 方式使用有平高微机提供的共享资源。 

  1. 资源复制或挪时权的变通及拍卖 

   
在权力的采用中,不可避免地会见逢设置了权力后底资源要复制或挪动的状况,那么是时刻资源相应的权力会来什么的变型吧?下面来询问一下: 

(1) 复制资源时 

  
于复制资源时,原资源的权限不见面发生变化,而新生成的资源,将延续其目标位置父级资源的权柄。 

(2) 移动资源时 

   
在倒资源时,一般会逢两种植情形,一凡要资源的走有在平驱动器内,那么对象保留自己固有的权位不换(
包括资源本身权限和原由父级资源被连续的权杖)
;二凡是如果资源的活动有在不同之驱动器之间,那么不仅对象自我的权会丢,而且原来由父级资
源中继承的权位也会见给打目标位置的父级资源持续的权杖所代替。实际上,移动操作就是率先进行资源的复制,然后从原本位置去资源的操作。 

(3) 非NTFS 分区 

    上述复制或动资源时起的权杖变化只有是对NTFS
分区上而言的,如果用资源复制或运动到非NTFS 分区( 如FAT16/FAT32 分区)
上,那么富有的权能均会自行全部少。 

  1. 资源所有权的高级管理 

    有时我们会发现脚下报到的用户无法对有资源进行其他操作,这是啊由吗?其实这种大的气象大有或是为对某个资源进行的NTFS
权限设置得无敷完善造成的── 这将会造成所有人( 包括 “Administrator”
组成员) 都无法访问资源,例如不小心将”zhiguo”
这个文件夹的备用户还剔除了,这将会晤导致有用户还无法访问这个文件夹,此时众情侣即使见面山穷水尽了,其实通过利用更改所有权的法就好老轻松地解决当下看似权限问题了。 

   首先,我们要检查一下资源的持有者是谁,如果想查看有资源( 如sony
目录) 的用户所有权的讲话,那么就需要以”dir sony /q”
命令就好了。在申报消息的率先实施就可以看到用户是何许人也了,例如第一履的音信是”lovebook/zhong”
,那么意思就是是lovebook 这令微机被的”zhong” 用户。 
    如果想当图形界面中翻所有者是孰,那么需要进入资源的特性对话框,点击”
安全” 选项卡设置界面被的” 高级” 按钮,在弹出的”( 用户名) 高级安全设置”
界面中点击” 所有者” 选项卡,从内部的” 目前该品种的持有者”
列表中就可以看到当下资源的主人是哪个了。 

    如果想将所有者更改用户,那么就需要在” 将所有者更改为”
列表中选取对象用户称后,点击” 确定” 按钮即可。此外,也可直接在” 安全”
选项卡设置界面中点击” 添加”
按钮上加一个用户并施相应的权能后,让这用户来赢得当前文件夹的所有权。 

    注意:查看所有者究竟对资源有着怎样的权,可点击上” 有效权限”
选项卡设置界面,从中点击” 选择”
按钮添加当前资源的持有者后,就得从人间的列表中权限选项之勾取状态来获取知了。 

五、程序采取权限设定 

    Windows XP
操作系统在文件管理方面功能设计上颇为多样、周全和智能化。这里透过”
程序文件使用权限” 设置、将” 加密文件授权多独用户可以看”
和了解系统日志的顾权限三单例让大家解释一下如何进展日常行使。 

  1. 次文件权限设定 

    要询问Windows XP
中关于程序文件之访权限,我们应首先来询问一下Windows XP
在当时上面的星星点点个统筹, 
无异于、是组策略中软件限制方针的计划; 
老二、是现分配程序文件使用权限的规划。 

(1) 软件限制方针 

    在” 运行” 栏中输入 “Gpedit.msc” 命令打开组策略窗口后,在”
计算机配置”→”Windows 设置”→” 安全设置” 分开支着,右键选中” 软件限制政策”
分 
出,在弹出的神速菜单中选择新建一个策后,就得从” 软件限制政策”
分支下新面世的” 安全级别” 中看到有个别栽安全级别的有了。 

    这有限条安全级别对于程序文件与用户权限之前是来细心沟通的: 


不允许的:从那解说着得看来,无论用户之访问权如何,软件还无见面运作; 

② 不受限的:这是默认的安全级别,其解释吗 ”
软件访问权由用户之访问权来控制”
。显然,之所以在系受得设置各种权力,是坐来其一默认安全策略在幕后默默支持之缘由。如果想管”
不同意的” 安全级别设置也默认状态,只待双击进入其属性界面后点击”
设为默认值” 按钮即可。 

(2) 临时分配程序文件 

    为什么而临时分配程序文件之管理权限呢?这是以当Windows XP
中,有成千上万十分重点之次序还是要求用户有自然之管理权限才会运用的,因此当应用权力不足以使用一些程序的账户时,为了能使程序,我们即便得吗团结临时分配一个拜访程序的管理权限了。为顺序分配临时管理权限的法子好简短:右键点击要运行的程序图标,
在弹出的飞跃菜单中选择” 运行方式” ,在开拓的” 运行位置” 对话框中选中”
下列用户” 选项,在” 用户名” 和” 密码”
右侧的文本框中指定用户以及密码即可。 

   
显然,这个临时切换程序文件管理权限的设计是十分发必要的,它好十分好地自及保护网的目的。 

  1. 授权多只用户访问加密文件 

    Windows XP 在EFS
上的改良之一就是是可以允许多个用户访问加密文件,这些用户既好是本地用户,也可是域用户要叫信任域的用户。由于无法拿证件颁发给用户组,而不得不发布给用户,所以不得不授权单个的账户访问加密文书,而用户组将无克被授权。 

    要授权加密文件可以让多只用户访问,可以按照如下方法进行操作: 

    选中已经加密的公文,用鼠标右键点击该加密文件,选择” 属性”
,在开辟的属性对话框中” 常规” 选项卡下点击” 高级”
按钮,打开加密文书之高档属性对话框,点击其中的” 详细信息” 按钮(
加密文书夹此按钮无效) ,在打开的对话框中点击” 添加”
按钮上加一个或多单新用户即可( 如果计算机在了域,则还好点击”
寻找用户” 按钮在整个域范围外找用户) 。 

    如果一旦去某个用户对加密文件之顾权限,那么单纯待选中此用户后点击”
删除” 按钮即可。 

  1. 日记的拜会权限 

    什么是日记?我们得以日志理解啊系统日记,这按照” 日笔记”
可以按系统管理员预先的设定,自动将系统遭到出的有所事件还相继记录在案,供管理员查询。既然日志信息具有这样重要的参考作用,那么就是活该抓好未经授权的用户改或查看的权柄控制。因此,我们死有必要去了解一下日记的走访权限在Windows
XP 中是哪设计之。一般的话,Administrators 、SYSTEM 、Everyone
三种类型的账户可以看日志。 

   
这三种植档次的账户对两样品种的日志拥有不同的访权限,下面来拘禁一下表中切实的证明,请小心”√”
表示拥有者权限;”×” 表示无论是此权限。 

    通过对比,可以看SYSTEM
拥有的权力最高,可以对轻易档次的日志进行读写及排操作;Everyone
用户则可读取应用程序和系统日志,但针对安全日志无法读取。这是因安日志相对其他几种植类型的日记在安全性方面的渴求而后来居上有,只有SYSTEM
能够针对之写副。 

    如果想为其他用户赋予管理审核安全日志的权力,那么可以” 运行”
栏中输入”Gpedit.msc” 命令打开组策略编辑器窗口后,依次进来”
计算机配置”→”Windows 设置”→” 安全设置 “→” 本地策略”→” 用户权利指派”
,双击右侧的” 管理审核和平安日志”
项,在弹出的对话框中补充加所急需的用户即可。 

六、内置安全中心和权 

    在Windows XP
中,有相同居多匪呢人知的用户,它们的图是足以让咱们派出权限到某种” 状态”
的用户( 如” 匿名用户” 、” 网络用户”) 等,而休是有特定的用户或组( 如
“zhong” 、”CPCW” 这类似用户)
。这样一来,对用户权限的管制就愈加便于精确控制了。这丛用户以Windows XP
中,统一称 

    为停放安全主体。下面为我们来询问一下 
1. 安全重点的藏身之处 
    下面要需要为一个名叫也”zhiguo” 的目设置内置安全中心中的”Network”
类用户权限为例,看看这许多” 默默无闻” 的用户藏身在系统何处。 
    首先登”zhiguo” 目录属性界面的” 安全” 选项卡设置界面,点击其中的”
添加” 按钮,在弹出的” 选择用户要组” 对话框中点击” 对象类型” 按钮。 
    在弹出对话框中单独保留列表中之” 内置安全重点” 项,并点击” 确定”
按钮。 
    在接入下去的对话框中点击” 高级” 按钮,然后在进展的对话框中点击”
立即查找” 按钮,就可以看到放安全主体中涵盖的用户列表了。 
2. 有惊无险主体作用说明 
   
虽然坐安全中心有很多,但健康能于权力设置中运用到的连无多,所以下面仅说明中几单比重要的: 
①Anonymous Logon :任何没有通过Windows XP 验证程序(Authentication)
,而坐匿名方式上录域的用户都属于此组; 
②Authenticated Users :与前方项相反,所有通过Windows XP
验证程序登录的用户都属于此组。设置权限和用户权限时,可考虑用此项代替 
Everyone 组; 
③BATCH :这个组包含其他访问这尊电脑的批处理程序(Batch Process) ; 
④DIALUP :任何通过拨号网络登录的用户; 
⑤Everyone :指有涉证登录的用户以及客(Guest) ; 
⑥Network :任何通过网签到的用户; 
⑦Interactive :指其他直接登录本机的用户; 
⑧Terminal server user :指其他通过终端服务登录的用户。

相关文章