Выполнение Unix команд Sun Solaris с помощью проблемы ORACLE PL / SQL с разрешениями - PullRequest
2 голосов
/ 09 августа 2011

Я создал 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; 

Ошибка - недопустимый объект.

Спасибо

1 Ответ

1 голос
/ 09 августа 2011

Третьим параметром в первом операторе должен быть путь к файлу или каталогу, например,

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

В качестве альтернативы вы можете просто присвоить ORION роль JAVASYSPRIV , поскольку это довольно многоты все равно делаешь.

В любом случае, предоставление максимальных привилегий ORION делает учетную запись очень мощной и той, которую вам необходимо будет тщательно контролировать, особенно в производственных средах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...