Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как сделать unset role? / 24 сообщений из 24, страница 1 из 1
21.05.2003, 12:47:22
    #32164949
Violina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать unset role?
Сделала

set role RL;

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

set role all except RL;

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

set role RL;

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

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

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

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

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

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


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

Последний вопрос, как узнать роли которые granted текущему пользователю. user_roles - такого вью нет.
...
Рейтинг: 0 / 0
21.05.2003, 14:03:20
    #32165087
Bardis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать unset role?
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
21.05.2003, 14:09:12
    #32165099
Bardis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать unset role?
sorry, pogoryachilsya :-)

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

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

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

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

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

2 Violina

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

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

или с поиском по колонке comments.
...
Рейтинг: 0 / 0
21.05.2003, 15:04:16
    #32165185
Violina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать unset role?
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
21.05.2003, 15:09:39
    #32165198
Violina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать unset role?
простите

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

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

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

Спасибо, теперь стало понятно. А если хочеться запретить select какой то колонки например salary? то надо уже это через вью делать?
...
Рейтинг: 0 / 0
21.05.2003, 22:04:33
    #32165581
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать unset role?
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
22.05.2003, 09:40:04
    #32165696
Violina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать unset role?
to SY

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

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

Как узнать

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

2) user залогинился не как sysdba но ему granted sysdba. Как ему узнать в таком сеансе что у него эта роль есть? v$pwfile_users не работает.
...
Рейтинг: 0 / 0
22.05.2003, 10:33:50
    #32165795
AI
AI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать unset role?
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
22.05.2003, 10:48:55
    #32165828
Violina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сделать unset role?
Я как раз сейчас изучаю досконально эту тему. Спрашиваю я, когда возникают сомнения или вопросы на которые явно ответ в тексте усмотреть не удается.

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


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