我有一个基于 tomcat6 的 webapp,它作为服务安装在 WinServer(2008 或 2003r2,不确定,到目前为止人们还没有让我插手)。Tomcat 服务使用特定服务帐户(不是本地的,而是在域控制器中创建的)运行,与运行服务器的帐户不同。
我们有一个域控制器,因此我们的用户总是根据 ActiveDirectory 进行检查。
Web 应用从网络共享文件夹中的文件夹读取文件,该文件夹包含许多具有特定限制的子文件夹。指定接收文件的子文件夹配置为允许具有以下授权的服务帐户
- 浏览文件夹/执行文件
- 阅读项目
- 读取属性
- 读取扩展属性
- 创建文件/写入数据
- 创建文件夹/附件数据
- 写入属性
- 写入扩展属性
- 删除
- 读取权限
然而,我的 webapp 无法访问子文件夹(该文件夹位于网络共享的根文件夹下方//fileServer/sharedRootFolder/myFolder
)。有趣的是:如果我将 webapp 指向我们用作所有员工共享文件的公共点的子文件夹(例如//fileServer/sharedRootFolder/ourCommonFolder
),则 webapp 可以读取这些文件。在我的工作站中从独立 Tomcat(相同的 6.x 版本)运行的同一个 webapp 可以读取这两个位置(使用我自己的域帐户运行,该帐户对“无法访问”文件夹的权限较少)。
我是否应该注意用户、服务器中的 Windows 服务或文件夹中的权限的额外配置设置?
PS 我通过右键单击--属性--安全数据来查看给定的权限。
编辑:在此主题,解释了“作为服务登录”,但是,如果基于域的服务帐户有权访问网络共享上我想要的子文件夹(位于不同的服务器,同一个本地网络中)并且服务帐户作为服务登录启动服务时,我还应该做什么才能有效地访问网络共享子文件夹???
编辑2:该//fileServer/sharedRootFolder/ourCommonFolder
文件夹具有以下权限每个人,所以我猜它指向服务配置中的某些内容,启动它的基于域的服务帐户以及“作为服务登录”之类的东西。
编辑3:今天,我们为服务帐户(该帐户已经是服务器中的本地管理员)配置了“以服务身份登录”,但它还不起作用。想不出主意了……
答案1
我首先要验证错误是否实际上是由于缺少“用户”权限造成的。查看日志文件(tomcat 目录中有一个名为 log 的文件夹)- 应用程序可能会自行进行日志记录,否则错误会发送到标准输出流 - 控制台 - 通常会重定向到 log 文件夹中的 .out 文本文件。
您能以运行 Tomcat 的用户帐户登录服务器吗?您可以从 PC 访问所需的文件夹;您能从服务器访问该文件夹吗?我们需要先查明问题所在,然后才能解决问题。