为什么域用户获得授权给“Everyone”的读写权限的UnauthorizedAccessException?

时间:2012-09-13 20:32:57

标签: c# active-directory windows-server-2008 network-share unauthorizedaccessexcepti

我们的应用程序允许用户在\\ foo \ bar $中读取共享中的文件。管理员在共享权限安全标签上授予“Everyone”读写权限。当域用户尝试写入该共享时,我们的应用程序会记录以下内容:

TYPE: System.UnauthorizedAccessException
MSG: Access to the path '\\foo\bar$\00074458_00076402.tif' is denied.
SOURCE: mscorlib

SITE: WinIOError
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite)
   at     Ceoimage.Basecamp.DocumentServers.DirectAccessServer._TryCommitQueueFile(IDocQueueFile file)
   at Ceoimage.Basecamp.DocumentServers.DirectAccessServer.SendQueuedFiles(Int32 queueId, Int32 userId, IDocQueueFile[] queueFiles)
   at Ceoimage.Basecamp.ScanDocuments.DataModule.CommitDocumentToQueue(QueuedDocumentModelWithCollections queuedDocument, IDocQueueFile[] files)

我没有域帐户,因此我无法测试此用户的有效权限,但“Everyone”是否会扩展到域用户?如果“Everyone”被视为本地主体,域用户是否必须在Active Directory之外对服务器进行身份验证?它被认为是当地的校长吗?

我们的应用程序是在Windows域上的Windows 7客户端上运行的.NET WinForms应用程序,试图访问运行Windows Server 2008 R2 Standard SP 1的文件服务器。万一你不知道,我有点出局我的深度在这里。

1 个答案:

答案 0 :(得分:1)

啊,这个棘手的授权......

我不得不在很长一段时间内处理这个问题。以下是问题的原因:LDAP在GUID中工作。管理员组肯定会拥有与域中当前存在的guid不同的guid。

出现此问题的原因是计算机不同步或因为文件刚刚从以前的计算机转移到新版本(不同的硬盘驱动器)上。

有一个修复!

我会在内部添加一个catch,我会获取文件的所有权并从头开始重新应用域策略。

我最近已经这样做了,如果您需要更多信息,请告诉我。