#oracle
Вопрос:
У меня есть пользователь, у которого есть разрешение только на создание ссылок, создание сеанса и управление планировщиком, я хочу, чтобы он не мог создавать какие-либо объекты, удалять их или изменять их … Мне уже удалось предотвратить удаление или создание новых вещей, но я не могу удалить разрешение на внесение изменений.
попробуйте выполнить следующую команду с другим пользователем, имеющим привилегии SYSDBA:
ОТМЕНИТЬ ИЗМЕНЕНИЕ В USER.TEST_LUIS ОТ ПОЛЬЗОВАТЕЛЯ;
Но ответ говорит мне, что я не могу удалить разрешения, которые не были предоставлены.
Есть какие-нибудь идеи?
Спасибо!
Комментарии:
1. Вы проверили, действительно ли этот пользователь может изменять? В сообщении об ошибке говорится, что в настоящее время у них нет такого разрешения.
2. О да, у него есть привилегия SYSDBA, я думаю, проблема в том, что я не могу отозвать разрешение у пользователя над его собственными объектами
3. Да, SYSDBA всегда предоставит им права администратора, если вы хотите отменить ALTER, вам нужно будет удалить их из SYSDBA.
Ответ №1:
Вы не можете отозвать права на изменение объектов у пользователя, которому они принадлежат. Вам нужно будет удалить привилегию, чтобы создать их в первую очередь.
Пример
sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 28 16:14:30 2021
Version 19.6.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.6.0.0.0
SQL> drop user test2 cascade ;
User dropped.
SQL> create user test2 identified by Oracle_1234 default tablespace users temporary tablespace temp_group account unlock profile default quota unlimited on users ;
User created.
SQL> grant create session , create table to test2 ;
Grant succeeded.
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.6.0.0.0
sqlplus test2/Oracle_1234
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 28 16:13:24 2021
Version 19.6.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.6.0.0.0
SQL> create table t1 ( c1 number ) ;
Table created.
SQL> alter table t1 add ( c2 number ) ;
Table altered.
SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.6.0.0.0
sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Tue Sep 28 16:14:30 2021
Version 19.6.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.6.0.0.0
SQL> revoke alter on test2.t1 from test2 ;
revoke alter on test2.t1 from test2
*
ERROR at line 1:
ORA-01927: cannot REVOKE privileges you did not grant
В приведенном ниже примере я не могу отозвать привилегию, потому что пользователь является владельцем таблицы.
Однако я могу отозвать create table
эту привилегию
SQL> revoke create table from test2 ;
Revoke succeeded.
Изменение объектов, которыми вы владеете, наследуется привилегией создания того же типа объектов.
Комментарии:
1. Спасибо! вместо этого я создам другого пользователя. 😀