关于SetSecurityDescriptorDacl函数的使用

参考资料来源:http://msdn.microsoft.com/en-us/library/aa379583(VS.85).aspx

此函数用来设置DACL中的信息。如果一个DACL已经在security descriptor中存在,那么此DACL将被替换。

函数原型如下:

要想使用第三、四两个参数,那么参数二需要设置为TRUE;如果参数二设置为FALSE,那么参数三、四被忽略。

值得注意的是MSDN中的Remarks中有这样的描述:

There is an important difference between an empty and a nonexistent DACL.

  • When a DACL is empty, it contains no access control entries (ACEs); therefore, no access rights are explicitly granted. As a result, access to the object is implicitly denied.
  • When an object has no DACL (when the pDacl parameter is NULL), no protection is assigned to the object, and all access requests are granted. To help maintain security, restrict access by using a DACL.把参数三设置为NULL,其实相当于将object的安全级别降到了最低,所有的访问请求都将成功。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误是因为在 Windows 操作系统上使用了 Linux/Unix 命令 "chmod"。在 Windows 上,需要使用不同的方式来更改文件权限。 如果您想在 Windows 上更改文件权限,可以使用 Python 的 "win32security" 模块。下面是一个简单的示例,演示如何使用 Python 更改文件的权限为只读: ```python import win32security import ntsecuritycon # 设置文件路径 file_path = "C:\\path\\to\\file" # 获取文件安全描述符 sd = win32security.GetFileSecurity(file_path, win32security.DACL_SECURITY_INFORMATION) # 创建访问控制项 dacl = win32security.ACL() # 获取文件所有者和组 owner_sid, owner_domain, owner_type = win32security.LookupAccountName("", "username") group_sid, group_domain, group_type = win32security.LookupAccountName("", "groupname") # 添加用户访问控制项 user_sid = win32security.ConvertStringSidToSid("S-1-5-32-544") # Administrators user_ace = win32security.ACE( ntsecuritycon.FILE_GENERIC_READ, win32security.ACE_TYPE_ACCESS_ALLOWED, 0, user_sid ) dacl.AddAccessAllowedAceEx(win32security.ACL_REVISION_DS, 0, user_ace) # 添加组访问控制项 group_sid = win32security.ConvertStringSidToSid("S-1-5-32-544") # Administrators group_ace = win32security.ACE( ntsecuritycon.FILE_GENERIC_READ, win32security.ACE_TYPE_ACCESS_ALLOWED, 0, group_sid ) dacl.AddAccessAllowedAceEx(win32security.ACL_REVISION_DS, 0, group_ace) # 更新文件安全描述符 sd.SetSecurityDescriptorDacl(1, dacl, 0) win32security.SetFileSecurity(file_path, win32security.DACL_SECURITY_INFORMATION, sd) ``` 在上面的代码中,我们使用 "win32security" 模块来获取文件的安全描述符,并创建访问控制项。然后,我们添加了一个用户和一个组的访问控制项,并将更新后的访问控制列表保存回文件的安全描述符中。 需要注意的是,您需要使用管理员权限运行 Python 脚本,并且需要将用户和组名称替换为您实际使用的名称。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值