Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle Jak przyznać CREATE ANY DIRECTORY z ograniczeniem, że wszystkie katalogi muszą być tworzone w danym katalogu?

To zależy, jeśli chcesz ograniczyć katalogi systemu operacyjnego, do których Oracle ma dostęp za pomocą poleceń utl_file, możesz ustawić utl_file_dir parametr. Niestety, ten parametr dotyczy całego systemu, więc nie będziesz mógł przyznać/odwołać dla konkretnego użytkownika za pomocą tego parametru. Pamiętaj również, że jeśli wprowadzisz zmiany w tym parametrze, zmiany te nie wejdą w życie, dopóki baza danych Oracle nie zostanie zrestartowana:

alter system set utl_file_dir = '/foo/bar' scope=spfile;
shutdown immediate;
startup open;

Zapoznaj się z 12.1 Dokumenty Oracle aby uzyskać więcej informacji na temat utl_file_dir .

To powiedziawszy, jeśli naprawdę chcesz ograniczyć, kto może tworzyć katalogi Oracle do określonych katalogów systemu operacyjnego, odpowiednia byłaby procedura dla tego zadania, ponieważ pozwoliłoby to na dokładniejszą kontrolę (i ograniczenie, kto ma bardzo potężny create any directory przywilej właściciela procedury):

sqlplus kjohnston

create or replace procedure mydircreate (p_dir varchar2)
as
  ex_custom EXCEPTION;
  PRAGMA EXCEPTION_INIT( ex_custom, -20001 );
begin
  if lower(p_dir) not like '/foo/bar/%' then
    raise_application_error( -20001, 'Not authorized' );
  end if;

  execute immediate 'create or replace directory mydir as ''' || p_dir || '''';
end mydircreate;

create user testuser identified by <password>;
grant create session to testuser;
grant execute on kjohnston.mydircreate to testuser;

exit;

sqlplus testuser

SQL> exec kjohnston.mydircreate('mydir', '/randomdir');
ORA-20001: Not authorized

SQL> exec kjohnston.mydircreate('mydir', '/foo/bar/baz');
PL/SQL procedure successfully completed.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Niezdefiniowana stała kodu zapalnika i wyroczni:OCI_COMMIT_ON_SUCCESS

  2. Wartość domyślna dla parametrów, które nie zostały przekazane do skryptu SQLPlus

  3. Oracle:Lewy połącz bardzo dużą tabelę i ogranicz połączone wiersze do jednego z największą wartością pola

  4. Różnica między LockModeType Jpa

  5. WYBIERZ dane z innego schematu w oracle