powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как сделать unset role?
24 сообщений из 24, страница 1 из 1
Как сделать unset role?
    #32164949
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделала

set role RL;

Как сделать unset только этой роли?
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32164952
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
set role all except RL;
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32164973
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да наверное это самое подходящее, но

set role all except RL;

добавит роли которые не были установлены до этого. Хотелось бы просто отключить роль установленную

set role RL;

А остальное оставить нетронутыми.

Можно еще пару вопросов.

1) set role действует только в течении сессии?
2) как узнать какие роли активны у текущего пользователя?
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32165056
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Придется мне все-таки отослать Вас к документации.

set role включает у пользователя указанные роли и выключает все остальные. Действует до следующей команды set role или до конца сессии.

Проверить активные роли можно в session_roles.
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32165079
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо

set role включает у пользователя указанные роли и выключает все остальные. Действует до следующей команды set role или до конца сессии.
Проверить активные роли можно в session_roles.


Этого мне оказалось достаточно чтобы разобраться.

Последний вопрос, как узнать роли которые granted текущему пользователю. user_roles - такого вью нет.
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32165087
Bardis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL> select object_name from dba_objects
2 where object_name like 'DBA_%ROLE%'
3 or object_name like 'DBA_%PRIVS%';

OBJECT_NAME
--------------------------------------------------------------------------------------------------------------------------------
DBA_COL_PRIVS
DBA_ROLES
DBA_ROLE_PRIVS
DBA_RSRC_CONSUMER_GROUP_PRIVS
DBA_RSRC_MANAGER_SYSTEM_PRIVS
DBA_SYS_PRIVS
DBA_TAB_PRIVS
DBA_COL_PRIVS
DBA_ROLES
DBA_ROLE_PRIVS
DBA_RSRC_CONSUMER_GROUP_PRIVS
DBA_RSRC_MANAGER_SYSTEM_PRIVS
DBA_SYS_PRIVS
DBA_TAB_PRIVS
DBA_COL_PRIVS
DBA_ROLES
DBA_ROLE_PRIVS
DBA_SYS_PRIVS
DBA_TAB_PRIVS

19 rows selected.
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32165099
Bardis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sorry, pogoryachilsya :-)

USER_SYS_PRIVS
USER_TAB_PRIVS
USER_ROLE_PRIVS
USER_COL_PRIVS
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32165133
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"set role включает у пользователя указанные роли и выключает все остальные. Действует до следующей команды set role или до конца сессии. "

Теперь у меня появились вопросы. Не знаю, что там поняла Violina.

set role all except RL - включает все роли исключая RL.

Но кто сказал, что до этого момента были выданы все роли???
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32165157
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 softbuilder

Не ожидал от Вас такого вопроса! Разумеется, не все роли, присутствующие в системе. Только все роли, выданые пользователю.

2 Violina

Очень помогает запрос вида

select * from dictionary where table_name like '%ROLE%'

или с поиском по колонке comments.
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32165185
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to softbuilder

Но кто сказал, что до этого момента были выданы все роли???

Никто не говорил. Это как раз я и обозначила, что set role all except RL включит все предоставленные роли даже те которые не были включены до вызова set role RL.

А поняла я следующее:

Допустим юзеру granted следующие роли R1, R2, R3, R4, R5, R6.

Делаем

set role R1, R2, R3;

у юзера включены роли R1, R2, R3.

set role R4;

у юзера стала включенной только роль R4.

set role all except R4;

у юзера включены роли R1, R2, R3, R5, R6.

Вот тут и было мое примечание, что я просто хотела убрать роль R4 а команда set role all except R4 включила даже те роли которые изначально не были включены.

И мой вывод - команды для выключения одиночной роли из множества включенной роли нету!
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32165198
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
простите

И мой вывод - команды для выключения одиночной роли из множества включенных ролей нету!
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32165208
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Разумеется, не все роли, присутствующие в системе. Только все роли, выданые пользователю. "

to Al:
Разумется только выданные.
Значит я не правильно тебя понял :)
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32165209
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно сделать просто: из session_roles выбрать текущие активные, сформировать список и выдать set role <полученный список без выброшенной роли>.
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32165248
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Bardis

USER_COL_PRIVS - мне стало любопытно. Можно привилегии на колонки давать? Можно пример.
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32165256
MA_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grant insert(update) on table(col1,col2..) to user
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32165260
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to MA_D

Спасибо, теперь стало понятно. А если хочеться запретить select какой то колонки например salary? то надо уже это через вью делать?
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32165581
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Violina:

You are correct in "команды для выключения одиночной роли из множества включенных ролей нету". You have to wrire a simple script. Data dictionary view SESSION_ROLES lists the roles that are currently enabled to the user. So:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
DECLARE
    v_STMT VARCHAR2( 4000 ) := 'SET ROLE ';
    CURSOR ROLE_CURSOR
      IS
        SELECT  ROLE
          FROM  SESSION_ROLES
          WHERE ROLE NOT IN (
                             except-role-list
                            );
BEGIN
    FOR v_REC IN ROLE_CURSOR LOOP
      v_STMT := v_STMT || v_REC.ROLE || ',';
    END LOOP;
    IF v_STMT = 'SET ROLE '
      THEN
        v_STMT := v_STMT || 'NONE';
    END IF;
    EXECUTE IMMEDIATE RTRIM(v_STMT,',');
END;
/


SY.
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32165696
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to SY

Thank you for полезный скрипт!
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32165752
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возник еще вопрос

некоторым юзерам выдано grant sysdba to

Как узнать

1) какие юзеры имеют роль sysdba
2) для конкретного юзера имеет ли он sysdba
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32165756
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v$pwfile_users
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32165778
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) А если password файл не используется? Или он есть всегда, даже если не используется? Простите за дурацкий вопрос, я просто не совсем уверена и хочу уточнить.

2) user залогинился не как sysdba но ему granted sysdba. Как ему узнать в таком сеансе что у него эта роль есть? v$pwfile_users не работает.
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32165795
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Violina, я начинаю удивляться...

sysdba и sysoper - не роли, а привилегии, причем особые.

sysdba и sysoper всегда прописываются в файл паролей. Вы не можете дать эти привилегии, если файл паролей не существует. Когда пользователь коннектится as sysdba, то он реально коннектится как sys. sysoper - как public в 8.1 и 9. Поэтому select user from dual при connect system/manager as sysoper даст public, а при connect system/manager as sysdba даст sys. Вы никогда при таких особых коннектах не увидите пользователей оракловской базы.
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32165828
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я как раз сейчас изучаю досконально эту тему. Спрашиваю я, когда возникают сомнения или вопросы на которые явно ответ в тексте усмотреть не удается.

А почему при connect system/manager as sysoper дает public? public это же вроде как общедоступный а sysoper все таки не самая слабая привилегия?
...
Рейтинг: 0 / 0
Как сделать unset role?
    #32165841
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В том то и дело, что sysoper - очень слабая привилегия. Имеет право только стартовать/останавливать/восстанавливать базу, но не полноценно работать в ней. Другое дело - sysdba.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как сделать unset role?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]