Está en la página 1de 13

GESTIÓN DE CUENTAS DE USUARIOS

1. Como usuario admin, crear un usuario llamado testadmin autenticado por la base de
datos. Indicar como espacio de tabla (tablespace) predeterminado USERS y como
espacio de tabla (tablespace) temporal TEMP. Asignar una cuota de 500K en el
tablespace USERS.

SQL> CONNECT admin/oracle;


SQL> CREATE USER testadmin IDENTIFIED BY test DEFAULT TABLESPACE
USERS TEMPORARY TABLESPACE TEMP QUOTA 500K ON USERS;

2. Consultar el usuario desde la vista de todos los usuarios de la base de datos.

SQL> SELECT USERNAME FROM DBA_USERS WHERE


USERNAME='TESTADMIN';

3. Intentar conectarse como usuario testadmin.

SQL> CONNECT testadmin/test ---- No se pudo conectar porque carece de privilegios


4. Como usuario admin, verificar los roles, privilegios de sistema y privilegios sobre objetos
que han sido otorgados al usuario testadmin.

SQL> CONNECT admin/oracle;


SQL> SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE='TESTADMIN’; -----
No row selected
SQL> SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='TESTADMIN';-------
No row selected
SQL> SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE='TESTADMIN'; -------
No row selected
5. Otorgar el privilegio CREATE SESSION al usuario testadmin e intentar de nuevo la
conexión.

SQL> GRANT CREATE SESSION TO testadmin;


SQL> CONNECT testadmin/test

6. Como usuario testadmin, crear un usuario llamado test00 que tenga como tablespace
predeterminado USERS y como tablespace temporal TEMP . Asignar una cuota de 0K en el
tablespace USERS.

SQL> SHOW USER


SQL> CREATE USER test00 IDENTIFIED BY test DEFAULT TABLESPACE
USERS TEMPORARY TABLESPACE TEMP QUOTA 0K ON USERS; ---invalid quota
especification
7. Como usuario admin, otorgar el privilegio CREATE USER al usuario testadmin y repetir el
ejercicio anterior.

SQL> CONNECT admin/oracle;


SQL> GRANT CREATE USER TO testadmin;
SQL> CONNECT testadmin/test
SQL> CREATE USER test00 IDENTIFIED BY test DEFAULT TABLESPACE
USERS TEMPORARY TABLESPACE TEMP QUOTA 0K ON USERS; ---Esta secuencia
no funcionó
8. Como usuario admin, Verificar los usuarios de la base de datos que tienen asignado el
privilegio CREATE USER y el privilegio CREATE SESSION de forma directa.8

SQL> CONNECT admin/oracle


SQL> SELECT * FROM DBA_SYS_PRIVS WHERE PRIVILEGE ='CREATE USER' ----
No rows selected
SQL> SELECT * FROM DBA_SYS_PRIVS WHERE PRIVILEGE ='CREATE
SESSION' ------ No rows selected
9. Crear dos tablespaces, gestionados de forma local y con gestión automática de extensiones,
llamados nómina y academo , que contendrán datos relativos a las aplicaciones de nómina y
datos académicos de los empleados de una empresa, según las siguientes características:

En Windows:
SQL> CREATE TABLESPACE nomina DATAFILE
'C:\oraclexe\app\oracle\oradata\XE\nomina.dbf' SIZE 1M;

SQL> CREATE TABLESPACE academo DATAFILE


'C:\oraclexe\app\oracle\oradata\XE\academo.dbf' SIZE 1M;

10. Crear dos tablespaces temporales, gestionados de forma local y con gestión automática de
extensiones, llamados temp_nomina y temp_academo, con las siguientes características:

En Windows:

SQL> CREATE TEMPORARY TABLESPACE temp_nomina TEMPFILE


'C:\oraclexe\app\oracle\oradata\XE\temp_nomina.dbf' SIZE 1600K;
SQL> CREATE TEMPORARY TABLESPACE temp_academo TEMPFILE
'C:\oraclexe\app\oracle\oradata\XE\temp_academo.dbf' SIZE 1500K;

11. Como usuario testadmin, intentar crear el rol testadmin .

SQL> CONNECT testadmin/test


SQL> CREATE ROLE testadmin; -----Privilegios insuficientes

12. Como usuario admin, intentar crear el rol testadmin .

SQL> CONNECT admin/oracle


SQL> CREATE ROLE testadmin; --- conflictos con otro rol o usuario del mismo nombre

13. Verificar en el diccionario de datos los usuarios o roles que poseen el privilegio CREATE
ROLE .

SQL> SELECT * FROM DBA_SYS_PRIVS WHERE PRIVILEGE ='CREATE ROLE'

14. Crear un rol llamado testroladmin , asignarle los privilegios CREATE SESSION ,
CREATE USER y CREATE ROLE . Asignarlo al usuario testadmin .

SQL> CREATE ROLE testroladmin;


SQL> GRANT CREATE SESSION TO testroladmin;
SQL> GRANT CREATE USER TO testroladmin
SQL> GRANT CREATE ROLE TO testroladmin

15. Consultar los privilegios de sistema que tiene asignado de forma directa el usuario
testadmin , removerlos y asignarle el rol testroladmin .

SQL> SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='TESTADMIN';


SQL> REVOKE CREATE SESSION FROM testadmin;
SQL> REVOKE CREATE USER FROM testadmin;
SQL> GRANT testroladmin TO testadmin;

16. Como usuario admin , crear un usuario llamado test01 , autenticado por base de datos y sin
asignar un tablespace predeterminado ni temporal.

SQL> CONNECT admin/oracle;


SQL> CREATE USER test01 IDENTIFIED BY test;

17. Consultar en las vistas correspondientes los tablespaces y la cuota en cada tablespace que
tienen los los usuarios sysadmin , admin , testadmin , test00 y test01 .

SQL> SELECT USERNAME, DEFAULT_TABLESPACE,


TEMPORARY_TABLESPACE
FROM DBA_USERS WHERE USERNAME IN ('SYSADMIN', 'ADMIN',
'TESTADMIN', 'TEST00', 'TEST01');

SQL> SELECT USERNAME, TABLESPACE_NAME, MAX_BYTES FROM


DBA_TS_QUOTAS WHERE USERNAME IN ('SYSADMIN', 'ADMIN',
'TESTADMIN', 'TEST00', 'TEST01'

18. Crear un usuario llamado test02 autenticado por base de datos, asignando como tablespace
predeterminado nomina y como tablespace temporal temp_nomina (sin especificar cuota).

SQL> CREATE USER test02 IDENTIFIED BY test DEFAULT TABLESPACE


nomina TEMPORARY TABLESPACE temp_nomina;
19. Asignar al usuario test01 los tablespaces academo y temp_academo como tablespaces
predeterminado y temporal, respectivamente (sin especificar cuota).

SQL> ALTER USER test01 DEFAULT TABLESPACE academo;


SQL> ALTER USER test01 TEMPORARY TABLESPACE temp_academo;

20. Consultar en la vista correspondiente, las cuotas que tienen los usuarios test01 y test02 en
los tablespaces.

SQL> SELECT * FROM DBA_TS_QUOTAS WHERE USERNAME IN ('TEST01',


'TEST02'); ------ No rows selected

21. Crear un rol llamado conexion y asignarle el permiso CREATE SESSION

SQL> CREATE ROLE conexion;


SQL> GRANT CREATE SESSION TO conexion;

22. Asignar el rol conexion a los usuarios test00 , test01 y test02 .

SQL> GRANT conexion TO test00, test01, test02;

23. Verificar en la vista correspondiente, los roles asignados a test00 , test01 y test02 .

SQL> SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE IN ('TEST00',


'TEST01', 'TEST02');

24. Conectarse como usuario test01 e intentar crear la siguiente tabla codigos en el tablespace
academo .

SQL> CONNECT test01/test;


SQL> CREATE TABLE codigos (codigo VARCHAR2(3), descripcion
VARCHAR2(20)) TABLESPACE academo STORAGE (INITIAL 64K NEXT 64K
MINEXTENTS 5 MAXEXTENTS 10); ----- Privilegios insuficientes

25. Como usuario admin , crear un rol llamado desarrollo y otorgarle los permisos CREATE
SEQUENCE , CREATE SESSION , CREATE SYNONYM , CREATE TABLE y
CREATE VIEW . Asignar el rol desarrollo a los usuarios test00 , test01 y test02 .

SQL> CONNECT admin/oracle


SQL> CREATE ROLE desarrollo;
SQL> GRANT CREATE SEQUENCE, CREATE SESSION, CREATE SYNONYM,
CREATE TABLE, CREATE VIEW TO desarrollo;
SQL> GRANT desarrollo TO test00, test01, test02;

26. Como usuario test01 , crear la tabla codigos en el tablespace academo .


SQL> CONNECT test01/test;
SQL> CREATE TABLE codigos (codigo VARCHAR2(3), descripcion
VARCHAR2(20)) TABLESPACE academo STORAGE (INITIAL 64K NEXT 64K
MINEXTENTS 5 MAXEXTENTS 10); ---- Sin privilegio en tablespace academo
27. Como usuario admin , asignar cuota ilimitada al usuario test01 en el tablespace academo .
Luego, repetir el ejercicio anterior.

SQL> CONNECT admin/oracle


SQL> ALTER USER test01 QUOTA UNLIMITED ON academo;
SQL> CONNECT test01/test;
SQL> CREATE TABLE codigos (codigo VARCHAR2(3), descripcion
VARCHAR2(20)) TABLESPACE academo STORAGE (INITIAL 64K NEXT 64K
MINEXTENTS 5 MAXEXTENTS 10);

28. Como usuario admin, asignar cuota ilimitada al usuario test02 en el tablespace nómina.

SQL> CONNECT admin/oracle


SQL> ALTER USER test02 QUOTA UNLIMITED ON nomina;

29. Obtener información sobre roles, privilegios de sistema, tablespaces y cuotas para los
usuarios test00 , test01 y test02 .

SQL> SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE IN ('TEST00',


'TEST01', 'TEST02');
SQL> SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE IN ('TEST00',
'TEST01', 'TEST02');
SQL> SELECT USERNAME , TABLESPACE_NAME , BYTES FROM
DBA_TS_QUOTAS WHERE USERNAME IN ('TEST00', 'TEST01', 'TEST02');

30. Asignar cuota cero en el tablespace por defecto para el usuario test01 . Verificar si sus
objetos aún existen y si es posible crear otro objeto (por ejemplo, una tabla).

SQL> ALTER USER test01 QUOTA 0K ON academo;


SQL> SELECT OWNER, TABLE_NAME FROM DBA_TABLES WHERE
OWNER='TEST01';
SQL> CONNECT test01/test
SQL> CREATE TABLE codigos2 (codigo VARCHAR2(3), descripcion
VARCHAR2(20)) TABLESPACE academo STORAGE (INITIAL 64K NEXT 64K
MINEXTENTS 5 MAXEXTENTS 10); -------quota de espacio excedida

31. Como usuario test01 , intentar modificar su cuota en el tablespace academo .

SQL> CONNECT test01/test


SQL> ALTER USER test01 QUOTA UNLIMITED ON academo; ---- insuficientes
privilegios

32. Como usuario test01 , modificar su clave.

SQL> CONNECT test01/test


SQL> ALTER USER test01 IDENTIFIED BY test01;

33. Como usuario admin , consultar los usuarios o roles de la base de datos que tienen asignado
el privilegio ALTER USER

SQL> CONNECT admin/oracle


SQL> SELECT * FROM DBA_SYS_PRIVS WHERE PRIVILEGE='ALTER USER';

34. Abrir dos SQL*Plus. En el primer SQL*Plus, conectarse con el usuario test02 . En el
segundo SQL*Plus, conectarse con el usuario testadmin e intentar eliminar el usuario test02
.

SQL*Plus 1:
SQL> CONNECT test02/test
SQL*Plus 2:
SQL> CONNECT testadmin/test
SQL> DROP USER test02; ---- insuficientes privilegios

35. En el segundo SQL*Plus, conectarse como usuario admin y asignar el permiso DROP
USER al rol testroladmin . Luego, consultar los usuarios y roles de la base de datos que
tienen el privilegio DROP USER .

SQL*Plus 2:
SQL> CONNECT admin/oracle
SQL> GRANT DROP USER to testroladmin;
SQL> SELECT * FROM DBA_SYS_PRIVS WHERE PRIVILEGE='DROP USER';

36. En el segundo SQL*Plus, conectarse con el usuario testadmin e intentar eliminar el usuario
test02 .

SQL*Plus 2:
SQL> CONNECT testadmin/test
SQL> DROP USER test02; --- no se puede eliminar un usuario conectado.

37. Cerrar uno de los dos SQL*Plus. Luego, como usuario testadmin , crear el usuario test03 ,
autentificado por base de datos y con asignación de cuotas en los tablespaces academo (
500K ) y nomina ( 200K ). Su tablespace por defecto será academo y temporal será TEMP .

SQL> CONNECT testadmin/test


SQL> CREATE USER test03 IDENTIFIED BY test
DEFAULT TABLESPACE academo
TEMPORARY TABLESPACE temp
QUOTA 500K ON academo
QUOTA 200K ON nomina;

38. Como usuario admin , consultar los usuarios o roles de la base de datos que tienen asignado
el privilegio CREATE PROFILE. Luego, asignar este privilegio al rol testroladmin .

SQL> CONNECT admin/oracle


SQL> SELECT * FROM DBA_SYS_PRIVS WHERE PRIVILEGE='CREATE
PROFILE';
SQL> GRANT CREATE PROFILE TO testroladmin;

39. Consultar los perfiles definidos en la base de datos y los límites de recursos que fija cada
uno de estos perfiles.

SQL> SELECT PROFILE, RESOURCE_NAME, LIMIT FROM DBA_PROFILES


ORDER BY PROFILE, RESOURCE_NAME;

40. Consultar los perfiles que tiene asignados cada usuario de la base de datos.

SQL> SELECT USERNAME, PROFILE FROM DBA_USERS ORDER BY


USERNAME;
41. Crear un perfil llamado desarrollo con las siguientes especificaciones:
Sesiones por usuario 2
CPU por sesión ilimitado
CPU por llamada 6000
Tiempo de conexión 480
Tiempo de inactividad 2
Intentos de inicio de sesión fallidos 2
Tiempo de vida de la contraseña 120

SQL> CREATE PROFILE desarrollo LIMIT


SESSIONS_PER_USER 2
CPU_PER_SESSION UNLIMITED
CPU_PER_CALL 6000
CONNECT_TIME 480
IDLE_TIME 2
FAILED_LOGIN_ATTEMPTS 2
PASSWORD_LIFE_TIME 120;

42. Asignar el perfil desarrollo a los usuarios test00 , test01 , test02 y test03 .

SQL> ALTER USER test00 PROFILE desarrollo;


SQL> ALTER USER test01 PROFILE desarrollo;
SQL> ALTER USER test02 PROFILE desarrollo;
SQL> ALTER USER test03 PROFILE desarrollo;

43. Desconectar el usuario actual e intentar tres veces la conexión con el usuario test01 usando
una contraseña incorrecta. Luego, como usuario admin , comprobar si la cuenta ha sido
bloqueada en la vista correspondiente.

SQL> DISCONNECT
SQL> CONNECT test01/test
SQL> CONNECT test01/test
SQL> CONNECT test01/test
SQL> CONNECT admin/oracle
SQL> SELECT USERNAME, LOCK_DATE FROM DBA_USERS WHERE
USERNAME
LIKE 'TEST%';

44. Crear un usuario test04 con el parámetro PASSWORD EXPIRE , asignándole como
tablespace por defecto USERS (cuota 0K ) y tablespace temporal TEMP . Asignar los roles
conexion y desarrollo a este usuario. Conectarse como usuario test04 y verificar qué
sucede.

SQL> CREATE USER test04 IDENTIFIED BY test


DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
QUOTA 0K ON USERS
PASSWORD EXPIRE;
SQL> GRANT conexion, desarrollo TO test04;
SQL> CONNECT test04

45. Como usuario admin , bloquear la cuenta del usuario test04 y verificar qué sucede al
intentar conectarse de nuevo.

SQL> CONNECT admin/oracle


SQL> ALTER USER test04 ACCOUNT LOCK;
SQL> CONNECT test04 ------la cuenta está bloqueada

46. Como usuario admin , modificar el tablespace por defecto y el temporal del usuario test01
para que sean nomina y temp_nomina .

SQL> CONNECT admin/oracle


SQL> ALTER USER test01 DEFAULT TABLESPACE nomina;
SQL> ALTER USER test01 TEMPORARY TABLESPACE temp_nomina;

47. Comprobar si se ha establecido el parámetro OS_AUTHENT_PREFIX en la base de datos.


Abrir el archivo de parámetros de inicialización initXE.ora

Ubicación por defecto en Windows:


C:\oraclexe\app\oracle\product\11.2.0\server\database\init
XE.ora

48. Si el parámetro OS_AUTHENT_PREFIX ha sido establecido con un valor diferente a


""(nulo), editar el archivo initXE.ora e indicar OS_AUTHENT_PREFIX="". En caso que el
parámetro no haya sido establecido o que se haya indicado con un valor nulo (""), saltar
este paso.

49. Cambiar la autenticación del usuario test01 para que sea autenticado por el Sistema
Operativo (SO).

SQL> ALTER USER test01 IDENTIFIED EXTERNALLY;

50. Verificar en la vista del diccionario de datos correpondiente cómo aparece el tipo de
autenticación del usuario test01 .

SQL> SELECT AUTHENTICATION_TYPE FROM DBA_USERS WHERE


USERNAME='TEST01';

51. Si se cuenta con un usuario administrador (o root) del SO, crear una cuenta de usuario en el
SO con el nombre test01 y contraseña test . -----Este ok

52. Si se pudo realizar el paso 51, ingresar en el SO utilizando la cuenta de usuario test01 y
abrir SQL*Plus en una ventana de comandos (en Windows) o en una sesión de terminal (en
Linux). En SQL*Plus, contectarse con el usuario test01 utilizando la autenticación SO.

SQL> CONNECT / -------------Estte tipo de autenticación no sirvió porque igual pide contraseña
53. Si se realizó el paso 52, volver a la cuenta de usuario que se ha estado utilizando. Como
usuario admin , desbloquear la cuenta del usuario test04 .

SQL> CONNECT admin/oracle


SQL> ALTER USER test04 ACCOUNT UNLOCK;

54. Modificar los valores del perfil DEFAULT con las siguientes especificaciones:

Sesiones por usuario 5


CPU por sesión ilimitado
CPU por llamada 6000
Tiempo de conexión 600
Tiempo de inactividad 60
Intentos de inicio de sesión fallidos 3
Tiempo de vida de la contraseña 180

SQL> ALTER PROFILE DEFAULT LIMIT


SESSIONS_PER_USER 5
CPU_PER_SESSION UNLIMITED
CPU_PER_CALL 6000
CONNECT_TIME 600
IDLE_TIME 60
FAILED_LOGIN_ATTEMPTS 3

55. Consultar los usuarios o roles que tienen asignado el privilegio ALTER PROFILE.

SQL> SELECT GRANTEE FROM DBA_SYS_PRIVS WHERE PRIVILEGE='ALTER


PROFILE';

56. Asignar el privilegio ALTER PROFILE al rol testroladmin .

SQL> GRANT ALTER PROFILE TO testroladmin;

57. Consultar los valores límite de los recursos del perfil desarrollo . Luego, modificar el perfil
desarrollo según las siguientes especificaciones y verificar el valor del tiempo de conexión:

Sesiones por usuario 5


Tiempo de conexión DEFAULT
Tiempo de inactividad 30

SQL> SELECT RESOURCE_NAME, LIMIT FROM DBA_PROFILES WHERE


PROFILE='DESARROLLO';
SQL> ALTER PROFILE desarrollo LIMIT
SESSIONS_PER_USER 5
CONNECT_TIME DEFAULT
IDLE_TIME 60;
SQL> SELECT RESOURCE_NAME, LIMIT FROM DBA_PROFILES WHERE
PROFILE='DESARROLLO';
58. Consultar los privilegios de sistema y los roles que tiene asignados los roles por defecto
CONNECT , RESOURCE , DBA , EXP_FULL_DATABASE e IMP_FULL_DATABASE
.

SQL> SELECT GRANTEE, GRANTED_ROLE FROM DBA_ROLE_PRIVS WHERE


GRANTEE IN ('CONNECT', 'RESOURCE', 'DBA', 'EXP_FULL_DATABASE',
'IMP_FULL_DATABASE') ORDER BY GRANTEE, GRANTED_ROLE;
SQL> SELECT GRANTEE, PRIVILEGE FROM DBA_SYS_PRIVS WHERE GRANTEE
IN ('CONNECT', 'RESOURCE', 'DBA', 'EXP_FULL_DATABASE',
'IMP_FULL_DATABASE') ORDER BY GRANTEE, PRIVILEGE;

59. Asignar el perfil DESARROLLO al rol CONNECT e intentar el perfil DEFAULT al perfil
DESARROLLO . Ambas operaciones son permitidas?

SQL> GRANT DESARROLLO TO CONNECT;


SQL> GRANT DEFAULT TO DESARROLLO; -----------El rol default no existe

60. consultar los usuarios o roles que tienen asignado el privilegio DROP PROFILE .

SQL> SELECT GRANTEE FROM DBA_SYS_PRIVS WHERE PRIVILEGE='DROP


PROFILE';

61. Asignar el prvilegio DROP PROFILE al rol testroladmin .

SQL> GRANT DROP PROFILE TO testroladmin;

62. Como usuario admin , intentar eliminar el perfil DEFAULT .

SQL> CONNECT admin/oracle


SQL> DROP PROFILE DEFAULT;
SQL> DROP PROFILE DEFAULT CASCADE;

63. Crear rol testrolsecreto identificado por la contraseña test y asignarlo al usuario test04 .

SQL> CREATE ROLE testrolsecreto IDENTIFIED BY test;


SQL> GRANT testrolsecreto TO test04;

64. Consultar los usuarios que poseen el privilegio ALTER ANY ROLE (de forma directa o a
través de roles).

SQL> SELECT GRANTEE FROM DBA_SYS_PRIVS WHERE PRIVILEGE='ALTER


ANY ROLE';
SQL> SELECT GRANTEE FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE IN
(SELECT GRANTEE FROM DBA_SYS_PRIVS WHERE PRIVILEGE='ALTER ANY
ROLE');

65. Consultar el número máximo de roles que permite la base de datos.

SQL> SHOW PARAMETERS MAX_ENABLED_ROLES


66. Consultar los usuarios que poseen el privilegio GRANT ANY ROLE (de forma directa o a
través de roles).

SQL> SELECT GRANTEE FROM DBA_SYS_PRIVS WHERE PRIVILEGE='GRANT


ANY ROLE';
SQL> SELECT GRANTEE FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE IN
(SELECT GRANTEE FROM DBA_SYS_PRIVS WHERE PRIVILEGE='GRANT ANY
ROLE');
SQL> SELECT UNIQUE(GRANTEE) FROM DBA_ROLE_PRIVS WHERE
GRANTED_ROLE IN (SELECT GRANTEE FROM DBA_SYS_PRIVS WHERE
PRIVILEGE='GRANT ANY ROLE');

67. Remover el rol testrolsecreto del usuario test04 .

SQL> REVOKE testrolsecreto FROM test04;

68. Asignar el prvilegio GRANT ANY ROLE al rol testroladmin .

SQL> GRANT GRANT ANY ROLE TO testroladmin;

69. Nuevamente, consultar los usuarios que poseen el privilegio GRANT ANY ROLE (de
forma directa o a través de roles).

SQL> SELECT GRANTEE FROM DBA_SYS_PRIVS WHERE PRIVILEGE='GRANT


ANY ROLE';
SQL> SELECT UNIQUE(GRANTEE) FROM DBA_ROLE_PRIVS WHERE
GRANTED_ROLE IN (SELECT GRANTEE FROM DBA_SYS_PRIVS WHERE
PRIVILEGE='GRANT ANY ROLE');

70. Consultar los usuarios que poseen el privilegio DROP ANY ROLE (de forma directa o a
través de roles).

SQL> SELECT GRANTEE FROM DBA_SYS_PRIVS WHERE PRIVILEGE='DROP


ANY ROLE';
SQL> SELECT UNIQUE(GRANTEE) FROM DBA_ROLE_PRIVS WHERE
GRANTED_ROLE IN (SELECT GRANTEE FROM DBA_SYS_PRIVS WHERE
PRIVILEGE='DROP ANY ROLE');

71. Asignar los roles conexión y testrolsecreto al usuario test03 . Conectarse con el usuario
test03 e intentar borrar el rol testrolsecreto .

SQL> GRANT conexion TO test03;


SQL> GRANT testrolsecreto TO test03;
SQL> CONNECT test03/test
SQL> DROP ROLE testrolsecreto; ----Privilegios insuficientes

72. Como usuario admin , consultar los roles del usuario test04 y verificar cuáles están activos
(por defecto) cuando se conecta el usuario. Luego, establecer solamente el rol conexion
como el rol activo cuando se conecta el usuario. Verificar los cambios en la vista del
diccionario de datos correspondiente.
SQL> CONNECT admin/oracle
SQL> SELECT GRANTED_ROLE, DEFAULT_ROLE FROM DBA_ROLE_PRIVS
WHERE GRANTEE='TEST04'; ------- No rows selected

73. Establecer solamente el rol conexion como el rol activo cuando se conecta el usuario test04
y verificar los cambios realizados en la vista del diccionario de datos correspondiente.

SQL> ALTER USER test04 DEFAULT ROLE conexion;


SQL> SELECT GRANTED_ROLE, DEFAULT_ROLE FROM DBA_ROLE_PRIVS
WHERE GRANTEE='TEST04'; --- No row selected

74. Conectado como usuario test04 , consultar los roles activos en la sesión. Luego, activar el
rol desarrollo y consultar nuevamente los roles activos en la sesión. Después, desactivar
todos los roles y consultar de nuevo los roles activos en la sesión. Finalmente, activar todos
los roles y consultar los roles activos en la sesión.

SQL> CONNECT test04/test


SQL> SELECT * FROM SESSION_ROLES;
SQL> SET ROLE desarrollo;
SQL> SELECT * FROM SESSION_ROLES;
SQL> SET ROLE NONE;
SQL> SELECT * FROM SESSION_ROLES;
SQL> SET ROLE ALL;
SQL> SELECT * FROM SESSION_ROLES;

75. Como usuario admin , asignar el rol RESOURCE al usuario testadmin y consultar los
privilegios asignados al rol RESOURCE . Luego, consultar todos los privilegios asignados
al usuario testadmin , incluyendo tanto los privilegios asignados de forma directa como los
privilegios asignados a través de roles.

SQL> CONNECT admin/oracle


SQL> GRANT RESOURCE TO testadmin;
SQL> SELECT PRIVILEGE FROM DBA_SYS_PRIVS WHERE
GRANTEE='RESOURCE';
SQL> SELECT PRIVILEGE FROM DBA_SYS_PRIVS WHERE
GRANTEE='TESTADMIN' OR GRANTEE IN (SELECT GRANTED_ROLE FROM
DBA_ROLE_PRIVS WHERE GRANTEE='TESTADMIN');

76. Continuar conectado como el usuario admin y otorgar al usuario test02 el permiso para
seleccionar datos de la tabla codigos (tabla propiedad del usuario test01 , por lo que se debe
utilizar test01.codigos ). Adicionalmente, cambiar la autenticación del usuario test01 para
que sea autenticado por contraseña.

SQL> SHOW USER


SQL> GRANT SELECT ON test01.codigos TO test02;
SQL> ALTER USER test01 IDENTIFIED BY test;

77. Conectarse como usuario test01 e insertar una fila en la tabla codigos . Luego, consultar los
datos de la tabla codigos (se puede realizar sin indicar el propietario de la tabla, es decir, sin
utilizar el prefijo test01. ). Finalmente, otorgar al usuario test03 el permiso para seleccionar
datos de la tabla codigos , adicionado la opción para que el usuario test03 también pueda
otorgar este permiso a otros usuarios.

SQL> CONNECT test01/test


SQL> INSERT INTO codigos VALUES ('t01', 'test 01');
SQL> SELECT * FROM codigos;
SQL> SELECT * FROM test01.codigos;
SQL> GRANT SELECT ON codigos TO test03 WITH GRANT OPTION; ---- The account
is locked

78. Conectarse como usuario test02 y consultar los datos de la tabla codigos (se debe indicar el
propietario de la tabla, es decir, utilizar el prefijo test01. ). Luego, intentar otorgar al
usuario test04 el permiso para seleccionar datos de la tabla codigos .

SQL> CONNECT test02/test


SQL> SELECT * FROM test01.codigos;
SQL> GRANT SELECT ON test01.codigos TO test04;

79. Conectarse como usuario test03 y consultar los datos de la tabla codigos (se debe indicar el
propietario de la tabla, es decir, utilizar el prefijo test01. ). Luego, otorgar al usuario test04
el permiso para seleccionar datos de la tabla codigos .

SQL> CONNECT test03/test


SQL> SELECT * FROM test01.codigos;
SQL> GRANT SELECT ON test01.codigos TO test04;

También podría gustarte