【问题标题】:FileSystemRights Issues (C#)文件系统权限问题 (C#)
【发布时间】:2011-10-29 11:50:14
【问题描述】:

我对文件系统和权限/权限访问(又名访问控制列表,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);
}

我的逻辑是:

  1. 添加拒绝修改权限(拒绝 .Modify 会导致文件不可读)
  2. 添加拒绝写入权限
  3. 添加允许 ReadAndExecute 权限
  4. 删除 ReadAndExecute 上的 Deny 条目(作为 .Modify 拒绝 ReadAndExecute)
  5. 删除读取时拒绝条目(作为 .Modify 拒绝读取)

我做这部分正确吗?如果没有,请告知我应该怎么做才能使文件仅可读且不可编辑、可重命名、可删除和可复制。非常感谢!

【问题讨论】:

  • 只要文件可读,它就永远是可复制的!
  • 是否有可能(任何一种解决方法)使其可读但防止它被复制到其他地方?
  • 否 - 任何可读的都是可复制的...
  • 假设我只是将文件属性设置为“只读”,那么该文件是否可以在其他计算机上复制、编辑和删除?
  • 它是可复制的,只要它是可读的......反过来,一切都可以完成(编辑,删除......)

标签: c# filesystems console-application rights


【解决方案1】:

请解释它做错了什么。我看到的唯一可能是一个问题是您正在为自己设置权限,而不是为其他用户或组设置权限。也许您应该遍历所有组(管理员、用户等)并禁用除读取和执行之外的所有组。虽然我认为 SYSTEM 始终可以完全控制所有文件。

【讨论】:

  • 对不起,我忘了提到这个应用程序的使用。它应该驻留在拇指驱动器中,然后分发给不同的用户。这就是“self.Name”进入他们的计算机域\用户的地方。优盘中有文件,它们应该只能读取,因此我必须禁止复制、编辑和删除功能 - 意思是说,优盘中没有任何内容可以更改,只能读取文件。跨度>
猜你喜欢
  • 1970-01-01
  • 2011-05-05
  • 2014-08-28
  • 2020-03-15
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多