Есть пользователь. Есть объект. Как узнать доступ пользователя на этот объект ?

--Eugene--
Дата: 26.05.2006 06:45:11
нужно сделать курсор, в котором бы были все привилегии *данного* пользователя на *данный* объект вне зависимости от того, как они предаставлены - будь то через роль, или напрямую пользователю.

люди, помогите сэкономить время, пожалуйста

пасиба
Dkfl
Дата: 26.05.2006 06:52:45
http://www.petefinnigan.com/who_can_access.sql
--Eugene--
Дата: 26.05.2006 08:47:36
...эээээ

спасибо, конечно, за ресурс

а если мне нужно узнать все привилегии текущего пользователя на указанную таблицу, достаточно ли будет данных этого селекта ? :
	select distinct
			privilege
		from
			user_tab_privs
		where
			table_name = MyTableName 
			and (grantee = user
			or grantee in (select role from session_roles)))
Sergey M
Дата: 26.05.2006 09:12:12
--Eugene--
...эээээ

спасибо, конечно, за ресурс

а если мне нужно узнать все привилегии текущего пользователя на указанную таблицу, достаточно ли будет данных этого селекта ? :
	select distinct
			privilege
		from
			user_tab_privs
		where
			table_name = MyTableName 
			and (grantee = user
			or grantee in (select role from session_roles)))

	select distinct
			privilege
		from
			user_tab_privs
		where
			table_name = MyTableName 
                        and Owner = :Owner
			and (grantee = user
			or grantee in (select role from session_roles)))
А в своей схеме то он может делать что угодно с ней безо всяких привилегий
--Eugene--
Дата: 26.05.2006 09:27:28
а как поступать, если пользователь пользуется таблицей через синоним и не является ее owner-ом ?
SkipUFO
Дата: 21.08.2006 11:27:56
select decode(o.type#,2,'TABLE',
				4,'VIEW',
				6,'SEQUENCE',
				7,'PROCEDURE',
				8,'FUNCTION',
				9,'PACKAGE',
				13,'TYPE',
				22,'LIBRARY',
				23,'DIRECTORY',
				24,'QUEUE',
				29,'JAVA CLASS',
				30,'JAVA RESOURCE',
				32,'INDEXTYPE',
				33,'OPERATOR',
				48,'CONSUMER GROUP',
				62,'EVALUATION CONTEXT',
				'UNDEFINED') object_type,
		t.name privilege, 
    g.name grantee, 
    u.name grantor, 
    o.name

from 
    sys.obj$ o
inner join sys.objauth$ a on a.obj#=o.obj#
inner join sys.table_privilege_map t on a.privilege#=t.privilege
inner join sys.user$ g on a.grantee#=g.user#--grantee
inner join sys.user$ u on u.user#=o.owner#--owner/grantor

запрос возвращает все привилегии всех объектов, правда выполняется из под sys