我对文件系统和权限/权限访问(又名访问控制列表,ACL)相当陌生。在针对 ACL 进行编码时,我无法为文件设置我想要的属性。我不确定我对 FileSystemRights 成员的理解是否错误,或者我完全做错了事。(而且我已经在这部分上花费了相当多的时间)
我想做的是更改文件的权限,以便它只能是唯一可读的,并且不能在其他地方编辑、重命名、删除和复制。
使用 MSDN 的示例,这是我目前所拥有的:
try
{
//Get current identity
WindowsIdentity self = System.Security.Principal.WindowsIdentity.GetCurrent();
// Add the access control entry to the file.
AddFileSecurity(filename, self.Name, FileSystemRights.Modify, AccessControlType.Deny);
AddFileSecurity(filename, self.Name, FileSystemRights.Write, AccessControlType.Deny);
AddFileSecurity(filename, self.Name, FileSystemRights.ReadAndExecute, AccessControlType.Allow);
// Remove the access control entry from the file.
RemoveFileSecurity(filename, self.Name, FileSystemRights.ReadAndExecute, AccessControlType.Deny);
RemoveFileSecurity(filename, self.Name, FileSystemRights.Read, AccessControlType.Deny);
Console.WriteLine("Done.");
}
catch (Exception e)
{
Console.WriteLine(e);
}
我的逻辑是:
- 添加拒绝修改权限(拒绝 .Modify 将导致文件变得不可读)
- 添加拒绝写入权限
- 添加 Allow ReadAndExecute 权限
- 删除 ReadAndExecute 上的拒绝条目(作为 .Modify 拒绝 ReadAndExecute)
- 删除读取时的拒绝条目(作为 .Modify 拒绝读取)
我做这部分正确吗?如果不是,请告知我应该怎么做才能使文件仅可读且不可编辑、可重命名、可删除和可复制。提前谢谢了!