2015-12-15 2 views
2

В настоящее время я имею дело с некоторыми параметрами GRANT с использованием Oracle Database Express Edition 11g. Рассмотрим следующий пример небольшой код, где некоторые пользователи предоставить некоторые привилегии другим пользователям:Отменить привилегии в Oracle

-- User A 
GRANT Select, Insert, Update, Delete ON T TO B,C WITH GRANT OPTION ; 
-- User B 
GRANT Select ON T TO C WITH GRANT OPTION ; 
GRANT Insert ON T TO C ; 
-- USer C 
GRANT Select, Insert, Update ON T TO D ; 

Пользователь A является создателем таблицы Т и выполняет следующую операцию REVOKE.

Сейчас REVOKE Update ON T FROM C Выполняется. Так как ограничение не указано, операция REVOKE должна либо отменяться, поскольку в противном случае была бы отказана UPDATE привилегия в D или удалить привилегии как C, так и D.

Теперь мой вопрос: действительно ли заявление REVOKE отменяет или удаляет как C, так и D привилегии? Или, другими словами, является результатом после выполнения этого отзыва отзыва, что и C, и D все еще имеют привилегию UPDATE или нет?

Заранее спасибо.

+0

Кто выполняет REVOKE? – jarlh

+0

Пользователь A выполняет его. А также является создателем T, я обновил вопрос соответствующим образом. –

+0

Ключевое слово RESTRICT недопустимо для синтаксиса базы данных Oracle. –

ответ

2

объект Revoke привилегия

Если пользователь предоставил привилегию других пользователей или роли, то база данных также аннулируют привилегии от тех других пользователей или ролей.


Правильная формулировка КЕУОКЕ является:

REVOKE object_priv [(column1, column2..)] ON [schema.]object 
     FROM {user, | role, |PUBLIC} [CASCADE CONSTRAINTS] [FORCE] 

Там не в Oracle не RESTRICT. RESTRICT существует в PostgresSQL, MariaDB и т. Д.

Однако я думаю, что ваш намеченный способ - это только REVOKE Update ON T FROM C, выполненный от пользователя. После этого нет ошибок, и пользователи C и D не имеют прав для обновления T.

+0

Вы абсолютно правы, в Oracle нет «RESTRICT». Таким образом, вы подразумеваете, что поведение по умолчанию Oracle - 'CASCADE', правильно? –

+0

Да, мы можем сказать, что 'CASCADE' используется по умолчанию для' WITH GRANT OPTION' грантов ... Другая история заключается в предоставлении системных привилегий 'WITH ADMIN OPTION'. Эти не будут отменены. – dcieslak

Смежные вопросы