我有一个txt文件,其中包含用户列表。我希望这些用户被授予对文件/目录的完全访问权限,然后从文件中删除所有其他权限。这是我用来给用户完全控制列表的代码:
var readerAdminUsers = new StreamReader(File.OpenRead(adminFile));
string adminUser = string.Empty;
var allAdminUsers = new List<String>();
FileSystemAccessRule fsar;
FileSecurity fileSec = new FileSecurity();
while (!readerAdminUsers.EndOfStream)
{
var line = readerAdminUsers.ReadLine();
adminUser = line;
allAdminUsers.Add(adminUser);
fsar = new FileSystemAccessRule(adminUser, FileSystemRights.FullControl, AccessControlType.Allow);
fileSec.AddAccessRule(fsar);
numOfAdmins++;
}
File.SetAccessControl(filePath, fileSec);
但是,一旦设置了访问控制,我添加到文件中的任何其他用户(不在管理列表中)都已被删除!但是继承的组(例如管理员和系统组)仍然具有权限。是什么导致此删除用户?
然后我遇到的问题是,当我尝试删除那些继承的群组时,他们仍然在那里,我无法弄清楚如何删除它们。这是该部分的代码:
FileAttributes attr = File.GetAttributes(filePath);
if ((attr & FileAttributes.Directory) == FileAttributes.Directory)
{
var security = Directory.GetAccessControl(filePath);
arc = security.GetAccessRules(true, true, typeof(NTAccount));
}
else
{
var security = File.GetAccessControl(filePath);
arc = security.GetAccessRules(true, true, typeof(NTAccount));
}
foreach (FileSystemAccessRule rule in arc)
{
string username = rule.IdentityReference.Value;
if (!allAdminUsers.Contains(username))
{
fileSec.RemoveAccessRule(rule);
File.SetAccessControl(filePath, fileSec);
}
}
我从一个文件开始,例如:
- 我添加了3个用户
- 和继承的系统和管理员组
最后我想要的是:
- 没有用户(除非他们是txt文件中指定的管理员之一)
- 没有用户组
- 以及完全控制的文件中的管理员
我得到的是:
- 3个用户已经离开了
- 继承的群体仍然存在
- 并且管理员用户具有完全控制权
请注意,添加拒绝访问权限并非我所寻求的,我需要将其完全删除。
请帮我解决这个问题! 非常感谢:))