Utilizando srvctl sin acceso al usuario oracle con comando sudo
Cuando existen diferentes politicas de seguridad y ellas implican evitar el acceso , o restringir el usuario de OS oracle nos vemos impedidos de poder utilizar el mismo para realizar tareas administrativas.
Si no se tiene conocimiento de las estructuras de usuarios y permisos en entornos unix podemos estar en un problema.
Es por ello que hoy trabajaremos en un usuario personal de OS que fue asignado , para que pueda realizar algunas tareas de administración.
Basicamente usaremos el comando sudo , que lo que hace es impersonar nuestro usuario, y correr cualquier comando autorizado como si fuese el mismo usuario oracle.
Por ejemplo:
sudo -u oracle lsnrctl status
Le hacemos creer al OS que el usuario oracle esta manejando ese comando.
Entonces debemos solcitar al administrador del OS linux , AIX , etc que en el archivo de configuracion de sudo agregue las siguientes lineas:
a) Ejecución con root del comando visudo.
# visudo
a.1) Una vez abierto el archivo recomiendo crear un grupo, en el cual participaran los encargados de la administración.
En nuestro ejemplo nuestro usuario es useros y el grupo de SUDO es USR_ORCL_ADMIN. Ahi agregamos al resto de los DBA’s
# User alias specification User_Alias USR_ORCL_ADMIN = dvader, okenobi, c3po, r2d2, useros
b) Adhesion de las siguientes lineas con los comandos que precisamos. (recordemos que pueden ser mas de las que yo pongo en el ejemplo.)
b.1) Creación del Grupo de Comandos.
USR_ORCL_ADMIN ALL=(oracle) NOPASSWD: CMD_ORCL_ADMIN
b.2) Asignación en detalle de comandos al grupo :
Cmnd_Alias CMD_ADM_ORACLE = /u01/app/oracle/product/10.2.0/*/bin/rman, \ /u01/app/oracle/product/10.2.0/*/bin/srvctl, \ /u01/app/oracle/product/10.2.0/*/bin/sqlplus, \ /u01/app/oracle/product/10.2.0/*/bin/dbca, \ /u01/app/oracle/product/10.2.0/*/bin/lsnrctl, \ /u01/app/oracle/product/10.2.0/*/bin/dgmgrl, \ /u01/app/oracle/product/10.2.0/*/bin/netca, \ /u01/app/oracle/product/10.2.0/*/bin/crsctl, \ /u01/app/oracle/product/10.2.0/*/bin/crsd, \ /u01/app/oracle/product/10.2.0/*/bin/crs_getperm, \ /u01/app/oracle/product/10.2.0/*/bin/crs_profile, \ /u01/app/oracle/product/10.2.0/*/bin/crs_register, \ /u01/app/oracle/product/10.2.0/*/bin/crs_relocate, \ /u01/app/oracle/product/10.2.0/*/bin/crs_setperm, \ /u01/app/oracle/product/10.2.0/*/bin/crs_start, \ /u01/app/oracle/product/10.2.0/*/bin/crs_stat, \ /u01/app/oracle/product/10.2.0/*/bin/crs_stop, \ /u01/app/oracle/product/10.2.0/*/bin/crs_unregister
Ahora podemos utilizar el comado srvctl con permisos sudo.
Nota: Primero debemos exportar variables de cualquier home.
Status de la base con sudo.
[useros@tstdat01lx ~]$ sudo -u oracle srvctl status database -d TESTDAT Instance TESTDAT1 is running on node tstdat01lx Instance TESTDAT2 is running on node tstdat02lx
Stop de la base con sudo.
[useros@tstdat01lx ~]$ sudo -u oracle srvctl stop database -d TESTDAT
Status de la base con sudo.
[useros@tstdat01lx ~]$ sudo -u oracle srvctl start database -d TESTDAT
También aplica lo mismo para cualquiera de los comandos de la lista.
En el próximo articulo veremos como ejecutar estos mismos comandos , pero con usuarios de OS , sin hacer sudo.