Diferència entre revisions de la pàgina «M2 - Bases de dades / Exercicis UF3: Llenguatges SQL / Solucions Gestió d'usuaris»

De wikiserver
Dreceres ràpides: navegació, cerca
(Gestió d'usuaris)
Línia 3: Línia 3:
 
1. Buscar en la bd el contenido de las vistas: dba_profiles ; dba_roles; dba_users; dba_role_privs ; dba_tab_privs ; dba_sys_privs. (antes de hacer select * sobre estas vistas consultar con un  describe o desc las columnas que nos interesan)
 
1. Buscar en la bd el contenido de las vistas: dba_profiles ; dba_roles; dba_users; dba_role_privs ; dba_tab_privs ; dba_sys_privs. (antes de hacer select * sobre estas vistas consultar con un  describe o desc las columnas que nos interesan)
 
<pre>
 
<pre>
DESC DBA_PROFILES
+
SQL> DESC DBA_PROFILES
  
DESC DBA_ROLES
+
SQL> DESC DBA_ROLES
  
DESC DBA_USERS
+
SQL> DESC DBA_USERS
  
DESC DBA_ROLE_PRIVS
+
SQL> DESC DBA_ROLE_PRIVS
  
DESC DBA_TAB_PRIVS
+
SQL> desc DBA_TAB_PRIVS
  
DESC DBA_SYS_PRIVS
+
SQL> DESC DBA_SYS_PRIVS
 
</pre>
 
</pre>
 
2. Conectarse como usuario SYSTEM a la base y crear un usuario llamado “administrador” autentificado por la base de datos. Indicar como "tablespace" por defecto USERS y como "tablespace" temporal TEMP; asignar una cuota de 500K en el "tablespace" USERS.  
 
2. Conectarse como usuario SYSTEM a la base y crear un usuario llamado “administrador” autentificado por la base de datos. Indicar como "tablespace" por defecto USERS y como "tablespace" temporal TEMP; asignar una cuota de 500K en el "tablespace" USERS.  
 
<pre>
 
<pre>
CREATE USER ADMINISTRADOR IDENTIFIED BY ADMIN
+
SQL> CREATE USER ADMINISTRADOR IDENTIFIED BY ADMIN
DEFAULT TABLESPACE USERS
+
2 DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
+
3 TEMPORARY TABLESPACE TEMP
QUOTA 500K ON USERS;
+
4 QUOTA 500K ON USERS;
  
SELECT USERNAME FROM DBA_USERS WHERE USERNAME='ADMINISTRADOR';
+
User created.
 +
 
 +
SQL> SELECT USERNAME FROM DBA_USERS WHERE USERNAME='ADMINISTRADOR';
  
 
USERNAME
 
USERNAME
Línia 37: Línia 39:
 
4. Averiguar qué privilegios de sistema, roles y privilegios sobre objetos tiene concedidos el usuario “administrador”.  
 
4. Averiguar qué privilegios de sistema, roles y privilegios sobre objetos tiene concedidos el usuario “administrador”.  
 
<pre>
 
<pre>
select * from dba_role_privs where grantee='ADMINISTRADOR';
+
SQL> select * from dba_role_privs where grantee='ADMINISTRADOR';
 +
 
 +
no rows selected
 +
 
 +
SQL> select * from dba_tab_privs where grantee='ADMINISTRADOR';
 +
 
 +
no rows selected
 +
 
 +
SQL> select * from dba_sys_privs where grantee='ADMINISTRADOR';
  
select * from dba_tab_privs where grantee='ADMINISTRADOR';
+
no rows selected
  
select * from dba_sys_privs where grantee='ADMINISTRADOR';
 
 
</pre>
 
</pre>
 
5. Otorgar el privilegio “CREATE SESSION” al usuario “administrador” e intentar de nuevo la conexión sqlplus.  
 
5. Otorgar el privilegio “CREATE SESSION” al usuario “administrador” e intentar de nuevo la conexión sqlplus.  
 
<pre>
 
<pre>
grant create session to administrador;
+
SQL> grant create session to administrador;
  
 
Grant succeeded.
 
Grant succeeded.
  
connect administrador
+
SQL> connect administrador
 
Enter password:
 
Enter password:
 +
 
Connected.
 
Connected.
 +
 
</pre>
 
</pre>
 
6. Conectarse como usuario “administrador” y crear un usuario llamado “prueba00” que tenga como "tablespace" por defecto USERS y como "tablespace" temporal TEMP; asignar una cuota de 0K en el "tablespace" USERS. ¿Es posible hacerlo?.  
 
6. Conectarse como usuario “administrador” y crear un usuario llamado “prueba00” que tenga como "tablespace" por defecto USERS y como "tablespace" temporal TEMP; asignar una cuota de 0K en el "tablespace" USERS. ¿Es posible hacerlo?.  
 
<pre>
 
<pre>
show user
+
SQL> show user
 
USER is "ADMINISTRADOR"
 
USER is "ADMINISTRADOR"
 +
 +
SQL> create user prueba00 identified by prueba00
 +
2 default tablespace users
 +
3 temporary tablespace temp
 +
4 quota 0k on users;
  
 
create user prueba00 identified by prueba00
 
create user prueba00 identified by prueba00
default tablespace users
+
*
temporary tablespace temp
 
quota 0k on users;
 
 
 
 
ERROR at line 1:
 
ERROR at line 1:
 
ORA-01031: insufficient privileges
 
ORA-01031: insufficient privileges
Línia 68: Línia 81:
 
7.  Conectado como usuario SYSTEM, otorgar el privilegio “create user” al usuario “administrador” y repetir el ejercicio anterior.  
 
7.  Conectado como usuario SYSTEM, otorgar el privilegio “create user” al usuario “administrador” y repetir el ejercicio anterior.  
 
<pre>
 
<pre>
grant create user to administrador;
+
Enter user-name: system
 +
Enter password:
 +
 
 +
Connected to:
 +
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
 +
With the Partitioning and Oracle Label Security options
 +
JServer Release 9.2.0.1.0 - Production
 +
 
 +
SQL> grant create user to administrador;
 +
 
 
Grant succeeded.
 
Grant succeeded.
  
connect administrador
+
SQL> connect administrador
 
Enter password:
 
Enter password:
 
Connected.
 
Connected.
  
create user prueba00 identified by prueba00
+
SQL> create user prueba00 identified by prueba00
default tablespace users
+
2 default tablespace users
temporary tablespace temp
+
3 temporary tablespace temp
quota 0k on users;
+
4*quota 0k on users
  
 
User created.
 
User created.
Línia 84: Línia 106:
 
8. Averiguar que usuarios de la base de datos tienen asignado el privilegio “create user” de forma directa, ¿qué vista debe ser consultada?.  
 
8. Averiguar que usuarios de la base de datos tienen asignado el privilegio “create user” de forma directa, ¿qué vista debe ser consultada?.  
 
<pre>
 
<pre>
connect system
+
SQL> connect system
 
Introduzca su clave:
 
Introduzca su clave:
 
Connected.
 
Connected.
  
desc dba_sys_privs
+
SQL> desc dba_sys_privs
  
 
Nombre                                    ¿Nulo?  Tipo
 
Nombre                                    ¿Nulo?  Tipo
Línia 96: Línia 118:
 
ADMIN_OPTION                                      VARCHAR2(3)
 
ADMIN_OPTION                                      VARCHAR2(3)
  
select * from dba_sys_privs where privilege ='CREATE USER';
+
SQL> select * from dba_sys_privs where privilege ='CREATE USER';
 +
 
 
GRANTEE                        PRIVILEGE                                ADM
 
GRANTEE                        PRIVILEGE                                ADM
 
------------------------------ ---------------------------------------- ---
 
------------------------------ ---------------------------------------- ---
Línia 105: Línia 128:
 
9. Hacer lo mismo para el privilegio “create session”.  
 
9. Hacer lo mismo para el privilegio “create session”.  
 
<pre>
 
<pre>
select * from dba_sys_privs where privilege ='CREATE SESSION';
+
SQL> select * from dba_sys_privs where privilege ='CREATE SESSION';
 +
 
 
GRANTEE                        PRIVILEGE                                ADM
 
GRANTEE                        PRIVILEGE                                ADM
 
------------------------------ ----------------------------------------- ---
 
------------------------------ ----------------------------------------- ---
Línia 117: Línia 141:
 
[[Imatge:gest_usu_10.png |600px|center| tablespace]]
 
[[Imatge:gest_usu_10.png |600px|center| tablespace]]
 
<pre>
 
<pre>
create tablespace academo datafile 'academo01.dbf'
+
SQL> create tablespace academo datafile 'academo01.dbf' size 1M
size 1M
+
2 autoextend on next 200k maxsize 1400K
autoextend on next 200k maxsize 1400K
+
3 default storage (initial 16k next 16k
default storage (initial 16k next 16k
+
4 minextents 1 maxextents 3);
minextents 1 maxextents 3);
 
  
 
Tablespace created.
 
Tablespace created.
  
create tablespace nomina datafile 'nomina01.dbf'
+
SQL> create tablespace nomina datafile 'nomina01.dbf' size 1M
size 1M
+
2 autoextend on next 100K maxsize 1500K
autoextend on next 100K maxsize 1500K
+
3 default storage (initial 16k next 16k
default storage (initial 16k next 16k
+
4 minextents 1 maxextents 3);
minextents 1 maxextents 3);
 
  
 
Tablespace created.
 
Tablespace created.
Línia 137: Línia 159:
 
[[Imatge:gest_usu_11.png |500px|center| tablespace]]
 
[[Imatge:gest_usu_11.png |500px|center| tablespace]]
 
<pre>
 
<pre>
create temporary tablespace temp_academo
+
SQL> create temporary tablespace temp_academo
tempfile 'temp_academo01.dbf'
+
2 tempfile 'temp_academo01.dbf'
size 500k autoextend on next 50k maxsize 600k
+
3 size 500k autoextend on next 50k maxsize 600k
extent management local uniform size 100k;
+
4 extent management local uniform size 100k;
  
 
Tablespace created.
 
Tablespace created.
  
create temporary tablespace temp_nomina
+
SQL> create temporary tablespace temp_nomina
tempfile 'temp_nomina01.dbf'
+
2 tempfile 'temp_nomina01.dbf'
size 600k autoextend on next 50k maxsize 700k
+
3 size 600k autoextend on next 50k maxsize 700k
extent management local uniform size 100k;
+
4 extent management local uniform size 100k;
  
 
Tablespace created.
 
Tablespace created.
Línia 153: Línia 175:
 
12. Estando conectado como usuario “administrador” probar a crear un rol llamado “administrador”, ¿qué ocurre?.  
 
12. Estando conectado como usuario “administrador” probar a crear un rol llamado “administrador”, ¿qué ocurre?.  
 
<pre>
 
<pre>
connect administrador
+
SQL> connect administrador
 
Enter password:
 
Enter password:
 
Connected.
 
Connected.
  
create role administrador;
+
SQL> create role administrador;
 
create role administrador
 
create role administrador
 
*
 
*
Línia 165: Línia 187:
 
13. Idem estando conectado como usuario SYSTEM, ¿qué sucede?, ¿por qué?.  
 
13. Idem estando conectado como usuario SYSTEM, ¿qué sucede?, ¿por qué?.  
 
<pre>
 
<pre>
connect system
+
SQL> connect system
 
Enter password:
 
Enter password:
 
Connected.
 
Connected.
  
create role administrador;
+
SQL> create role administrador;
 
create role administrador
 
create role administrador
*
+
        *
 
ERROR at line 1:
 
ERROR at line 1:
 
ORA-01921: role name 'ADMINISTRADOR' conflicts with another user or role name
 
ORA-01921: role name 'ADMINISTRADOR' conflicts with another user or role name
Línia 177: Línia 199:
 
14. Comprobar en el diccionario de datos los usuarios o roles que poseen el privilegio “CREATE ROLE”.  
 
14. Comprobar en el diccionario de datos los usuarios o roles que poseen el privilegio “CREATE ROLE”.  
 
<pre>
 
<pre>
select * from dba_sys_privs where privilege ='CREATE ROLE';
+
SQL> select * from dba_sys_privs where privilege ='CREATE ROLE';
  
 
GRANTEE                                        PRIVILEGE              ADM
 
GRANTEE                                        PRIVILEGE              ADM
Línia 186: Línia 208:
 
15. Crear un rol llamado “ADMIN”, asignarle los privilegios “create session”, “cr eate user” y “CREATE ROLE”. Asignarlo al usuario administrador.  
 
15. Crear un rol llamado “ADMIN”, asignarle los privilegios “create session”, “cr eate user” y “CREATE ROLE”. Asignarlo al usuario administrador.  
 
<pre>
 
<pre>
create role admin;
+
SQL> create role admin;
  
 
Role created.
 
Role created.
  
grant create session to admin;
+
SQL> grant create session to admin;
  
 
Grant succeeded.
 
Grant succeeded.
  
grant create user to admin
+
SQL> grant create user to admin;
  
 
Grant succeeded.
 
Grant succeeded.
  
grant create role to admin
+
SQL> grant create role to admin;
  
 
Grant succeeded.
 
Grant succeeded.
  
grant admin to administrador;
+
SQL> grant admin to administrador;
  
 
Grant succeeded.
 
Grant succeeded.
Línia 208: Línia 230:
 
16. Consultar los privilegios de sistema que tiene asignados de forma directa el usuario “administrador”, revocarlos y asignarle el rol “admin.”.  
 
16. Consultar los privilegios de sistema que tiene asignados de forma directa el usuario “administrador”, revocarlos y asignarle el rol “admin.”.  
 
<pre>
 
<pre>
select * from dba_sys_privs where grantee ='ADMINISTRADOR'
+
SQL> select * from dba_sys_privs where grantee ='ADMINISTRADOR';
  
 
GRANTEE                                        PRIVILEGE              ADM
 
GRANTEE                                        PRIVILEGE              ADM
Línia 215: Línia 237:
 
ADMINISTRADOR                                  CREATE USER            NO
 
ADMINISTRADOR                                  CREATE USER            NO
  
revoke create session from administrador;
+
SQL> revoke create session from administrador;
  
 
Revoke succeeded.
 
Revoke succeeded.
  
revoke create user from administrador
+
SQL> revoke create user from administrador
  
 
Revoke succeeded.
 
Revoke succeeded.
  
grant admin to administrador;
+
SQL> grant admin to administrador;
  
 
Grant succeeded.
 
Grant succeeded.
Línia 229: Línia 251:
 
17. Crear, conectado como SYSTEM, un usuario llamado “prueba01” autenticado por base de datos al que no se le asigne "tablespace" por defecto ni temporal.  
 
17. Crear, conectado como SYSTEM, un usuario llamado “prueba01” autenticado por base de datos al que no se le asigne "tablespace" por defecto ni temporal.  
 
<pre>
 
<pre>
create user prueba01 identified by prueba01;
+
SQL> create user prueba01 identified by prueba01;
  
 
User created.
 
User created.
Línia 235: Línia 257:
 
18. Consultar en las vistas correspondientes los "tablespaces" y la quota en cada uno de ellos que tiene los usuarios SYS, SYSTEM, “administrador”, “prueba00” y “prueba01”. ¿Qué ha ocurrido con el usuario “prueba01”?.  
 
18. Consultar en las vistas correspondientes los "tablespaces" y la quota en cada uno de ellos que tiene los usuarios SYS, SYSTEM, “administrador”, “prueba00” y “prueba01”. ¿Qué ha ocurrido con el usuario “prueba01”?.  
 
<pre>
 
<pre>
select substr(username,1,15) usuario, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE
+
SQL> select substr(username,1,15) usuario, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE
from dba_users
+
2 from dba_users
where username in ('SYS','SYSTEM','ADMINISTRADOR','PRUEBA00','PRUEBA01');
+
3 where username in ('SYS','SYSTEM','ADMINISTRADOR','PRUEBA00','PRUEBA01');
  
 
USUARIO            DEFAULT_TABLESPACE    TEMPORARY_TABLESPACE
 
USUARIO            DEFAULT_TABLESPACE    TEMPORARY_TABLESPACE
Línia 247: Línia 269:
 
SYS                SYSTEM                TEMP
 
SYS                SYSTEM                TEMP
  
select substr(username,1,15) usuario, tablespace_name, max_bytes  
+
SQL> select substr(username,1,15) usuario, tablespace_name, max_bytes  
from dba_ts_quotas
+
2 from dba_ts_quotas
where username in ('SYS','SYSTEM','ADMINISTRADOR','PRUEBA00','PRUEBA01');
+
3 where username in ('SYS','SYSTEM','ADMINISTRADOR','PRUEBA00','PRUEBA01');
  
 
USUARIO            TABLESPACE_NAME        MAX_BYTES
 
USUARIO            TABLESPACE_NAME        MAX_BYTES
Línia 257: Línia 279:
 
19. Crear un usuario llamado “prueba02” autenticado por base de datos, asignando como "tablespace" por defecto NOMINA y como "tablespace" temporal TEMP_NOMINA (no se le asignara cuota en NOMINA).  
 
19. Crear un usuario llamado “prueba02” autenticado por base de datos, asignando como "tablespace" por defecto NOMINA y como "tablespace" temporal TEMP_NOMINA (no se le asignara cuota en NOMINA).  
 
<pre>
 
<pre>
 +
SQL> create user prueba02 identified by prueba02
 +
2 default tablespace nomina
 +
3 temporary tablespace temp_nomina;
  
 +
User created.
 
</pre>
 
</pre>
 
20.  Asignar al usuario “prueba01” los "tablespace" ACADEMO y TEMP_ACADEMO como "tablespace" de trabajo y temporal respectivamente (sin especificar cuota).  
 
20.  Asignar al usuario “prueba01” los "tablespace" ACADEMO y TEMP_ACADEMO como "tablespace" de trabajo y temporal respectivamente (sin especificar cuota).  

Revisió del 21:21, 28 març 2014

Gestió d'usuaris

1. Buscar en la bd el contenido de las vistas: dba_profiles ; dba_roles; dba_users; dba_role_privs ; dba_tab_privs ; dba_sys_privs. (antes de hacer select * sobre estas vistas consultar con un describe o desc las columnas que nos interesan)

SQL> DESC DBA_PROFILES

SQL> DESC DBA_ROLES

SQL> DESC DBA_USERS

SQL> DESC DBA_ROLE_PRIVS

SQL> desc DBA_TAB_PRIVS

SQL> DESC DBA_SYS_PRIVS

2. Conectarse como usuario SYSTEM a la base y crear un usuario llamado “administrador” autentificado por la base de datos. Indicar como "tablespace" por defecto USERS y como "tablespace" temporal TEMP; asignar una cuota de 500K en el "tablespace" USERS.

SQL> CREATE USER ADMINISTRADOR IDENTIFIED BY ADMIN
2 DEFAULT TABLESPACE USERS
3 TEMPORARY TABLESPACE TEMP
4 QUOTA 500K ON USERS;

User created.

SQL> SELECT USERNAME FROM DBA_USERS WHERE USERNAME='ADMINISTRADOR';

USERNAME
------------------------------
ADMINISTRADOR

3. Abrir una sesión sqlplus e intentar como usuario “administrador”, ¿qué sucede?, ¿por qué?.

Enter user-name: administrador
Enter password:
ERROR:
ORA-01045: user ADMINISTRADOR lacks CREATE SESSION privilege; logon denied

4. Averiguar qué privilegios de sistema, roles y privilegios sobre objetos tiene concedidos el usuario “administrador”.

SQL> select * from dba_role_privs where grantee='ADMINISTRADOR';

no rows selected

SQL> select * from dba_tab_privs where grantee='ADMINISTRADOR';

no rows selected

SQL> select * from dba_sys_privs where grantee='ADMINISTRADOR';

no rows selected

5. Otorgar el privilegio “CREATE SESSION” al usuario “administrador” e intentar de nuevo la conexión sqlplus.

SQL> grant create session to administrador;

Grant succeeded.

SQL> connect administrador
Enter password:

Connected.

6. Conectarse como usuario “administrador” y crear un usuario llamado “prueba00” que tenga como "tablespace" por defecto USERS y como "tablespace" temporal TEMP; asignar una cuota de 0K en el "tablespace" USERS. ¿Es posible hacerlo?.

SQL> show user
USER is "ADMINISTRADOR"

SQL> create user prueba00 identified by prueba00
2 default tablespace users
3 temporary tablespace temp
4 quota 0k on users;

create user prueba00 identified by prueba00
*
ERROR at line 1:
ORA-01031: insufficient privileges

7. Conectado como usuario SYSTEM, otorgar el privilegio “create user” al usuario “administrador” y repetir el ejercicio anterior.

Enter user-name: system
Enter password:

Connected to:
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning and Oracle Label Security options
JServer Release 9.2.0.1.0 - Production

SQL> grant create user to administrador;

Grant succeeded.

SQL> connect administrador
Enter password:
Connected.

SQL> create user prueba00 identified by prueba00
2 default tablespace users
3 temporary tablespace temp
4*quota 0k on users

User created.

8. Averiguar que usuarios de la base de datos tienen asignado el privilegio “create user” de forma directa, ¿qué vista debe ser consultada?.

SQL> connect system
Introduzca su clave:
Connected.

SQL> desc dba_sys_privs

Nombre                                    ¿Nulo?   Tipo
----------------------------------------- -------- -----------------------
GRANTEE                                   NOT NULL VARCHAR2(30)
PRIVILEGE                                 NOT NULL VARCHAR2(40)
ADMIN_OPTION                                       VARCHAR2(3)

SQL> select * from dba_sys_privs where privilege ='CREATE USER';

GRANTEE                        PRIVILEGE                                ADM
------------------------------ ---------------------------------------- ---
DBA                            CREATE USER                              YES
ADMINISTRADOR                  CREATE USER                              NO
IMP_FULL_DATABASE              CREATE USER                              NO

9. Hacer lo mismo para el privilegio “create session”.

SQL> select * from dba_sys_privs where privilege ='CREATE SESSION';

GRANTEE                        PRIVILEGE                                 ADM
------------------------------ ----------------------------------------- ---
DBA                            CREATE SESSION                            YES
CONNECT                        CREATE SESSION                            NO
ADMINISTRADOR                  CREATE SESSION                            NO
RECOVERY_CATALOG_OWNER         CREATE SESSION                            NO

10. Crear dos "tablespace" llamados NOMINA y ACADEMO, que contendrán datos relativos a las aplicaciones de nomina y datos académicos de los empleados de una empresa, según las siguientes características:

tablespace
SQL> create tablespace academo datafile 'academo01.dbf' size 1M
2 autoextend on next 200k maxsize 1400K
3 default storage (initial 16k next 16k
4 minextents 1 maxextents 3);

Tablespace created.

SQL> create tablespace nomina datafile 'nomina01.dbf' size 1M
2 autoextend on next 100K maxsize 1500K
3 default storage (initial 16k next 16k
4 minextents 1 maxextents 3);

Tablespace created.

11. Crear dos "tablespace" temporales, manejados de forma local, llamados TEMP_NOMINA y TEMP_ACADEMO con las siguientes características:

tablespace
SQL> create temporary tablespace temp_academo
2 tempfile 'temp_academo01.dbf'
3 size 500k autoextend on next 50k maxsize 600k
4 extent management local uniform size 100k;

Tablespace created.

SQL> create temporary tablespace temp_nomina
2 tempfile 'temp_nomina01.dbf'
3 size 600k autoextend on next 50k maxsize 700k
4 extent management local uniform size 100k;

Tablespace created.

12. Estando conectado como usuario “administrador” probar a crear un rol llamado “administrador”, ¿qué ocurre?.

SQL> connect administrador
Enter password:
Connected.

SQL> create role administrador;
create role administrador
*
ERROR at line 1:
ORA-01031: insufficient privileges

13. Idem estando conectado como usuario SYSTEM, ¿qué sucede?, ¿por qué?.

SQL> connect system
Enter password:
Connected.

SQL> create role administrador;
create role administrador
        *
ERROR at line 1:
ORA-01921: role name 'ADMINISTRADOR' conflicts with another user or role name

14. Comprobar 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';

GRANTEE                                        PRIVILEGE               ADM
---------------------------------------------- ----------------------- ---
DBA                                            CREATE ROLE             YES
IMP_FULL_DATABASE                              CREATE ROLE             NO

15. Crear un rol llamado “ADMIN”, asignarle los privilegios “create session”, “cr eate user” y “CREATE ROLE”. Asignarlo al usuario administrador.

SQL> create role admin;

Role created.

SQL> grant create session to admin;

Grant succeeded.

SQL> grant create user to admin;

Grant succeeded.

SQL> grant create role to admin;

Grant succeeded.

SQL> grant admin to administrador;

Grant succeeded.

16. Consultar los privilegios de sistema que tiene asignados de forma directa el usuario “administrador”, revocarlos y asignarle el rol “admin.”.

SQL> select * from dba_sys_privs where grantee ='ADMINISTRADOR';

GRANTEE                                        PRIVILEGE               ADM
---------------------------------------------- ----------------------- ---
ADMINISTRADOR                                  CREATE SESSION          NO
ADMINISTRADOR                                  CREATE USER             NO

SQL> revoke create session from administrador;

Revoke succeeded.

SQL> revoke create user from administrador

Revoke succeeded.

SQL> grant admin to administrador;

Grant succeeded.

17. Crear, conectado como SYSTEM, un usuario llamado “prueba01” autenticado por base de datos al que no se le asigne "tablespace" por defecto ni temporal.

SQL> create user prueba01 identified by prueba01;

User created.

18. Consultar en las vistas correspondientes los "tablespaces" y la quota en cada uno de ellos que tiene los usuarios SYS, SYSTEM, “administrador”, “prueba00” y “prueba01”. ¿Qué ha ocurrido con el usuario “prueba01”?.

SQL> select substr(username,1,15) usuario, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE
2 from dba_users
3 where username in ('SYS','SYSTEM','ADMINISTRADOR','PRUEBA00','PRUEBA01');

USUARIO             DEFAULT_TABLESPACE     TEMPORARY_TABLESPACE
------------------- ---------------------- --------------------
PRUEBA01            SYSTEM                 SYSTEM
PRUEBA00            USERS                  TEMP
ADMINISTRADOR       USERS                  TEMP
SYSTEM              SYSTEM                 TEMP
SYS                 SYSTEM                 TEMP

SQL> select substr(username,1,15) usuario, tablespace_name, max_bytes 
2 from dba_ts_quotas
3 where username in ('SYS','SYSTEM','ADMINISTRADOR','PRUEBA00','PRUEBA01');

USUARIO             TABLESPACE_NAME        MAX_BYTES
------------------- ---------------------- -----------
ADMINISTRADOR       USERS                  512000

19. Crear un usuario llamado “prueba02” autenticado por base de datos, asignando como "tablespace" por defecto NOMINA y como "tablespace" temporal TEMP_NOMINA (no se le asignara cuota en NOMINA).

SQL> create user prueba02 identified by prueba02
2 default tablespace nomina
3 temporary tablespace temp_nomina;

User created.

20. Asignar al usuario “prueba01” los "tablespace" ACADEMO y TEMP_ACADEMO como "tablespace" de trabajo y temporal respectivamente (sin especificar cuota).


21. Consultar en las vistas correspondientes los "tablespace" y la cuota en cada uno de ellos que tiene los usuarios “prueba01” y “prueba02”.


22. Crear un rol llamado “CONEXIÓN” y asignarle el permiso “CREATE SESSION”.


23. Asignar el rol “CONEXIÓN” a los usuarios “prueba00”, “prueba01” y “prueba02”


24. Comprobar en la vista correspondiente cuales son los roles asignados a los usuarios “prueba00”, “prueba01” y “prueba02”.


25. Conectarse como usuario “prueba01” y crear la tabla siguiente en el "tablespace" ACADEMO:

CREATE TABLE CODIGOS
(CODIGO varchar2(3),
DESCRIPCION varchar2(20))
TABLESPACE ACADEMO
STORAGE (INITIAL 64K
NEXT 64K
MINEXTENTS 5
MAXEXTENTS 10);

¿Es posible hacerlo?, ¿falta algún permiso?.

26. Crear un rol llamado “DESARROLLO” y asignarle los permisos "CREATE SEQUENCE", "CREATE SESSION", "CREATE SYNONYM", "CREATE TABLE" y "CREATE VIEW". Asignar el rol “DESARROLLO” a los usuarios “prueba00”, “prueba01” y “prueba02”.


27. Volver a conectarse como usuario “prueba01” y crear la tabla anterior en el "tablespace" ACADEMO.


28. Asignar cuota ilimitada al usuario “prueba01” en el "tablespace" ACADEMO. Volver a repetir el ejercicio 26.


29. Asignar cuota ilimitada al usuario “prueba02” en el "tablespace" NOMINA.


30. Obtener información sobre roles, privilegios de sistema, "tablespace" y cuotas para los usuarios “prueba00”, “prueba01” y “prueba02”.


31. Asignar cuota cero en el "tablespace" por defecto para el usuario “prueba01”, ¿siguen estando sus objetos?, ¿es posible crear algún otro? (probad a crear un tabla).


32. Conectarse como usuario “prueba01” e intentar modificar su cuota en el "tablespace" ACADEMO, ¿es posible?.


33. Conectarse como usuario “prueba01” y modificar su clave, ¿es posible?.


34. Averiguar que usuarios o roles de base de datos tienen asignado el privilegio ALTER USER.


35. Abrir una sesión con el usuario “administrador” y otra con el usuario “prueba02”. Siendo el usuario “administrador”, intentar borrar el usuario “prueba02”.


36. .Asignar el permiso DROP USER al rol ADMIN.


37. Averiguar que usuarios o roles de base de datos tienen asignado el privilegio DROP USER.


38. Conectado como usuario "administrador", crear el usuario “prueba03” autentificado por base de datos y asignando cuotas en el "tablespace" ACADEMO (500K) y NOMINA (200K). Su "tablespace" temporal será TEMP.


39. Comprobar en el fichero de inicialización si está activado el modo de limitación de recursos.


40. Averiguar que usuarios de base de datos o que roles tienen asignado el privilegio “CREATE PROFILE”.


41. Asignar el permiso “CREATE PROFILE” al rol ADMIN.


42. Averiguar que perfiles están definidos en la base de datos y que límites de recursos fija cada uno de ellos.


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


44. Crear un perfil llamado “DESARROLLO” con las siguientes especificaciones:

perfil

45. Asignar el perfil anterior a los usuarios “prueba00”, “prueba01”, “prueba02” y “prueba03”.


46. Intentar la conexión dos veces como usuario “prueba01” fallando la contraseña, ¿qué sucede?. Comprobar si la cuenta ha sido bloqueada en la vista de base de datos correspondiente .


47. Crear un usuario “prueba04” con el parámetro “password expire”, sus "tablespace" por defecto y temporal serán USERS (cuota 0k) y TEMP. Asignar los roles CONEXIÓN y DESARROLLO. Conectarse como usuario “prueba04”, ¿qué sucede?.


48. Bloquear la cuenta del usuario “prueba04”, ¿qué sucede al conectarse de nuevo?.


49. .Modificar el "tablespace" por defecto y el temporal del usuario “prueba01” de forma que sean NOMINA y TEMP_NOMINA.


50. Comprobar cual es el valor del parámetro OS_AUTHENT_PREFIX en la base de datos. (en init<SID>.ora)


51. Cambia la identificación del usuario “prueba01” de forma que sea identificado por el sistema operativo.


52. Modificar el parámetro OS_AUTHENT_PREFIX de forma que, en adelante, la cadena que identifique a un usuario externo sea “” (cadena vacía). (en el fichero de parámetros de inicializacion (init<SID>.ora). Indicar: os_authent_prefix = ""


53. Desbloquear la cuenta del usuario “prueba04”.


54. Modificar los valores del perfil DEFAULT según se indica en la siguiente tabla:

perfil

55. Averiguar que usuarios o roles tienen asignado el privilegio “ALTER PROFILE”.


56. Asignar el privilegio anterior al rol ADMIN.


57. Comprobar los valores asignados al perfil “DESARROLLO”. Modificar el perfil “DESARROLLO”, desde el usuario “administrador”, según la siguiente tabla:

perfil

¿Qué ha sucedido con el resto de los parámetros?. ¿Coincide el valor de “Connect_time” en este perfil con el que tiene en el perfil DEFAULT?.

58. Averiguar los privilegios de sistema y sobre objetos, así como los roles, que tiene asignados los roles por defecto “CONNECT”, “RESOURCE”, “DBA”, “EXP_FULL_DATABASE” e “IMP_FULL_DATABASE”. ¿Consideras una buena política de seguridad asignar el rol “CONNECT” a todos los usuarios que precisan conectarse a la base de datos?.


59. ¿Puede asignarse el perfil “DESARROLLO” al rol “CONNECT”?. ¿Y el perfil “DEFAULT” al perfil “DESARROLLO”?


60. Averiguar que usuarios o roles de la base de datos tienen asignado el privilegio “DROP PROFILE”.


61. Asignar el privilegio “DROP PROFILE” al rol “ADMIN.”.


62. Conectarse como usuario “administrador” e intentar eliminar el perfil “DEFAULT”, ¿qué ocurre?.


63. Como usuario “administrador” crear el rol “SECRETO” identificado por la contraseña “total” y asignarlo al usuario “prueba04”.


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


65. ¿Qué valor tiene en la base de datos el parámetro MAX_ENABLED_ROLES?. Modificar su valor para que, en adelante, valga 40. Comprobar esta modificación.


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


67. Como usuario “administrador”, deasignar el rol “SECRETO” al usuario “prueba04”.


68. Asignar el privilegio “GRANT ANY ROLE” al rol “ADMIN.”.


69. Averiguar de nuevo que usuarios poseen el privilegio “GRANT ANY ROLE” (de forma directa o a través de roles).


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


71. Asignar permiso de conexión al usuario "prueba03", asignar el rol “SECRETO” al mismo usuario. Conectarse como este usuario e intentar borrar el rol.


72. En caso de que no lo tenga asignado, asignar el rol “CONEXION” y el rol “DESARROLLO” al usuario “prueba04”. Hacer que solo el rol “CONEXIÓN” este activo cuando se conecte.


73. Comprobar en la vista apropiada del diccionario de datos los roles activos en la sesión.


74. Conectado como usuario “prueba04”, activar el rol “DESARROLLO” y comprobar de nuevo en la vista apropiada del diccionario de datos los roles activos en la sesión.


75. Asignar el rol "CONNECT" al usuario "ADMIN". ¿Es preciso asignarle los permisos "CREATE PROCEDURE", "CREATE PUBLIC SYNONYM", "CREATE ROLE", "CREATE TRIGGER"?, ¿Los tiene ya asignados?.


76. Conectarse como usuario SYSTEM y otorgar al usuario "prueba02" el permiso para seleccionar datos de la tabla códigos (pertenece al usuario "prueba01"). ¿Qué sucede?, ¿por qué?.


77. Conectarse como usuario "prueba01" y otorgar al usuario "prueba02" el permiso para seleccionar datos de la tabla códigos; hacerlo de forma que "prueba02" también pueda otorgar el permiso a otros usuarios (opción ADMIN).


78. Conectarse como usuario "prueba02" y otorgar al usuario "prueba03" el permiso para seleccionar datos de la tabla códigos.


79. Conectarse como usuario "prueba01" y revocar al usuario "prueba02" el permiso para seleccionar datos de la tabla códigos.


80. Conectarse como usuario "prueba03" e intentar consultar la tabla códigos. ¿Qué ocurre?, ¿por qué?.