0

我在 Ubuntu 上使用 glassfish 服务器运行网络服务。问题是 - 它需要访问其共享资源之外的目录。目前它给出了一个错误,说“Permission Denied”。我也为 server.policy 设置了权限。

grant codeBase "/home/glassfish/glassfish/test/-" {
    permission java.security.AllPermission;
};

但它似乎不起作用。我试过<property name="alternatedocroot_1" value="from=*.* dir=/home/glassfish/glassfish/test"/>了,但似乎只授予阅读权限。我也需要写权限。所以我的问题是如何设置写权限?

谢谢。

4

1 回答 1

0

这不是 JavaSecurity 问题,因此您不需要在这方面进行任何调整。

FWIW 我们在各种风格的 Windows 上部署到 GF 的网络应用程序使用文件 API 写入“应用程序”目录之外的目录。Alternatedocroot 与 GF 使用 DefaultServlet 提供静态内容有关,而不是在应用程序部署目录之外写入。

在 Windows 上,当您作为服务运行时,您必须小心“运行方式”用户具有写入目标目录的适当权限,在 Unix 上,您需要确保由运行的 rc (init.d) 脚本设置的用户asadmin.sh 有权读取/写入目标目录。

我会仔细检查运行 GF 的 java 进程的用户是否对您尝试写入的目录具有 rwx 权限。确保用户可以写入目标文件夹。要对此进行测试,您可以向用户发送并使用“touch”命令,如下所示:touch /tmp/test 并以这种方式验证写入权限。通过运行“ls -l /tmp/test”类似地验证读取权限,以确保您可以读取它。

看看什么'ps -ef | grep java' 显示验证运行 GF java 进程的用户。此外,在您的代码中尝试指定测试文件的完整路径,例如。文件测试 = new File("/tmp/test");

您是从 rc 脚本运行 GF 还是从 shell 提示符使用 asadmin.sh 启动它?如果您正在运行 rc 脚本,请检查您的 rc 脚本是否真的以您期望的用户身份运行它。

于 2012-04-20T01:25:16.183 回答