【问题标题】:Executing Unix Sun Solaris Commands Using ORACLE PL/SQL trouble with permissions使用 ORACLE PL/SQL 执行 Unix Sun Solaris 命令的权限问题
【发布时间】:2011-08-09 12:35:52
【问题描述】:

我已经创建了 2 个过程和一个 java 源代码

一个过程正在调用 java 类 TestHostCommand

 PROCEDURE TEST2
  (p_command IN Varchar2)
   AS LANGUAGE JAVA
    NAME 'TestHostCommand.executeCommand(java.lang.String)';

Java源码是:

import java.io.*;

public class TestHostCommand
{

public void executeCommand(String command)
 {
Runtime rt = Runtime.getRuntime();
Process p = null;
try
{
  p = rt.exec("ls > /Orion/list/list.txt");
  return;
} catch ( IOException ioe)
  {
    System.out.println("Error executing file");
  }
}

}

另外一个过程是授予权限但是生成错误:

     PROCEDURE GRANT_PERMISSION
      (grantee            IN  VARCHAR2,
       permission_type    IN  VARCHAR2,
       permission_name    IN  VARCHAR2,
       permission_action  IN  VARCHAR2)


        IS
        BEGIN
         DBMS_JAVA.grant_permission ('ORION', 'java.io.FilePermission',
                                   '<>', 'read ,write, execute, delete');

         DBMS_JAVA.grant_permission ('ORION', 'SYS:java.lang.RuntimePermission',
                                               'writeFileDescriptor', '');

          DBMS_JAVA.grant_permission ('Orion', 'SYS:java.lang.RuntimePermission',
                                                 'readFileDescriptor', '');

           END; 

错误是无效对象。

谢谢

【问题讨论】:

    标签: oracle unix plsql execute java-stored-procedures


    【解决方案1】:

    第一个语句中的第三个参数应该是文件或目录路径,例如

         DBMS_JAVA.grant_permission ('ORION', 'java.io.FilePermission',
                                   '/home/orion/*', 'read ,write, execute, delete');
    

    或者,您也可以只授予 ORION the JAVASYSPRIV role,因为这几乎就是您正在做的事情。

    无论哪种方式,向 ORION 授予最大权限都会使该帐户非常强大,并且您需要对其进行严格控制,尤其是在生产环境中。

    【讨论】:

    • 感谢您的回答。所以我需要通过 DBA 设置权限才能为我工作。谢谢
    • 我目前收到此错误:8:22:50 执行失败:ORA-29532:Java 调用因未捕获的 Java 异常而终止:java.lang.SecurityException:策略表更新 java.io.FilePermission,测试主机命令
    猜你喜欢
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    • 2010-11-28
    • 2020-06-06
    • 2023-03-31
    • 2015-01-13
    • 1970-01-01
    • 2020-05-22
    相关资源
    最近更新 更多