lunes, 27 de febrero de 2012

ORACLE-SQL: definir una variable en un script.

a menudo en los script sql se requiere ingresar una vez el valor para luego insertarlo como parametro en busquedas, inserciones, modificaciones, etc.
Usualmente se utiliza el atributo "&1" que indica el valor que solicita el script una vez que se ha invocado. Esto conlleva a que se debe ingresar repetidamente el mismo valor todas las veces que "&1" es invocado dentro del script. Para evitar estas repeticiones innecesarias, se vierte el valor de "&1" en una variable la cual se invoca tantas veces sea necesario dentro del script.
Ejemplo:

$ cat delete_from_id.sql 


define wk_id=&1; 
prompt el valor ingresado es = &wk_id

prompt delete from tabla1...
delete from tabla1 cr where cr.ID_ARCHIVO=&wk_id;


--prompt delete from tabla2...
delete from tabla2 cci where cci.ID_ARCHIVO=&wk_id;

De esta forma en el script se pregunta sólo una vez por "&1" pero al quedar almacenada en la variable, se reutiliza el valor tantas veces sea necesario.

SQL> @delete_from_id.sql
Enter value for 1: 3476
el valor ingresado es = 3476
delete from tabla1...
old   1: delete from tabla1 cr where cr.ID=&wk_id
new   1: delete from tabla1 cr where cr.ID=3476

1 rows deleted.

old   1: delete from tabla2 cr where cr.ID=&wk_id
new   1: delete from tabla2 cr where cr.ID=3476

1 rows deleted.

miércoles, 22 de febrero de 2012

LINUX: clonar un server


server original:
/
/var
/tmp
/usr

Server clon (partir con disco de rescate) (tambien puede ser en un directorio del server_clon)
/mnt/var
/mnt/tmp
/mnt/user

Desde el clon:
rsync -avzh --progress --exclude=/proc --exclude=/sys --exclude=/tmp root@server_original:/ /mnt/ 

Despues se puede reinstalar el grub en el server_clon y debe quedar
cuidar que la configuracion de raid en el server_oroginakl y server_cloen sea igual.

mas info. googlear: rsync clone machine

Se puede usar el aplicativo mondo para generar una imagen iso.
http://www.mondorescue.org/

LINUX: instalar Raid y reemplazar un disco y volver a habilitar.


en google buscar: replace disk mdadm
Primer link
http://www.howtoforge.com/replacing_hard_disks_in_a_raid1_array


Instalacion raid
Despues de instalr el server con raid se verifica el estado de los discos:

[root@localhost ~]# cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 sdb1[1] sda1[0]
      104320 blocks [2/2] [UU]
      
md1 : active raid1 sdb2[1] sda2[0]
      20860288 blocks [2/2] [UU]
      
unused devices:
[root@localhost ~]# 

LINUX: TIP: ps aux


ps aux filtrado y con cabecera.

[root@fw ~]# ps aux |head -1;ps aux | grep xinetd
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      4722  0.0  0.0   2720   916 ?        Ss   15:27   0:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
[root@fw ~]# 


ps aux filtrado, con cabecera y recortado los primeros 90 caracteres para que quede mas ordenado.

[root@fw ~]# ps aux |head -1;ps aux | grep xinetd | grep -v grep | cut -c 1-90
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      4722  0.0  0.0   2720   916 ?        Ss   15:27   0:00 xinetd -stayalive -pidfil
[root@fw ~]# 

ps aux ordenado por cpu y mostrando los primeros 3

[root@fw ~]# ps aux --sort=-pcpu | head -4
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      3234  0.0  0.0   1968   676 ?        S    14:52   0:02 hald-addon-storage: polling /dev/hdc
68        3211  0.0  0.4   6052  4264 ?        Ss   14:52   0:02 hald
root       590  0.0  0.0   2236   692 ?        S
[root@fw ~]# 

martes, 21 de febrero de 2012

ORACLE-DBA: buscar columnas en ALL_TAB_COLUMNS

Entre las tablas de sistema incluidas en el motor de oracle, se encuentra una muy útil cuando se requiere buscar el nombre de una columna en todas las tablas que la posean. Esto es necesario cuando se está realizando una busqueda en el modelo de datos.


SQL> select OWNER,TABLE_NAME from ALL_TAB_COLUMNS where COLUMN_NAME='ID_NODO';


OWNER                          TABLE_NAME
------------------------------ ------------------------------
CONTROL                        ACCION_CONTADOR
CONTROL                        ARBOL_TARIFICACION
CONTROL                        NODO
CONTROL                        REGLA_CALCULO
CONTROL                        REGLA_NORMA

LINUX-UBU: recuperar iconos de panel (red, sonido, etc))

Dado que uso ubuntu linux como distro de escritorio, a veces escribiré post relacionado con este SO fácil de utilizar y que me permitió entrar al mundo linux sin temores.

El escenario es el siguiente:
Desparecen los iconos de red, sonido, chat, etc, de la barra de sistema. Para recuperar la barra en su estado original (asumir que se pierden todas las personalizaciones e iconos agregados recientemente) ejecutar los siguientes comandos.



[gcepeda@annunakis ~]$ gconftool-2 --shutdown
[gcepeda@annunakis ~]$ rm -rf ~/.gconf/apps/panel
[gcepeda@annunakis ~]$ pkill gnome-panel



Automáticamente se reinicia el panel, apareciendo ambos paneles en su configuración original.

Fuente: http://www.ubuntu-es.org/node/128713

jueves, 16 de febrero de 2012

ORACLE-DBA: desbloquear transacciones pendientes.

Cuando se intenta realizar una operación sobre una tabla (insert, update, delete) y por alguna razón, la transacción queda pendiente, se debe identificar esta transacción y proceder a matar la sesión que la origina para poder liberar la tabla y proceder nuevamente a realizar la operación sobre ella.

Las transacciones se registran en la tabla dba_locks:

SQL> select * from dba_locks;

SESSION_ID LOCK_TYPE      MODE_HELD       MODE_REQUESTED LOCK_ID1 LOCK_ID2  LAST_CONVERT BLOCKING_OTHERS
---------- -------------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ------------ ----------------------------------------
       552 Media Recovery      Share       None 201 0       4418031 Not Blocking
       530 DML      Row-X (SX)       None 12723 0  7170 Not Blocking
       530 Transaction      Exclusive       None 196634 19744  7170 Not Blocking

Donde la columna LOCK_TYPE la que indica el tipo de bloqueo, siendo el que nos interesa el del tipo "transaction"
Para identificar la sesion completa se toma el valor de la columna SESSION_ID y se busca en la tabla v$session:

SQL> select sid,serial#,username,program from v$session where sid=530;

       SID    SERIAL# USERNAME     PROGRAM
---------- ---------- ------------------------------ ------------------------------------------------
       530 1648 TAMP     sqlplus@cch (TNS V1-V3)

Una vez identificados el SID y el serial# se termina con la sesión:
SQL> alter system kill session '530,1648';
System altered.



De esa forma se puede consultar nuevamente en la tabla dba_locks donde el registro de la transacción ya debe haber desaparecido.

martes, 14 de febrero de 2012

LINUX: tuneles ssh

en el post anterior se indica cómo ejecutar un tunel ssh, acontinuación se presenta el siguiente caso:


como levantar un tunel para sqldeveloper

puerto local: 15000
ip_pivote: 192.168.0.69
ip_destino:port: 10.136.250.9:1521

uso el puerto 15000 pare levantar el tunel.

# ssh -l port_local:ip_destino:port_destino user@ip_pivote

ejemplo:
#ssh -l 15000:10.136-250.9:1521 vpn@192.168.0.69

en sqldeveloper, en el string de conexion, colocar:
sid:localhost:15000

LINUX: tips para conectarse via ssh

El cliente ssh cuenta con algunos parametros que optimizan el uso de la sesión.

-C: aumenta la compresion, agiliza el ssh.
-v: verbose, muestra el log de entrada
-l: para el usuario, aumenta las opciones.

[noche@Prueba ~]$ ssh -C -v -l soporte 172.16.220.128

-Y: es como -X, pero mas optimo.

[noche@Prueba ~]$ ssh -C -v -l narf 192.168.100.188 -Y


para usar la interfaz x11 tiene que estar instalados los siguientes paquetes:
xorg-x11-xauth
xorg-x11-server-xorg

Tunel ssh
[soporte@localhost ~]$ ssh -L 9000:192.168.0.1:80 -l soporte -C -v 200.111.120.114

en el navegador se puede ver http://localhost:9000


LINUX-SEC: bomba FORK (y como prevenirla)


Bomba FORK:
este comando multiplica la cantidad de tareas del sistema, saturando los recursos disponibles bloqueando al resto de los usuarios.
[narf@localhost ~]$ :(){ :|:& };:

Prevencion:
se debe limitar la cantidad de procesos abiertos por el usuario en el archivo /etc/security/limits.conf

ejemplo para el usuario narf:
[root@localhost ~]# tail -3 /etc/security/limits.conf 
narf soft nproc 4000
narf hard nproc 6000
# End of file
[root@localhost ~]# 

LINUX-SEC: permisos de directorios y archivos


permisos normales: rwx

otros permisos especiales
sticky = 1
sgid = 2
    en directorio: conserva el grupo original del directorio para todos los archivos dentro.
suid =4
    en archivo: cualquier usuario va a tomar los privilegios del dueño del archivo.
Si un usuario ejecuta el archivo y el dueño es root, el usuario tiene privilegios de root.

para evitar existe el "nosuid"

LINUX-SEC: Opciones de montaje y archivos de dispositivos.


Opcion: noexec

el directorio /tmp debe tener la opcion noexec porque tiene permiso para que todos los usuarios realicen todas las acciones sobre el directorio.

el directorio /var tiene todas las variables de sistema. Tambien los logs. Tampoco deberia tener permiso de execucion.

el directorio /proc tiene info de los procesos que se estan ejecutando. pero no se estan ejecutando ahi. Tambien debe limitarse.

LINUX-SEC: generacion de llaves ssh

Método 1: generando y copiando las llaves públicas.

El server de origen emite una llave que es agregada en la lista del server destino.
De esa forma el server origen puede conectarse al server destino sin tener que entregar la pass.

generacion de llave publica

[soporte@localhost ~]$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/soporte/.ssh/id_dsa): 
Created directory '/home/soporte/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/soporte/.ssh/id_dsa.
Your public key has been saved in /home/soporte/.ssh/id_dsa.pub.
The key fingerprint is:
92:c4:18:57:cb:ba:20:f9:8a:02:78:1e:b3:ac:57:16 soporte@localhost.localdomain

llave publica generada
[soporte@localhost ~]$ cat /home/soporte/.ssh/id_dsa.pub 
ssh-dss AAAAB3NzaC1kc3MAAACBAIg2/0ujaPvXkqrQLgbalK/9k16CnVy71cs2NWUYBC4jlf0YpOxOaHak7KdHyXKLFBxjPX1HPjCZHn41LU+cPreL5FN18QkTfdSiZX/9b9Uqe1LQF7qKIBS6SzJf5n7/2fmBfbaUCyHGKJRbK9N97i0LzsJxoN2Afx25s61OSjPZAAAAFQClcRMKcwI6+dVVvdm8Ss4HISJvIwAAAIBVVBbRa4jnhJH1smscvUztEiOygkpa0cm2/TJhstqPiKI05kEcDHXX+6N99xWbGdV9b4GfcWuem5EbjvvUquzipCzu2YCJpByUGITW6thGKMC3aLXS/xbovM80jvVpCo+4h8oOXzZf24Od1zZMw9gi4WweS+qb2Ov6PAufhYFI8wAAAIABHHheSdWQmvFClqOgoGi1ysl+ilLXLgvwZ+O+xUxgR/hPgsEDuou2pAhkgrAYYf5Vv7NDEoR/L4PPliAP1TBMj7eFXMlbwuY1RZZyoWzxyY1FO2zq2UtyDikNORI06B3ZbUR2egnGkC6mIAGJpRaRp8gnikZW+UtkilwiSEYyNA== soporte@localhost.localdomain
[soporte@localhost ~]$ 

copiar la llave publica al server destino.
#scp /home/soporte/.ssh/id_dsa.pub user@ip:/home/user/

agregar la llave ssh en el server destino
# cat /home/user/id_dsa.pub >> /home/user/.ssh/authorized_keys

para que la autentificacion solo por llaves sea bidireccional, hay qye repetir el paso en forma visceversa.


añadir seguridad al archivo listado de llaves.
en el server destino, cambiar el permiso del archivo
# chmod 0400 /home/user/.ssh/authorized_keys


Método 2: usando utilitario ssh-copy-id


en el server de origen se genera la llave pública:


wiki@localhost:~$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/wiki/.ssh/id_dsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/wiki/.ssh/id_dsa.
Your public key has been saved in /home/wiki/.ssh/id_dsa.pub.
The key fingerprint is:
ca:b1:c3:69:de:03:8c:d8:03:fb:fa:29:b4:18:e2:58 wiki@antofagasta
wiki@localhost:~$

se copia la llave al server destino:


wiki@localhost:~$ ssh-copy-id -i /home/wiki/.ssh/id_rsa.pub backup@remotehost
26
backup@remotehost's password: 
Now try logging into the machine, with "ssh 'backup@remotehost'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

wiki@localhost:~$ 




LINUX-SEC: tips ssh

por convencion se usa ssh2.

el ssh server atiende por el puerto 22
[root@localhost ~]# netstat -atunp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 :::22                       :::*                        LISTEN      2529/sshd           
tcp        0      0 ::ffff:172.16.220.128:22    ::ffff:172.16.220.1:34524   ESTABLISHED 2631/0              
tcp        0      0 ::ffff:172.16.220.128:22    ::ffff:172.16.220.1:34529   ESTABLISHED 2677/sshd: soporte  
udp        0      0 0.0.0.0:68                  0.0.0.0:*                               2405/dhclient       
[root@localhost ~]# 

LINUX-SEC: setear el tiempo maximo que va a estar conectado el usuario


Como usuario "root", editar el .bash_profile
[root@localhost ~]# vi /home/soporte/.bash_profile 
agregar la siguiente linea:
TMOUT=5

LINUX-SEC: habilitar / deshabilitar cambio de usuario en sesión.


Es importante limitar las atribuciones de los usuarios, sin embargo, si no se bloquea el cambio de usuario, cualquier usuario que conozca la password de root podría cambiar a root durante la sesión, tomando control absoluto sober el server.

En el siguiente ejmplo, se habilita al usuario soporte para que cambie al usuario root durante la sesión.

agregar usuario "soporte" al grupo "wheel"
wheel:x:10:root,soporte

al ejecutar id soporte aparece el grupo wheel.
[root@localhost ~]# id soporte
uid=500(soporte) gid=500(soporte) groups=500(soporte),10(wheel)
[root@localhost ~]# 


solo los usuarios que pertenecen al grupo wheel pueden cambiar de usuario en sesion (su -)
[root@localhost ~]# vi /etc/pam.d/su
descomentar la linea:
# Uncomment the following line to require a user to be in the "wheel" group.
auth            required        pam_wheel.so use_uid

[root@localhost ~]# cat /etc/pam.d/su
#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth           sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth            required        pam_wheel.so use_uid
auth            include         system-auth
account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
account         include         system-auth
password        include         system-auth
session         include         system-auth
session         optional        pam_xauth.so
[root@localhost ~]# 

LINUX-SEC: eliminar usuarios no utilizados

Por defecto la instalación incluye la creación de usuarios que no se utilizan y que además podrían ser usados por alguien no autorizado para ingresar al server.
Editar el archivo /etc/passwd  


se deben comentar los siguientes usuarios que no son necesarios para el sistema.
#shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
#halt:x:7:0:halt:/sbin:/sbin/halt
#news:x:9:13:news:/etc/news:
#uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
#operator:x:11:0:operator:/root:/sbin/nologin
#games:x:12:100:games:/usr/games:/sbin/nologin
#gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
#ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

Comentar los mismo usuarios en /etc/group
[root@localhost ~]# vi /etc/group
#news:x:13:news
#uucp:x:14:uucp
#games:x:20:
#gopher:x:30:
#ftp:x:50:
#floppy:x:19:

LINUX-SEC: habilitar / deshabilitar login de usuario


Es posible bloquear o habilitar el login de un usuario en el server. Para ello observar el siguiente ejemplo

editar el archivo: /etc/passwd

usuario que no tiene permiso de logeo:
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

usuario que si tiene permiso:
soporte:x:500:500::/home/soporte:/bin/bash

LINUX-SEC: bloquear el acceso remoto de root

Con este procedimiento se bloquea todo acceso remoto al server como usuario root, siendo posible su logeo sólo en forma presencial al server.

archivo que define las conexiones habilitadas para que se conecte root
[root@localhost ~]# cat /etc/securetty 
console
vc/1
vc/2
vc/3
vc/4
vc/5
vc/6
vc/7
vc/8
vc/9
vc/10
vc/11
tty1
tty2
tty3
tty4
tty5
tty6
tty7
tty8
tty9
tty10
tty11
[root@localhost ~]# 

Eliminar todos lo registros de este archivo:
[root@localhost ~]# echo > /etc/securetty

LINUX-SEC: deshabilitar TTY


Comentar todos los tty del inittab. menos el 6, por si acaso se requiere entrar por consola.
vi /etc/inittab
# Run gettys in standard runlevels
#1:2345:respawn:/sbin/mingetty tty1
#2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6


En el boot cuando se cargue este archivo, se deja de logear las acciones que pasan para el arranque del server. Hay que esperar hasta que aparece la consola de comandos.

LINUX-SEC: Colocar passwd al grub

Al colocar una password al grub, se impide el ingreso al sistema a través de la consola de grub. De esta forma se protegen archivos escenciales para el sistema, como son el shadow.

Generar una pass encriptada con el utilitario grub-md5-crypt

[root@localhost ~]# grub-md5-crypt 
Password: 
Retype password: 
$1$TGtQH0$r20iylhu88Amhv53AGblH0
[root@localhost ~]# 

alojar la passwd dentro del archivo /etc/grub.conf: esta tecnica permite generar la paswd e imprimirla dentro del archivo grub.conf en caso de no contar con una interfaz grafica como xterm.

[root@localhost ~]# grub-md5-crypt >> /etc/grub.conf 
ingresar la passwd + enter
ingresar denuevo la passwd + enter

Revisar el archivo grub.conf
[root@localhost ~]# cat /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sistema/raiz
#          initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-128.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/sistema/raiz
        initrd /initrd-2.6.18-128.el5.img
Password: 
Retype password: 
$1$5otQH0$Y2fL3OcDy1zQNWCirhU4n.
[root@localhost ~]# 

Acomodar la passwd para que quede de la siguiente forma:
[root@localhost ~]# cat /etc/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sistema/raiz
#          initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
Password --md5 = $1$5otQH0$Y2fL3OcDy1zQNWCirhU4n.
title CentOS (2.6.18-128.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-128.el5 ro root=/dev/sistema/raiz
        initrd /initrd-2.6.18-128.el5.img
[root@localhost ~]# 



jueves, 9 de febrero de 2012

ORACLE: dmbs_metadata.get_ddl

El package dmbs_metadata se utiliza para obtener la sintaxis de creación de los distintos objetos de un esquema.


set pagesize 0
 set long 90000
 set feedback off
 set echo off 
 spool scott_schema.sql 
 SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name)
     FROM USER_TABLES u;
 SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name)
     FROM USER_INDEXES u;
 spool off;

Si se requiere obtener la sintaxis de creación de una tabla en particular:

SQL> set long 5000;
SQL> select dbms_metadata.get_ddl('TABLE','NOMBRE_TABLA') from dual;

ORACLE: SYNONYM, PRIVILEGE, SEQUENCE

Cuando se importa uno o varios esquemas, al intentar compilar los objetos es frecuente que queden inválidos debido a que no están creados los permisos, secuencias y sinónimos.
Para obtener todos los datos, se puede recurrir al siguiente método:

En cada esquema de origen en la BD de origen ejecutar las siguientes querys:

Sinónimos:

select 'CREATE SYNONYM '||SYNONYM_NAME||' FOR '||TABLE_OWNER||'.'||TABLE_NAME||';' from user_synonyms where TABLE_OWNER in ('UN_ESQUEMA','OTRO_ESQUEMA');

Privilegios:
select 'GRANT '||PRIVILEGE||' ON '||TABLE_NAME||' TO '||GRANTEE||';' from all_tab_privs_made where GRANTOR='MI_ESQUEMA' and GRANTEE='OTROS_ESQUEMAS'; 

Secuencias:
select 'CREATE SEQUENCE '||sequence_name||' START WITH '||to_char(last_number+1)||';' from user_sequences order by sequence_name;


lunes, 6 de febrero de 2012

LINUX: configuración PHP,MYSQL, FTP, SAMBA

PHP-MYSQL

instalar modulos php y mysql
[root@gcepedar ~]# yum install php-mysql mysql-server-y
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * rpmforge: apt.sw.be
 * base: mirror.netglobalis.net
 * updates: mirror.netglobalis.net
 * addons: mirror.netglobalis.net
 * extras: mirror.netglobalis.net
rpmforge                                                        | 1.1 kB     00:00    
primary.xml.gz                                                  | 4.0 MB     00:10    
rpmforge                                                       10944/10944
base                                                            | 1.1 kB     00:00    
updates                                                         | 1.9 kB     00:00    
addons                                                          |  951 B     00:00    
extras                                                          | 2.1 kB     00:00    
Setting up Install Process
Parsing package install arguments
No package mysql-server-y available.
Resolving Dependencies
--> Running transaction check
---> Package php-mysql.i386 0:5.1.6-27.el5_5.3 set to be updated
--> Processing Dependency: php-pdo for package: php-mysql
--> Running transaction check
---> Package php-pdo.i386 0:5.1.6-27.el5_5.3 set to be updated
--> Finished Dependency Resolution


Dependencies Resolved


=======================================================================================
 Package             Arch           Version                       Repository      Size
=======================================================================================
Installing:
 php-mysql           i386           5.1.6-27.el5_5.3              base            86 k
Installing for dependencies:
 php-pdo             i386           5.1.6-27.el5_5.3              base            65 k


Transaction Summary
=======================================================================================
Install      2 Package(s)        
Update       0 Package(s)        
Remove       0 Package(s)        


Total download size: 151 k
Is this ok [y/N]: y
Downloading Packages:
(1/2): php-pdo-5.1.6-27.el5_5.3.i386.rpm                        |  65 kB     00:00    
(2/2): php-mysql-5.1.6-27.el5_5.3.i386.rpm                      |  86 kB     00:00    
---------------------------------------------------------------------------------------
Total                                                  242 kB/s | 151 kB     00:00    
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : php-pdo                                           [1/2]
  Installing     : php-mysql                                         [2/2]


Installed: php-mysql.i386 0:5.1.6-27.el5_5.3
Dependency Installed: php-pdo.i386 0:5.1.6-27.el5_5.3
Complete!
[root@gcepedar ~]#

------------------------------------------------------

LINUX: configuración de servidor de correo

aruitectura de serv. correo
MTA: servidor que envia y recibe correos
MDA: distribuye el correo: lo deja en el inbox del uuario.
MUA: webmail, outlook


Instalar el paquete postfix

[root@gcepedar named]# yum install postfix
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * rpmforge: fr2.rpmfind.net
 * base: mirror.netglobalis.net
 * updates: mirror.netglobalis.net
 * addons: mirror.netglobalis.net
 * extras: mirror.netglobalis.net
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package postfix.i386 2:2.3.3-2.3.el5_6 set to be updated
--> Finished Dependency Resolution


Dependencies Resolved


==================================================================================
 Package          Arch          Version                    Repository        Size
==================================================================================
Installing:
 postfix          i386          2:2.3.3-2.3.el5_6          updates          3.5 M


Transaction Summary
==================================================================================
Install      1 Package(s)      
Update       0 Package(s)      
Remove       0 Package(s)      


Total download size: 3.5 M
Is this ok [y/N]: y
Downloading Packages:
postfix-2.3.3-2.3.el5_6.i386.rpm                           | 3.5 MB     00:18  
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : postfix                                           [1/1]


Installed: postfix.i386 2:2.3.3-2.3.el5_6
Complete!
[root@gcepedar named]#


Comprobar que sendmail esta funcionando:
[root@gcepedar named]# netstat -atunp | grep 25
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      3290/sendmail: acce
[root@gcepedar named]#

LINUX: configuración DNS doble vista

Editar el archivo /etc/named.conf
Editar el bloque:
view localhost_resolver {
        match-clients      { any; };
        match-destinations { any; };
        recursion yes;
        include "/etc/named.rfc1912.zones";
};

Por lo siguiente:
view lan {
        match-clients      { 127.0.0.1; 192.168.100.0/24; };
        match-destinations { any; };
        recursion yes;
        include "/etc/named.rfc1912.zones";
};

Se agrega el siguiente bloque
view wan {
        match-clients      { any; };
        match-destinations { any; };
        recursion no;
        include "/etc/named.wan.zones";
};

LINUX: configuración de Reversos

Agregar la siguiente linea al archivo named.rfc1912.zones
Donde:
si la ip es 192.168.100.XXX
Entonces se parte alreves: zone "100.168.192
Ademas se añade la palabra in-addr.arpa
Se asigna nombre el archivo: "reverso.gcepeda.cl";
[root@gcepedar ~]# tail /etc/named.rfc1912.zones
zone "100.168.192.in-addr.arpa" IN {
        type master;
        file "reverso.gcepeda.cl";
};
[root@gcepedar ~]#

Se crea el archivo en forma manual
[root@gcepedar ~]# vi /var/named/reverso.gcepeda.cl

Donde: 170 es la ip del ultimo octeto de 192.168.100.170 y
170      IN      PTR     mail.gcepeda.cl.

[root@gcepedar named]# cat /var/named/reverso.gcepeda.cl
$TTL    400
@       IN      SOA     gcepeda.cl. root.localhost.  (
                                      2011082210 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
        IN      NS      ns.gcepeda.cl.
        IN      MX 0    mail.gcepeda.cl.
170      IN      PTR     ns.gcepeda.cl.
170      IN      PTR     mail.gcepeda.cl.
170      IN      PTR     www.gcepeda.cl.
170      IN      PTR     ftp.gcepeda.cl.
[root@gcepedar named]#

LINUX: configurar servicio DNS

Verificar la configuracion del DNS en la maquina.

Verificar si el servicio esta activo
[root@gcepedar ~]# /etc/init.d/named status
rndc: connect failed: 127.0.0.1#953: connection refused
named is stopped

Activar servicio named para que parta siempre
[root@gcepedar ~]# chkconfig named on

Reiniciar servicio named
[root@gcepedar ~]# /etc/init.d/named restart
Stopping named:                                            [  OK  ]
Starting named:                                            [  OK  ]