Señores:
Cuentas BD sobre Cuentas SO
Los usuarios pueden entrar en la BD una vez que han dado un nombre de usuario y una palabra de paso. Sin embargo, es posible aprovecharse del Sistema Operativo para obtener un nivel adicional de autentificación.
La cuenta de la BD y del SO pueden relacionarse de manera que la de la BD se diferencie sólo en un prefijo de la cuenta del SO. Este prefijo se fija en el parámetro OS_AUTHENTIC_PREFIX del fichero init.ora. Por defecto esta puesto a "OPS$", pero puede tomar cualquier forma, incluso ser la cadena nula, "", con lo que no existe prefijo que diferencie las cuentas en la BD y en el SO.
Por ejemplo, consideremos la cuenta del SO llamada alu10. La correspondiente cuenta en la BD sería OPS$ALU10. Cuando el usuario alu10 está en activo en el SO, puede acceder a su cuenta OPS$ALU10 sin especificar el password, como se muestra a continuación:
$ sqlplus /
En este caso el carácter "/" toma el lugar de la combinación del nombre de usuario y del password que debería aparecer.
Las cuentas pueden ser creadas con passwords aunque no vaya a ser utilizado. Ya que de este modo será posible acceder a la cuenta de OPS$ALU10 desde otra cuenta diferente a la alu10 del SO. La sentencia de creación de la cuenta OPS$ALU10 puede ser la siguiente:
SVRMGR> create user ops$alu10
2> identified by 01ula
3> default tablespace users
4> temporary tablespace temp;
Así, la forma de conectarse como OPS$ALU10 desde una cuenta del SO diferente es:
$ sqlplus ops$alu10/01ula
Existen dos formas de evitar este problema. La primera es creando el usuario BD sin especificar un password, utilizando la claúsula IDENTIFIED EXTERNALLY. De esta manera evitamos la necesidad de expecificar un password para la cuenta, obligando a la conexión entre las cuentas de la BD y del SO:
SVRMGR> create user ops$alu10
2> identified externally
3> default tablespace users
4> temporary tablespace temp;
La otra manera de evitar el problema es crear una cuenta con un password imposible, aspecto este que se explicará más adelante.