Certificación LPI 102 - Base de Conocimiento

http://www2.linuxparatodos.net/web/comunidad/base-de-conocimiento...

Inicio » Certificación LPI »

Certificación LPI 102
Etiquetas: lpi

Tabla de Contenidos [-]
1 Shell, Scripting y Manejo de datos 1.1 Personalizando y conociendo el shell 1.1.1 Archivos de configuracion de BASH 1.1.2 Fichero ~/inputrc 1.1.3 Diferencias entre ~/.bash_profile , ~/.bashrc y /etc/profile, /etc/bashrc 1.1.4 Variables de entorno 1.1.5 Como establecer la variable PATH 1.1.6 Variables locales y globales de Shell 1.1.7 Alias para el Shell Bash 1.1.8 Funciones de Shell Bash 1.2 Personalizar o escribir scripts simples 1.2.1 Sentencia if 1.2.2 Sentencia for 1.2.3 Sentencia while y until 1.2.4 Sentencia case 1.2.5 Sentencia select 1.3 Manejo de datos en MySQL 1.3.1 Conectarse y desconectarse del servidor 1.3.2 Conectarse y desconectarse del servidor 1.3.3 Crear y utilizar una base de datos 2 Instalar y configurar X Window System 2.1 Sobre X Window Systemn 2.1.1 Instalando X Window System 2.2 Configurando el entorno X Window System 2.2.1 Especificaciones del monitor 2.2.2 Chip y cantidad de memoria de la tarjeta grafica 2.2.3 Especificaciones del mouse 2.2.4 Especificaciones del teclado 2.3 Fichero xorg.conf 2.3.1 Seccion “Files” 2.3.2 Seccion “Modules” 2.3.3 Seccion “InputDevice” 2.3.4 Seccion “Device” 2.3.5 Seccion “Monitor” 2.3.6 Seccion “Screen” 2.3.7 Seccion “ServerLayaout” 3 Tareas Administrativas 3.1 Administrando cuentas de usuario, grupos y ficheros del sistema 3.1.1 Fichero /etc/passwd 3.1.2 Fichero /etc/shadow 3.1.3 Administración de cuentas de usuario 3.1.4 Administración de grupos 3.1.5 Fichero /etc/group 3.1.6 Fichero /etc/gshadow 3.1.7 pwconv y pwunconv 3.1.8 grpconv y grpunconv 3.2 Automatizar tareas de administración del sistema mediante la programación de scripts de trabajo 3.2.1 Sobre CRON 3.2.2 El crontab de root 3.2.3 Directorios predefinidos: hourly, daily, weekly y monthly 3.2.4 Crontab del sistema 3.2.5 Log de cron 3.3 Administrando la hora del equipo 3.3.1 Reloj de tiempo bajo linux 3.3.2 Programas para controlar el reloj del sistema 3.3.3 Ajustes de tiempo y de las zonas horarias 3.3.4 Ajuste de la hora en Linux

1 de 63

24/07/2010 11:53 p.m.

Certificación LPI 102 - Base de Conocimiento

http://www2.linuxparatodos.net/web/comunidad/base-de-conocimiento...

3.3.5 Comando hwclock 3.3.6 Comando date 4 Servicios Esenciales del Sistema 4.1 Mail Transfer Agent Basico 4.1.1 Protocolo SMTP 4.1.2 Protocolo POP3 4.1.3 Protocolo IMAP 4.1.4 Sobre Sendmail 4.1.5 Sobre Postfix 4.1.6 Sobre Exim 4.1.7 Sobre Qmail 4.2 Administrar impresoras e impresiones 4.2.1 Como imprimir en Linux 4.2.2 En que consiste el sistema de impresion CUPS 4.2.3 Instalar una impresora local con CUPS 4.2.4 Compartir nuestra impresora 5 Fundamentos de Red 5.1 Fundamentos de TCP/IP 5.1.1 Sobre TCP/IP 5.1.2 Desarrollo de TCP/IP 5.1.3 Niveles en la pila TCP/IP 5.2 Protocolo TCP 5.2.1 Establecimiento de la conexion 5.2.2 Transferencia de datos 5.2.3 Tamaño de ventana TCP 5.2.4 Escalado de ventana 5.2.5 Fin de la conexion 5.2.6 Puertos TCP 5.3 Protocolo UDP 5.3.1 Puertos TCP 5.4 Diferencias entre TCP y UDP 5.5 Tabla de Puertos TCP y UDP 5.6 Direcciones IP 5.6.1 Direcciones IPv4 5.6.2 Mascara de una direccion IP 5.6.3 Creacion de Subredes 5.6.4 IP dinamica 5.6.5 IP fija 5.6.6 Direcciones IPv6 5.7 Fichero /etc/services 5.8 FTP 5.9 Telnet 5.10 Ping 5.11 Dig 5.12 Traceroute 5.12.1 Funcionamiento 5.12.2 Configuracion de los parametros de Red 6 Configuracion de la interfaz de red 7 Tareas de Administracion de Seguridad 7.1 El Protocolo SSH 7.2 Acerca de OpenSSH 7.3 Instalando OpenSSH 7.3.1 Archivos de configuración de OpenSSH 7.3.2 Archivos de configuración del lado del servidor 7.3.3 Archivos de configuración del lado del cliente 7.3.4 Configuración de fichero sshd_config 7.4 Iniciar, detener o reiniciar el servidor openSSH 7.5 Anexando el servicio de SSH al arranque del servidor 7.6 Aprendiendo a utilizar openSSH 8 Copiar u obtener archivos o carpetas desde un equipo remoto 8.0.1 Copiando ficheros a través de SCP (Shell Secure Copy) 8.0.2 Subir o enviar archivos o carpetas a un equipo remoto

2 de 63

24/07/2010 11:53 p.m.

Certificación LPI 102 - Base de Conocimiento

http://www2.linuxparatodos.net/web/comunidad/base-de-conocimiento...

Shell, Scripting y Manejo de datos
Personalizando y conociendo el shell
El shell es un interprete de comandos para la interaccion entre el usuario y el hardware del equipo. Existen diferentes variantes del SHELL, de las cuales las mas conocidas son el bash, el csh o zsh. El mas utilizado debido a sus grandes cualidades es el bash. El kernel o nucleo del sistema es el responsable de la comuncacion entre los programas, las instrucciones de bajo nivel y el hardware del sistema. Este capítulo explica cómo personalizar su sistema modificando sus archivos de inicialización y estableciendo las variables de entorno más comunes

Archivos de configuracion de BASH
Los archivos de inicialización encargados de la configuración del sistema dependen del shell que el administrador del sistema haya especificado como shell predeterminado cuando instaló el sistema. El Shell Bourne es el shell predeterminado para la mayoria de los sistemas operativos GNU/LINUX, pero también puede usar el C shell o el Korn Shell . Cada uno de estos shell dispone de su propio archivo o archivos de inicialización. Si no estás seguro de que shell es el shell predeterminado de su equipo ejecute el siguiente comando: [BASH]# echo $SHELL /bin/bash Observe la salida del comando. Si es /bin/bashSu shell de entrada sera el Shell Bourne /bin/csh Su shell de entrada sera el shell C /bin/ksh Su shell de entrada sera el shell Korn Sin tener en cuenta el shell que esté usando, cuando entra por primera vez en el sistema, éste procesa generalmente el archivo perfil: /etc/profile. Usualmente, el administrador del sistema es el dueño de este archivo, y los usuarios lo pueden leer pero no escribir en él. Después de que el sistema ejecute el perfil del sistema, este procesa el perfil del usuario contenido en el fichero ~/.bash_profile. El perfil del usuario es uno o varios archivos de inicialización que definen el entorno de trabajo. Por ejemplo, si javier se encuentra en el entorno fedora su sistema comprobará dicho archivo o grupo de archivos cada vez que empiece una nueva Herramienta del shell o una ventana de la Herramienta de comandos. Según que shell predeterminado esté establecido, su perfil de usuario será uno de los siguientes: .bash_profile (para los shell Bourne y Korn) .login y .cshrc (para el shell C) Su fichero o ficheros de perfil de usuario están situados en su directorio de usuario y le permiten configurar su entorno de trabajo según sus preferencias. Fichero /etc/profile Este fichero contiene la configuracion del sistema y se ejecuta durante el inicio de cada sesion, contiene la definicion de las variables globales para todos los usuarios. Fichero /etc/bashrc Fichero con las funciones y los alias comunes que sera invocado a travez del fichero ~/bashrc de cada usuario. Ficheros ~/.bash_profile , ~/.bash_logout y ~/.bashrc Existen tres ficheros en el directorio de cada usuario los cuales tienen un significado especial para el shell Bash. Estos ficheros permiten al usuario configurar el entorno de su cuenta automaticamente cuando entra en el sistema, cuando arranca un subshell o ejecutar comandos cuando sale del sistema. Los nombres de estos ficheros son ~/.bash_profile, ~/.bashrc y ~/.bash_logout. Si ninguno de estos ficheros existe en el directorio del usuario, /etc/profile es utilizado por el sistema como fichero de configuracion de bash. ~/.bash_profile Este fichero es el mas importante de los tres. Es leido y los comandos incluidos en el, ejecutados, cada vez que el usuario entra en el sistema. Cualquier cambio hecho en este fichero no tendra efecto hasta que salgamos y entremos en el sistema de nuevo. Bash permite dos sinonimos para este fichero, .bash_login (derivado del C shell) y .profile (derivado del Bourne y Korn shell). Si .bash_profile no existe, el sistema buscara primero .bash_login y luego .profile. Solamente uno de estos ficheros es leido, en el caso que existan simultaneamente. ~/.bashrc Es leido cuando el usuario arranca un subshell, escribiendo por ejemplo bash en la linea de comandos. Esto nos permite ejecutar diferentes comandos para la entrada al sistema o para la ejecucion de un subshell. ~/.bash_logout Es el fichero leido por Bash, cuando salimos del sistema. Podemos definir, por ejemplo que se borren los ficheros temporales creados en nuestra ultima sesion o registrar el tiempo que hemos estado utilizando el sistema. Si .bash_logout no existe, ningun comando sera ejcutado a nuestra salida.

Fichero ~/inputrc

3 de 63

24/07/2010 11:53 p.m.

bashrc y . Define las opciones de entrada del teclado. si desea modificar su entorno de trabajo de un modo más permanente.bash_profile. Como ya se mencionó anteriormente en su archivo de perfil de usuario (. su valor es expandido y usado como el nombre del fichero leido antes de ejecutar el script. por defecto 500 El nombre de maquina actual Cadena describiendo la maquina que esta ejecutando Bash Cadena describiendo el tipo de sistema que esta ejecutando Bash Directorio previo definido por el comando 'cd' BASH_VERSIONEl numero de version de bash usada EUID GROUPS HISTFILESIZE HOSTNAME HOSTTYPE MACHTYPE OLDPWD 4 de 63 24/07/2010 11:53 p. usado cuando el interprete de comandos separa palabras como parte de una expansion.linuxparatodos. El sistema utiliza esta información para determinar que el directorio cambie cuando escriba el comando cd sin argumentos. Si desea modificar temporalmente su entorno para la sesión actual de trabajo puede escribir comandos directamente en su BASH. Sin embargo. El identificador numerico de usuario del usuario actual Una matriz que contiene la lista de los grupos a que pertenece el usuario actual El numero maximo de lineas contenidas en la historia de comandos. Una lista de caracteres para separar campos.cshrc para el shell C). a otras se le asignan ciertos valores automaticamente y algunas pierden su significado si le cambiamos los valores que tienen por defecto. El valor por defecto es '> ' La ruta de acceso completa usada para ejecutar la instancia actual de bash Si esta variable esta definida cuando bash es llamado para ejecutar un script. y . Muchas de dichas variables pueden estar ya incluidas en su perfil de usuario. Todas ellas tienen un significado especial para el mismo. en los cuales el interprete de comandos comprueba periodicamente de la llegada de correo. Los archivos /etc/profile y /etc/bashrc afectan a todos los usuarios. .net/web/comunidad/base-de-conocimiento. en los cuales el interprete de comandos busca por comandos Prompt principal. Una lista de directorios. Define la ruta de acceso absoluta de su directorio raíz.bashrc y . . Si este parametro tiene un fichero definido y la variable MAILPATH no esta definida.bash_profile .Certificación LPI 102 .m.. CDPATH HOME IFS MAIL MAILPATH PATH PS1 PS2 BASH BASH_ENV Especifica los directorios que se han de buscar cuando se escribe un único nombre de directorio sin un nombre de ruta de acceso completo. /etc/bashrc Solo existe una sola copia de los archivos /etc/profile y /etc/bashrc.. algunas de ellas solo se pueden leer. Una lista de ficheros separada por comas. El valor por defecto es “'\s-\v\$ ' El prompt secundario. (Estos archivos se encuentran en el directorio personal de cada usuario.bash_profile. su copia le pertenece y se la puede autogestionar Variables de entorno El sistema establece el entorno de sistema mediante un conjunto de especificaciones definidas en los archivos de inicialización. separados por comas.bash_profile para los shell Bourne y Korn.cshrc.bash_profile.bash_login. Cada usuario tiene su propia copia de los archivos . ~/. Para eliminar el sonido de error se agrega la siguiente linea al final del fichero set bell-style none Su fichero de configuracion global es el fichero /etc/inputrc Diferencias entre ~/. puede almacenar variables de entorno “permanentes” en los archivos . o . Por tanto son gestionados por root Como cada usuario tiene su propia copia de los archivos .Base de Conocimiento http://www2. Para mostrar las variables de entorno establecidas actualmente asignadas en su sistema teclee lo siguiente : [BASH]# env HISTORY=100 HOME=/home/hack HZ=100 LOGNAME=hack MAIL=/var/spool/mail/hack MANSECTS=\1:1m:1c:1f:1s:1b:2:\3:3c:3i:3n:3m:3k:3g:3e:3x11:3xt:3 w:3b:9:4:5:7:8 PATH=/usr/bin SHELL=/bin/bash TERM=xterm TZ=EST5EDT A continuacion tenemos la lista de variables reservadas por el interprete de comandos mas comunes.bashrc y /etc/profile. bash informa al usuario de la llegada de correo al fichero especificado.

Seguido a ello invocamos una segunda terminal y nuevamente imprimimos el contenido de la variable “saludo”. Al fijar PATH se crea un conjunto de directorios fijos que el sistema buscará siempre que un usuario. para ello se implementan los alias de comandos. Para solucionar este problema se debe exportar la variable local lo cual hara que la variable se convierta en variable global. Para los shell Bourne y Korn. la variable PATH se especifica en el archivo . escriba el nombre de un comando. Por ejemplo..m.pdf El comando anterior tiene la funcion de listar el contenido de un directorio. . Tu puedes pasar estas variables de locales a globales exportandolas a tu entorno de desarrollo Ejemplo: [BASH]# saludo='Linux Para Todos' [BASH]# echo $saludo Linux Para Todos [BASH]# bash [BASH]# echo $saludo [BASH]# exit exit Como podemos observar asignamos a la variable “saludo” la cadena “Linux Para Todos” y luego mostramos su contenido. si ha establecido la variable PATH para incluir el directorio /usr/bin. fecha de creacion y tamaño. Ejemplo: [BASH]# saludo='Linux Para Todos' [BASH]# export saludo [BASH]# bash [BASH]# echo $saludo Linux Para Todos [BASH]# exit exit El comando “export” convierte la variable local a global.pdf Documents bin Objetivos. /usr/bin/cp. Esto es debido a que su sistema busca el comando cp en todos los directorios nombrados en la variable PATH y lo ejecuta cuando lo encuentra. para excluir la variable recien exportada use el comando “unset” Ejemplo: [BASH]# unset saludo Alias para el Shell Bash El comando alias permite al usuario crear atajos a los comandos mas implementados.net/web/comunidad/base-de-conocimiento.. tendrá que introducir el nombre de ruta de acceso completo para el comando. Ejemplo: [BASH]# ls amsn_received RPM-Como. OSTYPE PPID PS3 PWD SECONDS SHELLOPTS UID Cadena describiendo el sistema operativo que esta ejecutando Bash El numero de proceso del proceso padre del interprete de comandos El valor de esta variable se usa como 'prompt' Directorio actual definido por el comando 'cd' Numero de segundos desde que Bash fue arrancado Lista con opciones de Bash activadas El valor numerico real del usuario actual Como establecer la variable PATH La variable de entorno PATH se usa para ubicar comandos dentro de la jerarquía de directorios de GNU/LINUX. Sin embargo. si no tiene establecida ninguna variable PATH y quiere copiar un archivo.bash_profile de su directorio personal utilizando la siguiente sintaxis: PATH=/usr/bin:/home/bin Variables locales y globales de Shell Estas variables pueden ser variables locales y son definidas solo en el BASH local.Certificación LPI 102 . la cual no es mostrada debido a que es una variable local y no global. 5 de 63 24/07/2010 11:53 p.png kernelfedora.linuxparatodos.Base de Conocimiento http://www2. podrá simplemente escribir cp y el sistema ejecutará siempre el comando. suponga que usted quisiera implementar este comando para ademas de listar el contenido le arroje datos mas relevantes como por ejemplo. numero de enlaces. permisos de ejecucion.

> ls.notes. ls.} [BASH]# look() > { > pwd. Las funciones se construyen mediante la siguiente sintaxis unction nombreDeLafuncion() {listaDeComandos.} Personalizar o escribir scripts simples En este capitulo estudiaremos la forma de crear sencillos scripts mediante la implementacion de sentencias de ontrol. ls } [BASH]# function look() {pwd.1 hack users 4096 jun 29 09:46 amsn_received 4096 jun 4096 jun 64472 jun 78002 jun 9 05:01 bin 9 05:01 Documents 1 17:23 Objetivos..Base de Conocimiento http://www2. } [BASH]# $ look() { pwd.Certificación LPI 102 .} Donde function listaDeComandos Orden que invoca al comando function .m.png 5 15:25 RPM-Como. ls.pdf Para eliminar los alias asignados use el comando “unalias” [BASH]# unalias ls Funciones de Shell Bash Las funciones son muy perecidas a los alias pero estas admiten una gama mas amplia de instrucciones para su ejecución. En Bash existen estas construcciones para controlar el flujo de ejecucion de un script: 6 de 63 24/07/2010 11:53 p.} [BASH]# function look { pwd.fmt _whizzy_gl2.2 hack users drwxr-xr-x 2 hack users drwxr-xr-x 2 hack users -rwxr-xr-x 1 hack users -rwxr-xr-x 1 hack users -rw-r--r-.pag Ejemplos validos en la declaracion de funciones [BASH]# function look() { pwd. Ejemplo: [BASH]# alias ls='ls -l' [BASH]# ls drwx-----.notes. [BASH]# look() { pwd. > } Ejemplos invalidos en la declaracion de funciones [BASH]# function look() pwd. es opcional El cuerpo de la funcion nombreDeLaFuncion() El nombre de la funcion Ejemplo:Construyendo una funcion [BASH]# function listado() { pwd. ls.} La funcion anteriormente definida se usa de la siguiente manera: [BASH]# function /home/valdo/lpic/general-linux-2/notes CVS _whizzy_gl2. ls. ls. . Estas construcciones nos ayudan a controlar la ejecucion de un script y a obtener diversos resultados dependiendo de las condiciones que se cumplan o no cuando ejecutamos el script.linuxparatodos.pdf 1439863 jun 16 10:38 kernelfedora. ls..net/web/comunidad/base-de-conocimiento.

.. while: Ejecuta una seria de comandos mientras que una determinada condicion sea cumpla. en caso contrario.net/web/comunidad/base-de-conocimiento. if/else: Ejecuta una serie de comandos dependiendo si una cierta condicion se cumple o no. for: Ejecuta una serie de comandos un numero determinado de veces. La mayoria de condiciones utilizadas con estas construcciones son comparaciones de cadenas alfanumericas o numericas. . los comandos ejecutados serán los del bloque opcional elif el cual verifica los comandos del cmd3 7 de 63 24/07/2010 11:53 p. los comandos del bloque del then (cmd1. Comparaciones de cadenas alfanumericas Operador Significado cadena1 = cadena2 cadena1 es igual a cadena2 cadena1 != cadena2cadena1 no es igual a cadena2 cadena1 < cadena2 cadena1 es menor que cadena2 cadena1 > cadena 2cadena1 es mayor que cadena 2 -n cadena1 -z cadena1 cadena1 no es igual al valor nulo (longitud mayor que 0) cadena1 tiene un valor nulo (longitud 0) Comparacion de valores numericos Operador Significado x -lt y x -le y x -eq y x -ge y x -gt y x -ne y x menor que y x menor o igual que y x igual que y x mayor o igual que y x mayor que y x no igual que y Comparaciones de atributos de fichero Operador -d fichero -e fichero -f fichero -r fichero -s fichero -w fichero -x fichero -O fichero -G fichero Significado Fichero existe y es un directorio Fichero existe Fichero existe y es un fichero regular Tienes permiso de lectura en fichero Fichero existe y no esta vacio Tienes permiso de escritura en fichero Tienes permiso de ejecucion en fichero Eres el dueño del fichero El grupo del fichero es igual al tuyo fichero1 -nt fichero2fichero1 es mas reciente que fichero2 fichero1 -ot fichero2fichero1 es mas antiguo que fichero2 Sentencia if La sentencia if es un condicional simple. case: Ejecuta una o varias listas de comandos dependiendo del valor de una variable. vamos a ver como las condiciones se pueden definir. Su sintaxis es la siguiente: if cmd then cmd1 cmd2 cmdn elif then cmd4 else cmd5 cmd6 cmdm fi La sentencia if trabaja de la siguiente forma: En caso que el comando cmd haya sido ejecutado con éxito.linuxparatodos.Certificación LPI 102 . tal vez la hayas visto antes en algunos otros lenguajes de programacion. cmd2 y cmdn) serán ejecutados. valores de terminacion de comandos y comprobaciones de atributos de ficheros. Antes de seguir viendo como estas construcciones se pueden utilizar.m.Base de Conocimiento http://www2. select: Permite seleccionar al usuario una opcion de una lista de opciones en un menu. until: Ejecuta una serie de comandos hasta que una determinada condicion se cumpla.

bloque del then (cmd3) los cuales seran ejecutados. terminando con un fi. sino que se parece más al bucle for each de otros lenguajes. cmd4 y cmdm). en caso contrario sera pasado al siguiente bloque. es decir 0.Certificación LPI 102 .net/web/comunidad/base-de-conocimiento. Su sintaxis es la siguiente: for var [in lista] do ————— Sentencias que usan $var ————— done Si se omite in lista.. ya que aquí no se repite un número fijo de veces. sino que se procesan las palabras de una frase una a una. el siguiente bucle muestra información detallada de todos los ficheros en el directorio actual: for fichero in * do ls -l "$fichero" done Sentencia while y until La sintaxis del comando while es la siguiente: while comando do ————— done La sintaxis del comando until es la siguiente: until comando do ————— done En este caso el comando también puede ser una condición encerrada entre . 8 de 63 24/07/2010 11:53 p. Ejemplo #!/bin/bash echo ' Adivina el valor numerico de la variable' read A if [ $A = 1 ] then echo "Acertaste" exit 0 elif [ $A = 2 ] then echo "Muy cerca" else echo "Lejosss.linuxparatodos. La única diferencia entre while y until es que while se ejecuta mientras que el código de terminación del comando sea exitoso.. en este tutorial la indicaremos explícitamente por claridad. . pero aunque vayamos a recorrer esta variable. el else (cmd3..Base de Conocimiento http://www2." fi exit 0 Sentencia for El bucle for en Bash es un poco distinto a los bucles for tradicionales de otros lenguajes como C o Java. Por ejemplo. según esto until se puede interpretar como ejecutar varias veces un comando hasta que tenga exito.m. Por ejemplo si queremos recorrer una lista de planetas podemos hacer: for planeta in Mercury Venus Terra Marte Jupiter Saturno do echo $planeta # Imprime cada planeta en una línea done La lista del bucle for puede contener comodines. mientras que until se ejecuta hasta que el código de terminación sea exitoso.. se recorre el contenido de $@..

*. esac fichero_salida=${fichero_ppm%.linuxparatodos.xpm) xpmtoppm $fichero > $fichero_ppm. en Bash esta sentencia permite realizar una comparación de patrones con la cadena a examinar. do echo ${path%%:*} if [ ${path#*:} = $path ].. Ejemplo #!/bin/bash # Script que muestra los directorios de PATH path=$PATH while [ $path ].tga) tgatoppm $fichero > $fichero_ppm... then path= else path=${path#*:} fi done Sentencia case Mientras que esta sentencia en lenguajes como C o Java se usa para comprobar el valor de una variable simple. La sentencia genera un menú con los elementos de lista. donde asigna un número a cada elemento. *. .pcx) pcxtoppm $fichero > $fichero_ppm.Base de Conocimiento http://www2. como un entero o un carácter.) hasta . *) echo "Formato .ppm case $fichero in *.${fichero##*. Su sintaxis es la siguiente: select variable [in lista] do Sentencias que usan $variable done Vemos que tiene la misma sintaxis que el bucle for.} no soportado" exit 1. se ejecutan sus correspondientes sentencias (las cuales se separan por .. Su sintaxis es la siguiente: case cadena in patron1) Sentencias ..net/web/comunidad/base-de-conocimiento. Una vez elegida una opción por parte del usuario. *. y pide al usuario que introduzca un número. *.. then rm $fichero_ppm fidone Sentencia select La sentencia select nos permite generar fácilmente un menú simple..*}. *. patron2) Sentencias .. El valor elegido se almacena en variable.gif) figtoppm $fichero > $fichero_ppm..pnm|*. y el número elegido en la variable REPLY.ppm) .m. Si cadena cumple alguno de los patrones.Certificación LPI 102 ..tif) tifftopnm $fichero > $fichero_ppm.. ————— esac Cada patrón puede estar formado por varios patrones separados por el carácter |..jpg) exit 0.jpg pnmtojpeg $fichero_ppm > $fichero_salida if ! [ $fichero = $fichero_ppm ]. excepto por la palabra select en vez de for.jpg for fichero in "$@" do fichero_ppm=${fichero%. *. Ejemplo: /bin/bash # Script que convierte ficheros de imagen al formato .. se ejecuta el cuerpo de la sentencia y el proceso se repite en un 9 de 63 24/07/2010 11:53 p.ppm}..

+----------------+--------------+ | VERSION() | CURRENT_DATE | | +----------------+--------------+ | 5. Reemplácelos por los valores apropiados para elcaso. A continuación muestra de nuevo el prompt mysql> para informarle que está listo para otro comando. Algunas instalaciones de MySQL permiten conectarse como usuario anónimo (sin nombre) si el servidor se está ejecutando en el ordenador local. Si esto sucede en su caso. Your MySQL connection id is 25338 to server version: 5.. Pero a diferencia de C y Java no sirve para abandonar la sentencia case. mysql lo envía al servidor para ser ejecutado e imprime los resultados. mencionado anteriormente. En este punto es más importante aprender un poco más acerca de cómo realizar consultas que ir directamente a crear tablas. Los asteriscos (********) representan la contraseña. Aunque el bucle de select es infinito (lo cual nos permite volver a pedir una opción cuantas veces haga falta). Una vez que conozca los parámetros apropiados. deberia poder conectarse al servidor ejecutando mysql sin ningún parámetro: [BASH]# mysql Después de haberse conectado. al igual que en C y Java.01 sec) mysql> Esta consulta le muestra varias cosas acerca de mysql: Un comando normalmente consiste en una sentencia SQL seguida de punto y coma.0... bucle infinito. Por defecto el valor de PS3 es #?. El prompt que usa la función es el definido en la variable de entorno PS3. sino que ésta se abandona usando los dos puntos comas . Luego conocerá otras. también se deberá especificar el nombre de host. debe ingresarse cuando mysql muestra Enter password:. Si todo funciona bien. Por eso muestran el prompt mysql>. La sentencia break. CURRENT_DATE.Certificación LPI 102 . empleando varias consultas que puede realizar para familiarizarse con la forma en que funciona mysql. Conectarse y desconectarse del servidor Cerciórese de haberse conectado al servidor. La mayoría de los ejemplos en las secciones siguientes asumen que ya se ha conectado al servidor. tal como se describe en la sección anterior. Esta sección describe los principios básicos del ingreso de comandos. puede desconectarse en cualquier momento escribiendo QUIT (o \q) en el prompt mysql>: mysql> QUIT Bye En Unix. or \g. (Hay excepciones donde el punto y coma puede omitirse. Type '\c' to clear the buffer.' or '\h' for help.9-beta-standard Type 'help. generalmente se le porporcionará a mysql un nombre de usuario y una contraseña. Commands end with . debería poder conectarse de este modo: [BASH]# mysql -h host -u user -p Enter password: ******** host y user representan el nombre del ordenador donde se está ejecutando el servidor de bases de datos MySQL y el nombre de usuario de la cuenta que se usará para conectarse. Si el servidor se está ejecutando en un ordenador distinto a donde está estableciendo la conexión.. Consulte con su administrador para saber los parámetros de conexión (nombre de usuario. y es habitual cambiar este prompt antes de ejecutar select para que muestre al usuario un mensaje más descriptivo. tanto de select. lo cual no es un prompt que suela gustar especialmente a los usuarios. while y until. como de los bucles for. contraseña y host) que debe emplear. . Esto en sí mismo no selecciona ninguna base de datos para trabajar. es una de ellas. y recuperarlos. también puede desconectarse presionando Control-D. cargar datos.m. el bucle se puede abandonar usando la sentencia break. +----------------+--------------+ 10 de 63 24/07/2010 11:53 p. Aquí tiene un comando simple que ordena al servidor que muestre su número de versión y la fecha actual.net/web/comunidad/base-de-conocimiento.linuxparatodos.) Cuando ingresa un comando.7-beta-Max | 2005-07-11 1 row in set (0. QUIT. Manejo de datos en MySQL Conectarse y desconectarse del servidor Para conectarse al servidor. y se puede usar en el caso.Base de Conocimiento http://www2.0. se usa para abandonar un bucle. mysql> El prompt anuncia que mysql está listo para procesar comandos. se verá una información de ingreso seguida por el prompt mysql>: [BASH]# mysql -h host -u user -p Enter password: ******** Welcome to the MySQL monitor. Ingréselo a continuación del prompt mysql> y presione Enter: mysql> SELECT VERSION().

comandos extensos que requieren varias lineas no son un problema. y además porque están afectados por factores como la carga del servidor o la latencia de red.70710678118655 | 1 row in set (0.02 sec) Las consultas mostradas hasta ahora han sido relativamente cortas. Si se emplea. mysql informa cuántas filas fueron devueltas y cuánto tiempo le tomó ejecutarse a la consulta. La primera fila contiene etiquetas para las columnas. lo cual da una idea aproximada del rendimiento del servidor.net/web/comunidad/base-de-conocimiento. sentencias de una sola línea. +----------------+ | VERSION() | +----------------+ | 5. puesto que suministra información valiosa.) Las palabras clave pueden ingresarse en cualquier combinación de minúsculas y mayúsculas. . mysql acepta un formato libre para las entradas: recolecta lineas pero no las ejecuta hasta que encuentra el punto y coma. Si está trayendo el valor de una expresión. El prompt es un aliado. mysql imprime los resultados de la consulta en forma tabulada (filas y columnas). mysql determina cuando una sentencia ha llegado a l final observando si termina en un punto y coma. Solamente deben separarse con punto y coma: mysql> SELECT VERSION().) Aqui tiene una sentencia de múltiples líneas: mysql> SELECT -> USER() -> . Estos valores son imprecisos porque representan tiempo de reloj corriente (no tiempo de CPU). CURRENT_DATE.Certificación LPI 102 . +------------------+---------+ | SIN(PI()/4) | (4+1)*5 | 25 | +------------------+---------+ | 0. (Para simplificar los ejemplos de este capitulo. mysql etiqueta la columna usando el texto de la expresión. Esta es la forma en que mysql advierte que no se ha completado la sentencia y aún espera por el resto.. Las siguientes consultas son equivalentes: mysql> SELECT VERSION(). el nombre de cada columna es el nombre del campo que trae desde la base de datos. en lugar del contenido de un campo o columna de una tabla (como en el ejemplo anterior).0. Aqui tiene otra consulta que demuestra que mysql puede usarse como calculadora: mysql> SELECT SIN(PI()/4). mysql> SeLeCt vErSiOn(). Si durante el ingreso de un comando decide que no quiere ejecutarlo. no si se llegó al final de la línea física. current_date.Base de Conocimiento http://www2. Las filas siguientes son los resultados de la consulta. mysql> select version(). Generalmente. current_DATE. cancélelo tipeando \c: mysql> SELECT +---------------+--------------+ +------------------+---------+ 11 de 63 24/07/2010 11:53 p.linuxparatodos.00 sec) +---------------------+ | NOW() | +---------------------+ | 2005-07-11 17:59:36 | +---------------------+ 1 row in set (0. -> CURRENT_DATE. +---------------+--------------+ | USER() | CURRENT_DATE | | +---------------+--------------+ | jon@localhost | 2005-07-11 1 row in set (0.7-beta-Max | +----------------+ 1 row in set (0. de ese modo. a partir de ahora no se mostrará la línea “rows in set”. siempre se sabrá lo que mysql está esperando. SELECT NOW(). (4+1)*5.m. (En otras palabras.00 sec) Observe en este ejemplo que el prompt cambia de mysql> a -> después que se ha ingresado la primera línea de una consulta de múltiples líneas..00 sec) No es necesario que un comando sea ingresado en una sola línea. Se puede inclusive ingresar múltiples sentencias en una misma línea.

Puede hacerlo si crea tablas para almacenar sus datos e introduce en ellas la información deseada. podrá responder una variedad de preguntas acerca de sus mascotas recuperando datos desde las tablas. note lo que el prompt '> le está diciendo.0. se encuentra abierta una cadena que comienza con apostrofo ('). pero informa que está pendiente de completar un identificador delimitado por tildes. Esto puede ser sumamente desconcertante.net/web/comunidad/base-de-conocimiento. Esperando la siguiente línea. es el momento de acceder a una base de datos.Base de Conocimiento http://www2. Entonces. Esperando la siguiente línea. podría demorar un buen tiempo en hacer lo que necesita. El prompt /*> fue introducido en la serie 5. informando que mysql está listo para un nuevo comando. mysql aguarda por más caracteres: mysql> SELECT USER() -> Si esto le ocurre (considera que ha ingresado una sentencia completa pero solamente obtiene un prompt ->). Esta sección le muestra como: Crear una base de datos Crear una tabla Introducir datos en la tabla Recuperar datos desde la tabla de varias maneras 12 de 63 24/07/2010 11:53 p. presiona ENTER y espera por el resultado. nada ocurrirá.) ¿Qué hacer llegado a este punto? Lo más simple es cancelar el comando.>: mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30. En lugar de eso. -> '> "> `> /*> Esperando la siguiente línea en un comando de múltiples líneas Esperando la siguiente línea. se encuentra abierta una cadena que comienza con comillas dobles ('"'). -> USER() -> \c mysql> Una vez más observe el prompt. todo lo que se ingrese posteriormente será aparentemente ignorado por mysql — incluyendo el comando QUIT. . tipee el caracter de cierre que falta y entonces ingrese \c. En lugar de asombrarse por el tiempo que consume la consulta.0 a partir de MySQL 5. la mayoría de las veces es porque mysql está esperando por el punto y coma. y mysql le permite ingresar cadenas divididas en múltiples líneas.m.linuxparatodos. Es importante conocer el significado de estos indicadores. ya que si por error se ingresa una cadena incompleta. En ese caso. se encuentra abierto un comentario que comienza con /*. ¡porque mysql interpretará que es parte de la cadena que está ingresando!. Ingrese un punto y coma para completar la sentencia. Cambia a mysql> después de que ingresa \c. se encuentra abierta una cadena que comienza con tilde ('`'). La siguiente tabla muestra cada uno de los indicadores que podrá ver y sintetiza lo que dicen acerca del estado en que se encuentra mysql: Prompt Significado mysql> Listo para un nuevo comando. Si no advierte lo que el indicador trata de decirle.6. Puede escribir cadenas delimitadas por ' o '"' (por ejemplo.. A menudo esto significa que inadvertidamente omitió este carácter. Es frecuente que se origine una sentencia de múltiples lineas cuando accidentalmente le da entrada a un comando de una sola línea pero olvida terminarlo con punto y coma. Por ejemplo: mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30. y mysql la ejecutará: mysql> SELECT USER() -> . no puede simplemente tipear \c en este caso. Indica que mysql espera por el final de una cadena inconclusa. Crear y utilizar una base de datos Una vez que se sabe la forma de ingresar comandos. (¿Ve el error en la sentencia? La cadena 'Smith no tiene el apóstrofo de cierre. Suponga que en su hogar posee varias mascotas y desea registrar distintos tipos de información sobre ellas. en particular si no se conoce lo que debe hacer para terminar la línea y cancelar el comando. No obstante..Certificación LPI 102 . '> Si ingresa esta sentencia SELECT. informándole que mysql está listo para un nuevo comando. Esperando la siguiente línea. +--------------------+ | USER() | +--------------------+ | joesmith@localhost | +--------------------+ Los prompts '> y "> aparecen durante el ingreso de cadenas. 'hola' o "adios"). '> '\c mysql> El prompt cambia de nuevo a mysql>. Cuando ve un prompt '> o "> significa que ha comenzado a ingresar una cadena comenzando con ' o '"' pero no ha ingresado el correspondiente caracter de terminación. El prompt `> es similar a '> y "> .

si tiene acceso a ella.m. Si se quisiera suministrar la contraseña en la linea de comandos. ésta no se selecciona para su uso. Suponga que quiere llamarla menagerie. Esto también se aplica a los nombres de tablas. debería pedirle a su administrador permiso para usar una base de datos propia. o puede indicar la base de datos en la linea de comandos al ejecutar mysql. pero no es difícil imaginar situaciones del mundo real donde podría usarse un tipo similar de base de datos. al igual que QUIT. . En ambientes Unix. MENAGERIE. Si la base de datos test existe. El administrador necesitará ejecutar un comando como este: mysql> GRANT ALL ON menagerie. o una variante similar. +----------+ | Database | +----------+ | mysql | test | tmp | | | +----------+ Probablemente la lista obtenida sea distinta en su ordenador. Para convertir a menagerie en la base de datos actual. los nombres de las bases de datos son case sensitive (al contrario que las palabras clave). Al crear una base de datos. Por ejemplo.Esta restricción no existe en Windows.Certificación LPI 102 . Puede colocar los ejemplos siguientes en la base de datos test. De todos modos. Crear y utilizar una base de datos Si el administrador crea su base de datos en el mismo momento que le otorga privilegios. o para los registros de los pacientes de un veterinario. para un granjero que desee hacer el seguimiento de su hacienda. colocar la contraseña en la linea de comandos no es recomendable porque lo expone a la vista de otros usuarios. Crear una tabla La creación de la base de datos ha sido una tarea sencilla. después de la opción -p. pero hasta ahora permanece vacía.linuxparatodos. La base de datos test se provee para que los usuarios hagan pruebas. de lo contrario necesitará crearla: mysql> CREATE DATABASE menagerie. Emplear múltiples tablas La base de datos menagerie (en inglés significa "colección de animales") se ha hecho deliberadamente simple.net/web/comunidad/base-de-conocimiento. Tenga en cuenta que si no tiene el privilegio SHOW DATABASES. no podrá ver todas las bases de datos que hay en el servidor.* TO 'su_nombre_mysql'@'su_host_cliente'. como le muestra SHOW TABLES: mysql> SHOW TABLES. La sentencia USE tiene otra particularidad: debe escribirse en una sola linea. y no Menagerie. Mediante la sentencia SHOW se encuentran las bases de datos que existen actualmente en el servidor: mysql> SHOW DATABASES. pero deben ser seleccionadas cada vez que se inicia una sesión de mysql. Por ejemplo: shell> mysql -h host -u user -p menagerie Enter password: ******** Advierta en el comando anterior que menagerie no es la contraseña. lo que deposite allí puede ser fácilmente borrado por alguien más que tenga el acceso. use este comando: mysql> USE menagerie Database changed Las bases de datos sólo necesitan ser creadas una sola vez. 13 de 63 24/07/2010 11:53 p. En el sitio web de MySQL pueden descargarse archivos de texto con datos de ejemplo y algunas de las sentencias empleadas en las siguientes secciones.. intente acceder a ella: mysql> USE test Database changed Advierta que. debe hacerlo explicitamente. Por este motivo. de modo que siempre debe referirse a su base de datos como menagerie. puede comenzar a utilizarla.. no -p mypassword). La base de datos mysql es necesaria porque es la que describe los privilegios de acceso de los usuarios. Simplemente debe indicar el nombre de la base de datos a continuación de los parámetros que necesite ingresar. Donde su_nombre_mysql es el nombre de usuario que se le asignó. aunque puede utilizar el mismo esquema de mayúsculas cuando se refiera a bases de datos y tablas en una consulta dada. pero es casi seguro que tendrá las bases de datos mysql y test. -pmypassword. pero si trabaja en un ambiente compartido. Puede hacerse a través del comando USE como se muestra en el ejemplo. y su_host_cliente es el host u ordenador desde donde se conectará. USE no necesita que ponga un punto y coma al final (aunque puede hacerlo si lo desea). debe hacerse sin dejar espacios en blanco (por ejemplo.Base de Conocimiento http://www2.

considere que es lo mismo que haría en un contexto de base de datos de negocios para identificar aquellos clientes a los que habrá que enviar una tarjeta por su cumpleaños. SHOW TABLES debería producir una salida: mysql> SHOW TABLES. por lo que no es dificultoso. Esta tabla puede llamarse pet. Dado que el nombre no es muy relevante por sí mismo. .) Si en el futuro debiera aumentar la longitud de estos campos. +---------------------+ | Tables in menagerie | +---------------------+ | pet | +---------------------+ Para verificar que la tabla ha sido creada en la forma esperada. La edad cambia a medida que pasa el tiempo..m.net/web/comunidad/base-de-conocimiento. Es obvio el uso del tipo de dato DATE para las columnas birth y death. Por ejemplo. lo cual significa que debería actualizar la base de datos a menudo. Querrá una tabla para contener un registro por cada mascota. podrá calcularla como la diferencia entre la fecha de nacimiento y la fecha actual. el límite de longitud era 255. normalmente se puede adoptar cualquier longitud entre 1 y 65535. tal como 'm' y 'f'. (Nota: Anteriormente a MySQL 5. tendría que tener más información. para conseguir ese toque personal con la asistencia del ordenador). sex (sexo).3 y versiones posteriores. utilice la sentencia DESCRIBE: mysql> DESCRIBE pet. MySQL provee funciones para realizar cálculos con fechas. Hay varios tipos de datos que podrían usarse para representar el sexo en los registros de animales. Para esto. Cargar datos a una tabla Luego de crear la tabla. MySQL tiene la sentencia ALTER TABLE. De este modo.3. Puede calcular edades en relación a otras fechas además de la actual. como mínimo. le serán de utilidad las sentencias LOAD DATA e INSERT. esto puede ser diferente a lo que acostumbra utilizar). species (especie). owner (propietario). según lo que se crea más razonable. Luego de crear una tabla. (Observe que MySQL espera que las fechas tengan el formato 'AAAA-MM-DD'. Debe usar la sentencia CREATE TABLE para especificar la estructura de una tabla: mysql> CREATE TABLE pet (name VARCHAR(20). pero no es un buen dato para almacenar en una base de datos. cada vez que requiera saber la edad. En lugar de esto. name Fluffy Claws Buffy Fang owner speciessex Harold cat Gwen cat Harold dog Benny dog f m f m birth 1993-02-04 1994-03-17 1989-05-13 1990-08-27 death 14 de 63 24/07/2010 11:53 p. Almacenar la fecha de nacimiento en lugar de la edad tiene otras ventajas: Puede usar la base de datos para tareas como generar recordatorios para los próximos cumpleaños de mascotas.Base de Conocimiento http://www2.linuxparatodos.Certificación LPI 102 . Empty set (0. birth (nacimiento) y death (muerte). y species porque los datos que allí se almacenan no son de longitud uniforme. -> species VARCHAR(20). Probablemente pensará en otros tipos de información que resultarían útiles dentro de la tabla pet pero los identificados hasta ahora son suficientes: name (nombre). birth DATE. sex CHAR(1). En realidad no es necesario que todas estas columnas tengan la misma longitud ni que ésta sea 20. Por ejemplo. Lo más simple es usar los caracteres 'm' y 'f'. es mejor almacenar un valor fijo. si más de una persona en su familia tendrá mascotas. owner. si olvida los nombres o el tipo de dato de las columnas de la tabla. querrá listar también el dueño de cada animal. como la fecha de nacimiento.00 sec) La parte difícil es decidir cómo debería ser la estructura de su base de datos: qué tablas necesitará. death DATE). +---------+-------------+------+-----+---------+-------+ | Field | name | owner | sex | birth | death | Type | Null | Key | Default | Extra | | NULL | NULL | NULL | NULL | NULL | NULL | | | | | | | | | | | | +---------+-------------+------+-----+---------+-------+ | varchar(20) | YES | | varchar(20) | YES | | char(1) | date | date | YES | | YES | | YES | | species | varchar(20) | YES | +---------+-------------+------+-----+---------+-------+ DESCRIBE puede ser utilizada en cualquier momento. El tipo de dato VARCHAR es una buena elección para las columnas name. o 'male' (masculino) y 'female' (femenino). almacenar la fecha de muerte de una mascota le posibilita calcular la edad que tenía a ese momento.0. como especie y sexo. necesitará completarla con datos. En MySQL 5. ¿Qué hacer con la edad? Podría ser de interés. Suponga que los registros de mascotas fueran como los mostrados a continuación. Y algunos otros datos descriptivos básicos. el nombre de cada animal. y debería contener. owner VARCHAR(20). por ejemplo.. (Si piensa que este tipo de consultas no es importante. y qué columnas habrá en cada tabla.0.

'hamster'. Bowser Diane dog Chirpy Gwen bird Whistler Gwen bird Slim Benny snake m f 1997-12-09 m 1979-08-311995-07-29 1998-09-11 1996-04-29 Dado que está comenzando con una tabla vacía. Suponga que Diane obtiene un nuevo hamster llamado "Puffball".m. Puede ser una lista de columnas.txt' INTO TABLE pet -> LINES TERMINATED BY '\r\n'.txt Cuando lo que desea es agregar nuevos registros de a uno por vez. la sentencia INSERT resulta de utilidad. A partir de este ejemplo queda demostrado que lleva mucho más trabajo realizar una carga inicial de registros empleando varias sentencias INSERT que si se hace mediante la sentencia LOAD DATA. +----------+--------+---------+------+------------+------------+ | name | Fluffy | Claws | Buffy | Fang | Bowser | Chirpy | Slim | owner | species | sex | birth | Harold | cat | Gwen | cat | Harold | dog | Benny | dog | Diane | dog | Gwen | bird | bird | f | m | f | m | m | f | m | death | | | | | | | | | +----------+--------+---------+------+------------+------------+ | 1993-02-04 | NULL | 1994-03-17 | NULL | 1989-05-13 | NULL | 1990-08-27 | NULL | 1998-09-11 | NULL | 1996-04-29 | NULL | 1999-03-30 | NULL | 1979-08-31 | 1995-07-29 | | Whistler | Gwen | NULL | 1997-12-09 | NULL | Benny | snake | Puffball | Diane | hamster | f +----------+--------+---------+------+------------+------------+ 15 de 63 24/07/2010 11:53 p. También. Por ejemplo.txt. es opcional. De esta sencilla manera. . Se podría agregar un nuevo registro.'f'. puede usar valores NULL. pero los valores por defecto son tabulación y nueva línea. se pueden insertar valores NULL directamente. conteniendo un registro por linea. Estos son suficientes para que la sentencia lea correctamente el fichero pet. y luego insertando el contenido del fichero en la tabla mediante una sola sentencia.Certificación LPI 102 .Base de Conocimiento http://www2.'f'. con INSERT.linuxparatodos. se suministran valores para cada columna. y dispuestos en el orden en el cual se especificaron las columnas en la sentencia CREATE TABLE. condiciones representa las condiciones que cada registro debe cumplir para retornar como resultado. Para esto. o * para indicar “todas las columnas.'1999-03-30'.txt' INTO TABLE pet. Si trabaja en Windows. La cláusula WHERE clause is optional. La sintaxis general de esta sentencia es: mysql> INSERT INTO pet -> VALUES ('Puffball'. No se debe utilizar \N como se hace con LOAD DATA. usando la sentencia INSERT de este modo: mysql> INSERT INTO pet -> VALUES ('Puffball'.txt dentro de la tabla pet. Para valores ausentes (como sexo desconocido o fechas de muerte de animales con vida). el registro de Whistler se vería del modo siguiente (el espacio en blanco entre cada valor es un solo carácter de tabulación): name owner speciessexbirth death Whistler Gwen bird \N 1997-12-09\N Para cargar el fichero pet. utilice este comando: mysql> LOAD DATA LOCAL INFILE '/path/pet. una forma fácil de completarla es creando un fichero de texto que contenga una línea por cada animal.) Opcionalmente puede especificar en la sentencia LOAD DATA los caracteres que actuarán como separador de campo y fin de línea.'hamster'. utilice \N (barra diagonal y N mayúscula).net/web/comunidad/base-de-conocimiento. debería crear un fichero de texto llamado pet. debería usar: mysql> LOAD DATA LOCAL INFILE '/path/pet. probablemente quiera utilizar LINES TERMINATED BY '\r'.NULL). Seleccionar todos los datos====== La forma más simple de SELECT recupera todo lo que hay en la tabla: mysql> SELECT * FROM pet.'Diane'. Para representar estos valores en el archivo de texto. dispuestos en el orden en el cual se especificaron las columnas en la sentencia CREATE TABLE statement. Si está presente. (En un ordenador Apple bajo OS X.” desde_tabla indica la tabla donde están los datos a recuperar.'1999-03-30'.NULL). seleccionar_esto es lo que se quiere ver... con un editor que emplea \r\n (retorno de carro + nueva linea) como caracteres de fin de línea.'Diane'. para indicar un valor ausente. Observe que las cadenas alfanuméricas y las fechas son representados como cadenas delimitadas por apóstrofos. Extraer informacion de una tabla La sentencia SELECT es utilizada para traer información desde una tabla. con cada valor separado por un carácter de tabulación.

puede ocurrir que la fecha de nacimiento de Bowser no parezca correcta. generalmente. +----------+-------+---------+------+------------+-------+ | name | Chirpy | owner | species | sex | birth | Gwen | bird | f | death | +----------+-------+---------+------+------------+-------+ | 1998-09-11 | NULL | | 1999-03-30 | NULL | | Puffball | Diane | hamster | f +----------+-------+---------+------+------------+-------+ Se pueden combinar condiciones. deberá volver a cargar el registro de Puffball. las comparaciones de cadenas no son case sensitive. Por ejemplo. es fácil recuperar una tabla en su totalidad. se descubre que el año correcto de nacimiento es 1989. +----------+-------+---------+------+------------+-------+ | name | Chirpy | Slim | owner | species | sex | birth | Gwen | bird | Benny | snake | f | m | death | +----------+-------+---------+------+------------+-------+ | 1998-09-11 | NULL | | 1996-04-29 | NULL | | Whistler | Gwen | bird | NULL | 1997-12-09 | NULL | +----------+-------+---------+------+------------+-------+ 16 de 63 24/07/2010 11:53 p. El resultado de la consulta será el mismo. se tiene interés en obtener una respuesta para una consulta en particular. en cuyo caso se especifican algunas restricciones para la información que se traerá. Corrigiendo únicamente el registro erróneo. no 1979. seleccione el registro de Bowser de esta manera: mysql> SELECT * FROM pet WHERE name = 'Bowser'.net/web/comunidad/base-de-conocimiento.. Esta forma de SELECT es útil si se quiere revisar la tabla completa. ya no es 1979..txt para corregir el error. despues de haberla cargado con un conjunto de datos inicial. Para esto se usa la sentencia UPDATE: mysql> UPDATE pet SET birth = '1989-08-31' WHERE name = 'Bowser'. mysql> LOAD DATA LOCAL INFILE 'pet. No obstante. vaciando la tabla y volviendola a llenar con los datos. Pero. por ejemplo. no solamente por name. si opta por esto. necesita evaluar la columna birth: mysql> SELECT * FROM pet WHERE birth > '1998-1-1'.linuxparatodos.m. UPDATE modifica solo el registro en cuestión y no requiere que se vuelva a llenar la tabla. Consultando los papeles de pedigri. usualmente. +--------+-------+---------+------+------------+------------+ | name | owner | species | sex | birth | m | death | +--------+-------+---------+------+------------+------------+ | Bowser | Diane | dog | 1989-08-31 | 1995-07-29 | +--------+-------+---------+------+------------+------------+ salida confirma que el año fue correctamente registrado como 1989. por eso puede escribir el nombre como 'bowser'. Se pueden seleccionar sólo algunos registros de la tabla. Seleccionar registros especificos====== Como se ha visto en la sección anterior. A continuación se verán algunas consultas que responden preguntas acerca de las mascotas. especialmente cuando alcanza un gran tamaño. Por ejemplo. En cambio. Por ejemplo. 'BOWSER'. Para esto se usan las sentencias DELETE y LOAD DATA: mysql> DELETE FROM pet. . si quisiera saber qué animales han nacido luego de 1998. no se desea ver la tabla completa. etc. si quisiera verificar los cambios realizados sobre la fecha de nacimiento de Bowser.Base de Conocimiento http://www2. por ejemplo para localizar perros hembra: mysql> SELECT * FROM pet WHERE species = 'dog' AND sex = 'f'. Normalmente. También existe el operador OR: mysql> SELECT * FROM pet WHERE species = 'snake' OR species = 'bird'. +-------+--------+---------+------+------------+-------+ | name | owner | species | sex | birth | Buffy | Harold | dog | f | death | +-------+--------+---------+------+------------+-------+ | 1989-05-13 | NULL | +-------+--------+---------+------+------------+-------+ La consulta anterior emplea el operador lógico AND. Sólo debe omitir la cláusula WHERE en la sentencia SELECT.txt' INTO TABLE pet. Se pueden indicar condiciones a cumplir por cualquier columna. Existen al menos dos formas de solucionarlo: Editando el fichero pet.Certificación LPI 102 .

+--------+ | owner | +--------+ | Harold | | Gwen | | Harold | | Benny | | Diane | | Gwen | Gwen | | | Benny | | Diane | +--------+ Observe que esta sentencia retorna el campo owner de cada registro. +----------+------------+ | name | Fluffy | Claws | Buffy | Fang | Bowser | Chirpy | Slim | birth | +----------+------------+ | 1993-02-04 | | 1994-03-17 | | 1989-05-13 | | 1990-08-27 | | 1989-08-31 | | 1998-09-11 | | 1996-04-29 | | Whistler | 1997-12-09 | | Puffball | 1999-03-30 | +----------+------------+ Para saber quien posee mascotas. para obtener únicamente la fecha de nacimiento de perros y gatos. recupere solamente una vez cada registro repetido. Si utiliza ambos operadores. es buena idea emplear paréntesis para indicar explicitamente la forma en que las condiciones deben agruparse: mysql> SELECT * FROM pet WHERE (species = 'cat' AND sex = 'm') -> OR (species = 'dog' AND sex = 'f'). si bien AND tiene mayor precedencia que OR. seleccione las columnas name y birth: mysql> SELECT name. species. separadas por comas. . +--------+ | owner | +--------+ | Benny | | Diane | | Gwen | | Harold | +--------+ Puede emplearse una clásula WHERE para combinar la selección de ciertas filas y de ciertas columnas. solo hace falta indicar las columnas en las que se está interesado.m. utilice esta consulta: mysql> SELECT owner FROM pet. ejecute esta consulta: mysql> SELECT name.net/web/comunidad/base-de-conocimiento.Base de Conocimiento http://www2. birth FROM pet 17 de 63 24/07/2010 11:53 p. Por ejemplo. Para reducir la salida. +-------+--------+---------+------+------------+-------+ | name | owner | species | sex | birth | Claws | Gwen | cat | m | f | death | +-------+--------+---------+------+------------+-------+ | 1994-03-17 | NULL | | 1989-05-13 | NULL | | Buffy | Harold | dog Seleccionar columnas concretas====== Si no se quieren ver filas completas. agregando la palabra clave DISTINCT: mysql> SELECT DISTINCT owner FROM pet. y algunos de ellos aparecen más de una vez.. AND and OR pueden ser combinadas.linuxparatodos. birth FROM pet.. Por ejemplo. si desea saber cuándo nació cada animal.Certificación LPI 102 .

es ascendente. Por ejemplo. dentro de cada tipo. -> WHERE species = 'dog' OR species = 'cat'. ordenar por nacimiento en sentido descendente (los animales más jóvenes primero) utilice la siguiente consulta: mysql> SELECT name. que las filas resultantes se mostraron sin ningún orden en particular. +--------+---------+------------+ | name | species | birth | +--------+---------+------------+ | Fluffy | cat | Claws | cat | Buffy | dog | Fang | dog | Bowser | dog | 1993-02-04 | | 1994-03-17 | | 1989-05-13 | | 1990-08-27 | | 1989-08-31 | +--------+---------+------------+ Ordenar registros====== Quizá advirtió. Significa que el orden permanece indefinido para las columnas que son idénticas excepto por sus mayúsculas y minúsculas.Base de Conocimiento http://www2. species. ordenadas por fecha: mysql> SELECT name. Aqui tiene las fechas de cumpleaños de los animales. Puede no obstante forzar a que una columna se ordene en forma sensible a mayúsculas empleando el modificador BINARY: ORDER BY BINARY columna. por defecto. y cada columna en un sentido diferente. birth FROM pet -> ORDER BY species. agregue la palabra clave DESC luego del nombre de la columna por la que ordena: mysql> SELECT name. la ordenación. +----------+---------+------------+ | name | Chirpy | Claws | Fluffy | species | birth | bird | cat | cat | +----------+---------+------------+ | 1998-09-11 | | 1997-12-09 | | 1994-03-17 | | 1993-02-04 | | Whistler | bird 18 de 63 24/07/2010 11:53 p. . +----------+------------+ | name | Buffy | Bowser | Fang | Fluffy | Claws | Slim | Chirpy | birth | +----------+------------+ | 1989-05-13 | | 1989-08-31 | | 1990-08-27 | | 1993-02-04 | | 1994-03-17 | | 1996-04-29 | | 1998-09-11 | | Whistler | 1997-12-09 | | Puffball | 1999-03-30 | +----------+------------+ Por lo general. +----------+------------+ | name | birth | +----------+------------+ | Puffball | 1999-03-30 | | Chirpy | Slim | Claws | Fluffy | Fang | Bowser | Buffy | 1998-09-11 | | 1996-04-29 | | 1994-03-17 | | 1993-02-04 | | 1990-08-27 | | 1989-08-31 | | 1989-05-13 | | Whistler | 1997-12-09 | +----------+------------+ Puede ordenar basándose en varias columnas.Certificación LPI 102 . birth FROM pet ORDER BY birth DESC. en los ejemplos anteriores.net/web/comunidad/base-de-conocimiento. A menudo es más fácil examinar la salida de una consulta cuando las filas se ordenan de algún modo significativo. con los valores más pequeños primero.. cuando se trata de columnas de tipo carácter. Para ordenar un resultado. Para ordenar en sentido inverso (descendente).linuxparatodos.m.. se usa la clásula ORDER BY. — al igual que otras operaciones de comparación — no es case-sensitive. para ordenar por tipo de animal en sentido ascendente y. birth DESC. El sentido de ordenación. birth FROM pet ORDER BY birth.

la fecha actual. Calculos sobre fechas====== MySQL provee varias funciones que se aplican a cálculos entre fechas. pero los resultados podrían revisarse más fácilmente si las filas se presentaran en algún orden.. birth. por lo que se emplea un alias (age) para que el encabezado sea más comprensible. -> (YEAR(CURDATE())-YEAR(birth)) -> .m. CURDATE(). -> (YEAR(CURDATE())-YEAR(birth)) -> .5)<RIGHT(birth. La expresión completa es un tanto confusa para usar como encabezado. para calcular edades u obtener partes de una fecha. . hay que calcular la diferencia entre el año de la fecha actual y el de la fecha de nacimiento. CURDATE(). el nombre. Esto puede hacerse agregando la cláusula ORDER BY name para ordenar por nombre la salida: mysql> SELECT name. solo hay que utilizar una cláusula ORDER BY diferente: mysql> SELECT name. que representan la parte MM-DD de la fecha.Base de Conocimiento http://www2. la fecha de nacimiento.. Para determinar cuántos años de edad tiene cada mascota. y RIGHT() trae los 5 primeros caracteres contando desde la derecha. no afecta el sentido de ordenación de la columna species. La siguiente consulta devuelve. por ejemplo. y la edad en años.Certificación LPI 102 . lo cual se corresponde con la diferencia de 1 año a restar de la edad si el dia de la fecha devuelto por CURDATE() ocurre antes que la fecha de nacimiento birth. birth. CURDATE().5)<RIGHT(birth.net/web/comunidad/base-de-conocimiento. mysql> SELECT name.(RIGHT(CURDATE(). | Fang | Bowser | Buffy | Slim | dog | dog | dog | snake | 1990-08-27 | | 1989-08-31 | | 1989-05-13 | | 1996-04-29 | | Puffball | hamster | 1999-03-30 | +----------+---------+------------+ Advierta que la palabra clave DESC se aplica sobre la columna inmediatamente anterior (birth).(RIGHT(CURDATE(). +----------+------------+------------+------+ | name | Bowser | Buffy | Chirpy | Claws | Fang | Fluffy | Slim | birth | CURDATE() | age | 13 | 14 | 4 | 9 | 12 | 10 | 4 | 7 | 5 | +----------+------------+------------+------+ | 1989-08-31 | 2003-08-19 | | 1989-05-13 | 2003-08-19 | | 1998-09-11 | 2003-08-19 | | 1994-03-17 | 2003-08-19 | | 1990-08-27 | 2003-08-19 | | 1993-02-04 | 2003-08-19 | | 1996-04-29 | 2003-08-19 | | Puffball | 1999-03-30 | 2003-08-19 | | Whistler | 1997-12-09 | 2003-08-19 | +----------+------------+------------+------+ Para ordenar la salida por edad (age) en lugar de por nombre (name).5)) -> AS age -> FROM pet ORDER BY name. para cada mascota. +----------+------------+------------+------+ | name | Fluffy | Claws | Buffy | Fang | Bowser | Chirpy | birth | CURDATE() | age | 10 | 9 | 14 | 12 | 13 | 4 | 134 Curso (tutorial) de MySQL | Whistler | 1997-12-09 | 2003-08-19 | | Slim | 1996-04-29 | 2003-08-19 | | Puffball | 1999-03-30 | 2003-08-19 | 5 | 7 | 4 | +----------+------------+------------+------+ | 1993-02-04 | 2003-08-19 | | 1994-03-17 | 2003-08-19 | | 1989-05-13 | 2003-08-19 | | 1990-08-27 | 2003-08-19 | | 1989-08-31 | 2003-08-19 | | 1998-09-11 | 2003-08-19 | +----------+------------+------------+------+ En el ejemplo anterior. La consulta funciona bien. 19 de 63 24/07/2010 11:53 p. birth. y luego restar 1 al resultado si el dia y mes actuales son anteriores al día y mes indicados por la fecha de nacimiento. La porción de la expresión que compara los valores MM-DD devuelve 1 o 0.5)) -> AS age -> FROM pet.linuxparatodos. YEAR() trae la parte correspondiente al año de una fecha.

Se determinan los animales que han muerto verificando si el valor de la columna death es NULL. Suponga que el mes actual es abril.m. birth. +----------+------------+--------------+ | name | Fluffy | Claws | Buffy | Fang | Bowser | Chirpy | Slim | birth | MONTH(birth) | 2 | 3 | 5 | 8 | 8 | 9 | 12 | 4 | 3 | +----------+------------+--------------+ | 1993-02-04 | | 1994-03-17 | | 1989-05-13 | | 1990-08-27 | | 1989-08-31 | | 1998-09-11 | | 1996-04-29 | | Whistler | 1997-12-09 | | Puffball | 1999-03-30 | +----------+------------+--------------+ Encontrar los animales que cumplen años el mes siguiente es también sencillo.linuxparatodos. se debe buscar por animales nacidos en Enero (mes 1). ejecute una consulta que muestra tanto el valor de birth como el de MONTH(birth): mysql> SELECT name.5)<RIGHT(birth. En lugar de eso. MONTH(). MONTH(birth) FROM pet. y DAYOFMONTH().net/web/comunidad/base-de-conocimiento. +--------+------------+------------+------+ | name | birth | death | age | 5 | +--------+------------+------------+------+ | Bowser | 1989-08-31 | 1995-07-29 | +--------+------------+------------+------+ La consulta utiliza la expresión death IS NOT NULL en lugar de death <> NULL porque NULL es un valor especial. MySQL cuenta con varias funciones para extraer partes de fechas. ¿Qué tal si se quisiera saber qué animales cumplen años el próximo mes? Para esta clase de cálculos. Se puede incluso escribir la consulta de forma que funcione sin importar cual es el mes actual. como YEAR(). y se buscan los animales nacidos en Mayo (mes 5). De modo que su número es 4. No se puede simplemente sumarle 1 al número del mes (12) y buscar animales nacidos en el mes 13. Entonces. de esta forma: mysql> SELECT name..Base de Conocimiento http://www2. el año y el día son irrelevantes.5)) -> AS age -> FROM pet WHERE death IS NOT NULL ORDER BY age. Así.5)<RIGHT(birth.(RIGHT(CURDATE(). DATE_ADD() 20 de 63 24/07/2010 11:53 p. birth FROM pet WHERE MONTH(birth) = 5.(RIGHT(death. death. porque no existe tal mes. simplemente se desea extraer de la columna birth la parte correspondiente al mes.Certificación LPI 102 . no se necesitará indicar un mes en particular en la consulta. Para verla en funcionamiento. -> (YEAR(CURDATE())-YEAR(birth)) -> . +----------+------------+------------+------+ | name | Chirpy | birth | CURDATE() | age | 4 | 4 | 5 | 7 | 9 | 10 | 12 | 13 | 14 | +----------+------------+------------+------+ | 1998-09-11 | 2003-08-19 | | Puffball | 1999-03-30 | 2003-08-19 | | Whistler | 1997-12-09 | 2003-08-19 | | Slim | Claws | Fluffy | Fang | Bowser | Buffy | 1996-04-29 | 2003-08-19 | | 1994-03-17 | 2003-08-19 | | 1993-02-04 | 2003-08-19 | | 1990-08-27 | 2003-08-19 | | 1989-08-31 | 2003-08-19 | | 1989-05-13 | 2003-08-19 | +----------+------------+------------+------+ Una consulta similar se utiliza para determinar la edad a la fecha de muerte de los animales.. que no puede ser comparado mediante los operadores lógicos habituales .5)) -> AS age -> FROM pet ORDER BY age. . birth. para todos los valores no NULL calcula la diferencia entre las fechas de muerte (death) y nacimiento (birth): mysql> SELECT name. +-------+------------+ | name | birth | +-------+------------+ | Buffy | 1989-05-13 | +-------+------------+ Esto se complica ligeramente cuando el mes actual es Diciembre. -> (YEAR(death)-YEAR(birth)) . MONTH() es la función apropiada para este caso.

ya que son valores NOT NULL Coincidencias de patrones====== MySQL posee capacidades estándar para utilizar patrones así como también una forma de patrones basada en expresiones regulares extendidas similares a las que se encuentran en utilidades de UNIX. mientras que NULL significa "no hay un valor".net/web/comunidad/base-de-conocimiento.m. +----------+-----------+----------+----------+ | 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL | +----------+-----------+----------+----------+ | NULL | NULL | NULL | NULL | +----------+-----------+----------+----------+ Claramente. Use en su lugar los operadores IS NULL y IS NOT NULL: mysql> SELECT 1 IS NULL. y se extrae el mes mediante MONTH(). El valor por defecto para una operación booleana es 1. y es tratado de forma diferente a otros valores. y sed. 1 IS NOT NULL. Para comprobar esto. en lugar de eso se usan los operadores de comparación LIKE o NOT LIKE. .. 0 IS NOT NULL. ASC.. y cualquier otro valor. Advierta que MONTH devuelve un número entre 1 and 12. los valores NULL se presentan en primer lugar si se emplea ORDER BY . o <>.12) devuelve un número entre 0 y 11. pero no es así. Una manera alternativa de alcanzar el mismo resultado es sumar 1 al mes actual para obtener el mes siguiente (después de emplear la función módulo (MOD) para dejar el número de mes en 0 si resultara ser 12: mysql> SELECT name. Si se adiciona un mes al valor de CURDATE(). Puede comprobar esto fácilmente empleando IS NOT NULL como se muestra aquí: mysql> SELECT 0 IS NULL. <. por defecto. Cuando se realiza un ORDER BY. no se obtienen valores significtivos a partir de estas comparaciones. Abajo se muestran algunos ejemplos.linuxparatodos. +-----------+---------------+ | 1 IS NULL | 1 IS NOT NULL | +-----------+---------------+ | 0 | 1 | +-----------+---------------+ Observe que en MySQL.. el resultado será el mes en el que se buscarán cumpleaños: mysql> SELECT name. Para encontrar nombres que comiencen con 'b': mysql> SELECT * FROM pet WHERE name LIKE 'b%'. Y MOD(algun_valor. '' IS NOT NULL. +--------+--------+---------+------+------------+------------+ | name | owner | species | sex | birth | death | +--------+--------+---------+------+------------+------------+ 21 de 63 24/07/2010 11:53 p. La suma debe ser realizada luego de MOD(). sirve para sumar un intervalo de tiempo a una fecha dada. no se pueden emplear operadores de comparación aritmética como =. fue necesario determinar qué animales ya no estaban vivos utilizando death IS NOT NULL en lugar de death <> NULL. 1 > NULL. como verdadero. 1 < NULL. Los mencionados son efectivamente valores. Los patrones SQL permiten emplear el caracter '_' para representar coincidencia con un carácter individual y '%' En MySQL.Base de Conocimiento http://www2. en otro caso se estaría pasando de Noviembre (11) to Enero (1). Advierta que no se emplean los operadores = o <> para trabajar con patrones SQL. Un error muy común cuando se trabaja con valores NULL es asumir que es imposible insertar un valor cero o una cadena vacía en una columna definida como NOT NULL. 1 <> NULL. intente la siguiente consulta: mysql> SELECT 1 = NULL. Este tratamiento especial de NULL es debido a que. birth FROM pet -> WHERE MONTH(birth) = MOD(MONTH(CURDATE()). DESC. Conceptualmente. birth FROM pet -> WHERE MONTH(birth) = MONTH(DATE_ADD(CURDATE(). 12) + 1. es totalmente posible insertar cadenas vacias o ceros en columnas marcadas como NOT NULL..Certificación LPI 102 . los patrones SQL no son case-sensitive. 0 o NULL se intepretan como falso. en la sección anterior.. +-----------+---------------+------------+----------------+ | 0 IS NULL | 0 IS NOT NULL | '' IS NULL | '' IS NOT NULL | +-----------+---------------+------------+----------------+ | 0 | 1 | 0 | 1 | +-----------+---------------+------------+----------------+ Por lo tanto.. Trabajar con valores NULL====== El valor NULL puede resultar un poco desconcertante hasta que se comienza a utilizar. Para verificar que un valor es NULL. grep.INTERVAL 1 MONTH)). y al final si se ordena con ORDER BY . NULL significa valor inexistente o desconocido. como ser vi. Dos valores NULL son considerados iguales por la cláusula GROUP BY. '' IS NULL.

si realmente quiere forzar a que la comparación realizada por REGEXP sea case sensitive. 'a-z' detecta coincidencia con cualquier letra. utilice '^' al principio o '$' al final del patrón. use '^' para buscar coincidencia al principio del valor: mysql> SELECT * FROM pet WHERE name REGEXP '^b'. Por ejemplo.Base de Conocimiento http://www2. Por ejemplo. Una clase de carácter '[.. Para lograr que un patrón detecte coincidencias solamente al principio o al final del valor examinado. Algunas características de las expresiones regulares extendidas: '. use 5 veces el caracter patrón '_': mysql> SELECT * FROM pet WHERE name LIKE '_____'. 'x*' detecta cualquier número de caracteres 'x'. +--------+--------+---------+------+------------+------------+ | name | owner | species | sex | birth | f | m | death | | +--------+--------+---------+------+------------+------------+ | Buffy | Harold | dog | Bowser | Diane | dog | 1989-05-13 | NULL | 1989-08-31 | 1995-07-29 | +--------+--------+---------+------+------------+------------+ En MySQL 5. +----------+-------+---------+------+------------+------------+ | name | Claws | Bowser | owner | species | sex | birth | Gwen | cat | Diane | dog | m | m | death | | | +----------+-------+---------+------+------------+------------+ | 1994-03-17 | NULL | 1989-08-31 | 1995-07-29 | | Whistler | Gwen | bird | NULL | 1997-12-09 | NULL +----------+-------+---------+------+------------+------------+ Para encontrar nombres que contengan exactamente 5 caracteres. Para hacer referencia a un rango de caracteres. las consultas con LIKE expuestas anteriormente se han reescrito utilizando REGEXP.m. o 'c'.*' coincidirá con cualquier número de cualquier carác ter. 'b'. Cuando busque coincidencias con este tipo de patrones. y '. use los operadores REGEXP y NOT REGEXP (o bien los sinónimos RLIKE y NOT RLIKE). +-------+--------+---------+------+------------+-------+ | name | owner | species | sex | birth | Claws | Gwen | cat | m | f | death | +-------+--------+---------+------+------------+-------+ | 1994-03-17 | NULL | | 1989-05-13 | NULL | | Buffy | Harold | dog +-------+--------+---------+------+------------+-------+ Los otros patrones que pueden emplearse con MySQL usan expresiones regulares extendidas. | Buffy | Harold | dog | Bowser | Diane | dog | f | m | 1989-05-13 | NULL | | 1989-08-31 | 1995-07-29 | +--------+--------+---------+------+------------+------------+ Para encontrar nombres que terminen con 'fy': mysql> SELECT * FROM pet WHERE name LIKE '%fy'.Certificación LPI 102 .. mientras que '0-9' lo hace con cualquier dígito. +--------+--------+---------+------+------------+-------+ | name | owner | species | sex | birth | f | f | death | +--------+--------+---------+------+------------+-------+ | Fluffy | Harold | cat | Buffy | Harold | dog | 1993-02-04 | NULL | | 1989-05-13 | NULL | +--------+--------+---------+------+------------+-------+ Para encontrar nombres que contengan 'w': mysql> SELECT * FROM pet WHERE name LIKE '%w%'. 'abc' coincidirá con 'a'. Para hallar nombres que comiencen con 'b'. Esta consulta solamente encontrará coincidencia con 'b' minúsculas al comienzo de un nombre: 22 de 63 24/07/2010 11:53 p.0. REGEXP tendrá éxito si el patrón suministrado encuentra coincidencia en cualquier parte del valor examinado (esto difiere de LIKE en que este último solo tiene éxito si el patrón concuerda con todo el valor)..]' detecta coincidencia con cualquier caracter entre los corchetes. utilice la palabra clave BINARY para convertir a una de las cadenas en una cadena binaria. '0-9*' detecta cualquier cantidad de dígitos.linuxparatodos. '*' detecta coincidencia con cero o más apariciones de los caracteres que lo preceden. use un guión.net/web/comunidad/base-de-conocimiento..' detecta coincidencia con cualquier carácter individual. Para demostrar el funcionamiento de las expresiones regulares extendidas. .

{5}$'.Base de Conocimiento http://www2.net/web/comunidad/base-de-conocimiento.' entre ellas. Se puede usar COUNT() para hallar cuantas mascotas tiene cada propietario: mysql> SELECT owner.linuxparatodos. +----------+-------+---------+------+------------+------------+ | name | Claws | Bowser | owner | species | sex | birth | Gwen | cat | Diane | dog | m | m | death | | | +----------+-------+---------+------+------------+------------+ | 1994-03-17 | NULL | 1989-08-31 | 1995-07-29 | | Whistler | Gwen | bird | NULL | 1997-12-09 | NULL +----------+-------+---------+------+------------+------------+ Debido a que un patrón de expresión regular encuentra coincidencia sin importar el lugar del valor donde se produce. COUNT(*) FROM pet GROUP BY owner.. utilice esta consulta: mysql> SELECT * FROM pet WHERE name REGEXP 'w'. +----------+ | COUNT(*) | +----------+ | 9 | +----------+ Anteriormente se recuperaban los nombres de la gente que poseía mascotas. por ello. +-------+--------+---------+------+------------+-------+ | name | owner | species | sex | birth | Claws | Gwen | cat | m | f | death | +-------+--------+---------+------+------------+-------+ | 1994-03-17 | NULL | | 1989-05-13 | NULL | | Buffy | Harold | dog +-------+--------+---------+------+------------+-------+ La consulta anterior también se podría haber escrito empleando el operador '{n}' “repetir-n-veces”: mysql> SELECT * FROM pet WHERE name REGEXP '^. +--------+----------+ | owner | COUNT(*) | +--------+----------+ | Benny | 2 | 23 de 63 24/07/2010 11:53 p. o varios otros recuentos sobre los animales. o cuantas mascotas tiene cada propietario.. COUNT(*) cuenta el número de filas. .. +-------+--------+---------+------+------------+-------+ | name | owner | species | sex | birth | Claws | Gwen | cat | m | f | death | +-------+--------+---------+------+------------+-------+ | 1994-03-17 | NULL | | 1989-05-13 | NULL | | Buffy | Harold | dog +-------+--------+---------+------+------------+-------+ Contar registros====== Una pregunta frecuente que deben responder las bases de datos es: “¿qué tan a menudo aparece en la tabla un cierto tipo de dato?” Por ejemplo. Para hallar nombres finalizados en 'fy'. use '^' y '$' para obligar a que la coincidencia deba estar al principio y al final del nombre.Certificación LPI 102 . ya que hay un registro por mascota. en la consulta previa no es necesario colocar un comodín a cada lado del patrón para obtener coincidencia en cualquier parte del valor. +--------+--------+---------+------+------------+-------+ | name | owner | species | sex | birth | f | f | death | +--------+--------+---------+------+------------+-------+ | Fluffy | Harold | cat | Buffy | Harold | dog | 1993-02-04 | NULL | | 1989-05-13 | NULL | +--------+--------+---------+------+------------+-------+ Para encontrar nombres conteniendo una 'w'. Contar la cantidad total de animales es la misma pregunta que “¿cuántos registros hay en la tabla pet?”.m. la consulta para contar animales luce así: mysql> SELECT COUNT(*) FROM pet. emplee '$' para buscar la coincidencia en el final del nombre: mysql> SELECT * FROM pet WHERE name REGEXP 'fy$'.$'.. se podría querer averiguar la cantidad de mascotas de que se dispone... mysql> SELECT * FROM pet WHERE name REGEXP '^. como hubiera sucedido de utilizar un patrón SQL Para hallar nombres conteniendo exactamente cinco caracteres. y cinco instancias de '. mysql> SELECT * FROM pet WHERE name REGEXP BINARY '^b'.

Los siguientes ejemplos muestran diferentes operaciones: Cantidad de animales por especies: mysql> SELECT species.COUNT().linuxparatodos.MAX().net/web/comunidad/base-de-conocimiento.. COUNT(*) FROM pet -> WHERE species = 'dog' OR species = 'cat' -> GROUP BY species.. | Diane | | Gwen | | Harold | 2 | 3 | 2 | +--------+----------+ Observe el uso de GROUP BY para agrupar todos los registros de cada propietario. NULL indica "sexo desconocido") Cantidad de animales por combinación de especies y sexo: mysql> SELECT species. ERROR 1140 (42000): Mixing of GROUP columns (MIN().. Sin dicha cláusula. . +---------+----------+ | species | COUNT(*) | +---------+----------+ | bird | cat | dog | snake | | | | 2 | 2 | 3 | 1 | 1 | | hamster | +---------+----------+ Cantidad de animales por sexo: mysql> SELECT sex. sex. sex.) with no GROUP columns is illegal if there is no GROUP BY clause COUNT() y GROUP BY son útiles para presentar datos en varias formas. sex. COUNT(*) FROM pet GROUP BY sex. COUNT(*) FROM pet GROUP BY species. +------+----------+ | sex | COUNT(*) | +------+----------+ | NULL | | f | m | | 1 | 4 | 4 | +------+----------+ (En esta salida. +---------+------+----------+ | species | sex | COUNT(*) | +---------+------+----------+ | bird | bird | cat | cat | dog | dog | snake | NULL | | f | f | m | f | m | m | | | | | | | 1 | 1 | 1 | 1 | 1 | 2 | 1 | 1 | | hamster | f +---------+------+----------+ y gatos de esta manera: mysql> SELECT species. COUNT(*) FROM pet GROUP BY species.Certificación LPI 102 .. +---------+------+----------+ | species | sex | COUNT(*) | +---------+------+----------+ | cat | cat | dog | dog | f | m | f | m | | | | 1 | 1 | 1 | 2 | +---------+------+----------+ 24 de 63 24/07/2010 11:53 p..m.Base de Conocimiento http://www2. todo lo que se hubiera obtenido sería un mensaje de error: mysql> SELECT owner. sex. COUNT(*) FROM pet.

pero para calcular su edad. 1 male 5 puppies. 3 male | 25 de 63 24/07/2010 11:53 p. 2 female. O si desea la cantidad de animales de cada sexo contando solamente los que tienen sexo conocido: mysql> SELECT species.type = 'litter'. -> remark -> FROM pet. Suponga que se desea saber a qué edad tuvo sus crías cada mascota.name = event.Base de Conocimiento http://www2. La fecha en que la mascota tuvo sus crias está en la tabla event. 2 female.5)<RIGHT(birth.txt' INTO TABLE event. en inglés) podría ser así: mysql> CREATE TABLE event (name VARCHAR(20).name. -> type VARCHAR(15)..Certificación LPI 102 . Pero en un momento dado la tabla event por sí sola es insuficiente para responder las preguntas que pueden formularse. se debería poder recuperar registros de la tabla event.name AND event. 3 male 3 puppies. necesitaría otra tabla. Un campo con el tipo de evento. 3 female. a fin de poder clasificarlo.net/web/comunidad/base-de-conocimiento. se necesita su fecha de nacimiento. +---------+------+----------+ | species | sex | COUNT(*) | +---------+------+----------+ | bird | cat | cat | dog | dog | snake | f | f | m | f | m | m | | | | | | | 1 | 1 | 1 | 1 | 2 | 1 | 1 | | hamster | f +---------+------+----------+ Utilizar mas de una tabla====== La tabla pet mantiene el registro de las mascotas que se poseen. La fecha en que ocurrió el evento. Un campo con la descripción del evento.linuxparatodos. los principios son los mismos. event -> WHERE pet. . 3 female needed beak straightened broken rib 1993-06-23litter 1994-06-19litter 1997-08-03vet 1991-10-12kernnel 28/08/98 Chirpy 1999-03-21vet Bowser 1991-10-12kernnel birthday Gave him a new chew toy 1998-03-17birthday Gave him a new flea collar Whistler 1998-12-09birthday First birthday Los registros se cargan así: mysql> LOAD DATA LOCAL INFILE 'event.. sex. -> (YEAR(date)-YEAR(birth)) . +--------+------+-----------------------------+ | name | age | remark | +--------+------+-----------------------------+ | Fluffy | | Buffy | 2 | 4 kittens. Teniendo en cuenta estas consideraciones. Como se hizo con la tabla pet. Anteriormente se aprendió a calcular edades a partir de dos fechas. es más fácil realizar la carga inicial de datos si se crea un archivo de texto delimitado con tabulaciones que contenga la información a agregar: name Fluffy Buffy Buffy Slim Fang Fang Claws date 15/05/95 type litter remark 4 kittens. ¿Cómo debería ser esta tabla? Se necesita: Un campo con el nombre de la mascota para saber a quien pertenece cada evento registrado. Con base en lo que se ha aprendido a partir de las consultas efectuadas sobre la tabla pet. 3 female.m. Esto significa que la consulta requiere ambas tablas: mysql> SELECT pet. como eventos de su vida tales como visitas al veterinario o nacimiento de crías. sex. la cual está localizada en la tabla pet. la sentencia CREATE TABLE para la tabla event ("eventos". Si quisiera registrar otros datos acerca de ellas. COUNT(*) FROM pet -> WHERE sex IS NOT NULL -> GROUP BY species. 1 male | 4 | 5 puppies. remark VARCHAR(255)).5)) AS age. date DATE.(RIGHT(date.

teclado y ratón. posicionarlas. lo que hace que el código sea muy portable. Instalar y configurar X Window System Sobre X Window Systemn El sistema de ventanas X (en inglés X Window System) fue desarrollado a mediados de los años 1980 en el MIT para dotar de una interfaz gráfica a los sistemas Unix. La consulta emplea la cláusula WHERE para hacer coincidir registros de las dos tablas basándose en el valor de name. Esto es sencillo porque ambas tablas tienen una columna name. Los clientes X acceden al Xprotocol mediante el uso de una biblioteca llamada Xlib. Esto se hace anteponiendo el nombre de la tabla al nombre de la columna.sex. El hecho que exista un estándar definido para X permite que se desarrollen servidores X para distintos sistemas operativos y plataformas. p1. X es el encargado de mostrar la información gráfica y es totalmente independiente del sistema operativo. pet AS p2 -> WHERE p1. flexibilizando la salida gráfica. Por otro lado. 3 female | +--------+------+-----------------------------+ Hay varias cosas para observar en esta consulta: La cláusula FROM menciona dos tablas porque la consulta necesita traer datos de ambas Cuando se combina (también se denomina join -unión. de tal modo que un cliente X podría estar enviando un gráfico a una pantalla. se debe especificar a cuál tabla pertenece la columna al hacer referencia a ella. se puede decir que X se comporta como una terminal gráfica virtual.name. se necesita indicar qué registro de una tabla se combinará con qué registro de la otra. que evita al programador de clientes X tener que lidiar con el código binario del Xprotocol. mientras que los clientes son las aplicaciones que utilizan estos recursos para interacción con el usuario.name. e incluso tener varios instalados eligiendo el más apropiado a la hora de acceder a X. El servidor provee servicios para acceder a la pantalla. X NO ES UN gestor de ventanas. | Buffy | 5 | 3 puppies. Sin embargo. A veces es útil combinar una tabla consigo misma. .Base de Conocimiento http://www2. Instalando X Window System La forma de instalar el sistema de ventanas x window en su equipo sera de la siguiente manera: Para sistemas operativos de la familia Red Hat teclee lo siguiente: [BASH] # yum install xorg-x11 Para sistemas operativos de la familia Debian teclee lo siguiente: [BASH] # apt-get install x-window-system 26 de 63 24/07/2010 11:53 p.species -> FROM pet AS p1. necesita de uno para controlar el manejo de ventanas. a una impresora o a cualquier otro hardware sin darse cuenta. +--------+------+--------+------+---------+ | name | sex | name | sex | species | | cat | dog | dog | | | +--------+------+--------+------+---------+ | Fluffy | f | Buffy | f | Buffy | f | Claws | m | Fang | m | Bowser | m En la consulta anterior se especificaron alias para la tabla con el fin de indicar a qué instancia de la tabla pertenece cada columna referenciada. la desventaja que trae el hecho de no tener un único gestor de ventanas es que los programadores de clientes X que desean hacer uso de los recursos de los gestores de ventanas (botones. en inglés-) información desde múltiples tablas. Esto trae la ventaja de que permite al usuario instalar el administrador de ventanas que más le agrade. Debido a este esquema cliente-servidor. Dado que la columna name aparece en ambas tablas. Las bibliotecas de los gestores de ventanas se conocen como "Toolkits". o controlar eventos. X11. que consiste en una serie de bytes interpretados como comandos básicos para generar ventanas. etc) deben elegir un gestor de ventanas específico para programar y contar que el usuario tenga por los menos las bibliotecas de dicho gestor de ventanas instalado. El sistema de ventanas X distribuye el procesamiento de aplicaciones especificando enlaces cliente-servidor.sex = 'f' AND p2.sex = 'm'.linuxparatodos. el que está en uso actualmente. para formar parejas de mascotas para reproducción. los aspectos de decoración de ventana y manejos de ventanas no están definidos en esta biblioteca. p2.. Por ejemplo. La comunicación entre el cliente X y el servidor se realiza por medio de un protocolo conocido como Xprotocol (Protocolo base del sistema X Window). Este protocolo permite la interacción gráfica en red entre un usuario y una o más computadoras haciendo transparente la red para éste. si se desea comparar entre sí registros de una misma tabla. Por ejemplo. permite tener clientes X ejecutándose en un potente servidor UNIX mientras los resultados son visualizados en una PC de escritorio con cualquier otro sistema operativo funcionando.species AND p1. También trae la ventaja de que hace de X estrictamente un sistema gráfico. p1..Certificación LPI 102 . p2. No es necesario tener dos tablas diferentes para establecer una unión. las aplicaciones pueden ejecutarse remotamente desde otras máquinas. podría unir la tabla pet consigo misma para generar pares de animales macho y hembra de la misma especie: mysql> SELECT p1.net/web/comunidad/base-de-conocimiento.species = p2. De este modo mientras el servidor se ejecuta de manera local. proporcionando así el concepto de transparencia de red.sex. barras de deslizamientos. el estándar X provee sólo de un conjunto de herramientas básicas llamadas Xintrisics que permiten a los programadores de los gestores de ventanas armar sus Toolkits sobre éstas. Generalmente se refiere a la versión 11 de este protocolo.m.

etc. 2. 104. en la siguiente ruta: /etc/X11 Y se encuentra dividido en las siguientes secciones: Section "Files" Section "Modules" Section "Device" Section "Monitor" Section "Screen" Ruta o path de los archivos Carga módulos dinámicos Descripción de los dispositivos gráficos Descripción del monitor Configuración de la pantalla Section "InputDevice" Descripción de los dispositivos periféricos Section "ServerLayout"Esquema global Cada sección comienza con la instrucción Section seguido del nombre de la "sección entre comillas" las opciones. 105 o microsoft Fichero xorg.. 4. etc. etc. Define la ruta de los tipos de letras en las entradas " FontPath" Especifica la ubicación de la base de dartos de colores RGB "RgbPath" Ejemplo: Section “Files” RgbPath EndSection “/usr/lib/X11/rgb” 27 de 63 24/07/2010 11:53 p.net/web/comunidad/base-de-conocimiento. Especificaciones del mouse Las especificaciones del ratón son muy fáciles. Chip y cantidad de memoria de la tarjeta grafica El chip de la tarjeta gráfica también llamada tarjeta de vídeo.. El numero de botones: 1.linuxparatodos. basta con observar dicho ratón para saber: El tipo de conector: USB. con observar dicho teclado conocemos la información: El tipo de conector: USB o PS2 Que mapa de caracteres que usa: QWERTY.. Configurando el entorno X Window System Lo primero que tenemos que hacer es recopilar la información necesaria.Base de Conocimiento http://www2.conf La configuración del servidor gráfico xorg se encuentra en el fichero xorg. Dichas especificaciones vienen en la documentación del monitor..Certificación LPI 102 . Seccion “Files” Esta sección define la ruta de archivos necesarios para levantar el servidor X.conf. 102. 2 Especificaciones del teclado Las especificaciones del teclado al igual que las del ratón.. o bien la obtenemos desde la web del fabricante. Con esta información sabemos como hemos de configurar nuestro monitor para no dañarlo o quemarlo.m. define que controlador utilizaremos para que funcione correctamente. . y terminada con EndSection.. Serial. 3. El numero de teclas: 101.. Necesitamos tres rangos muy importantes: Frecuencia de refresco horizontal Frecuencia de refresco vertical Resolución máxima. Si tiene rueda y cuantas tiene: 1. La memoria de la tarjeta gráfica determina la resolución máxima y la profundidad de color máxima con la que el sistema puede trabajar.. AZERTY. PS2. driver. etc. para la correcta configuración del servidor gráfico Xorg La información mínima necesaria es la siguiente: Especificaciones del monitor Chip y cantidad de memoria de la tarjeta gráfica (vídeo) Especificaciones del ratón Especificaciones del teclado Especificaciones del monitor Usaremos las especificaciones del monitor para determinar la resolución y frecuencia de refresco a la que funcionara.

Section “Module” Load Load Load Load Load EndSection “dbe” “extmod” “type1” “freetype” “glx” Seccion “InputDevice” Cada sección InputDevice configura un dispositivo de entrada para el servidor X.linuxparatodos. . Seccion “Modules” La sección Module especifica que módulos cargará el servidor gráfico X.Base de Conocimiento http://www2. las opciones son las siguientes: “Mouse0” “mouse” “Protocol” “Auto” “Device” “/dev/psaux” “Emulate3Buttons” “no” “ZaxisMapping” “4 5” 28 de 63 24/07/2010 11:53 p. "mouse": soporta cuatro tipos de mouse: Serial Bus PS/2 USB Option: Especifica las opciones necesarias pertinentes al dispositivo Para un mouse. Los sistemas Xorg tienen mínimo dos secciones InputDevice: Un Mouse Un Teclado Configuracion tipica de un mouse Ejemplo: Section “InputDevice” Identifier Driver Option Option Option Option EndSection Identifier: Especifica un nombre para esta sección Driver: Especifica el controlador que debe cargar para el correcto funcionamiento del ratón. las opciones son las siguientes: Protocol: Indica el protocolo define el tipo de mouse que tenemos "ImPS/2" "ExplorerPS/2" "MouseMan" "Microsoft" "Mousesystems" "IntelliMouse" "ThinkingMouse" "ThinkingMousePS/2" "NetScrollPS/2" "NetMousePS/2" "GlidePoint" "GlidePointPS/2" "MouseManPlusPS/2" NOTA: Los mouse seriales antiguos de dos o tres botones estan normalmente soportados por el protocolo "Microsoft" o "MouseMan" Los mouse seriales con rueda los soporta el protocolo "IntelliMouse" Los mouse PS/2 los soporta el protocolo "ImPS/2" El protocolo "auto" se usa siempre que este es capaz de detectar el mouse. CorePointer: Indica que el ratón definido es el mouse principal Device: Indica la ubicación del dispositivo físico (donde se encuentra conectado).m. dichos módulos añaden funcionalidad adicional al servidor X..net/web/comunidad/base-de-conocimiento..Certificación LPI 102 .

Certificación LPI 102 .. Si dos monitores o mas son conectados en diferentes conectores en la misma tarjeta gráfica. Driver: Especifica el controlador que debe cargar para el correcto funcionamiento del teclado. /dev/input/mice (conectado al puerto USB) /dev/psaux (conectado al puerto PS/2) /dev/ttyS0 (conectado al puerto Serial 0) /dev/ttyS1 (conectado al puerto Serial 1) Emulate3Buttoms: Especifica si un mouse de dos botones se comporte como uno de tres botones. Los valores mas comunes son: "pc101" "pc102" "pc104" "pc105" "microsoft" XkbLayout: Especifica el lenguaje que usaremos. especifica el bus en el que se encuentra conectada la tarjeta gráfica. BusID: Este parámetro es opcional.Base de Conocimiento http://www2. VendorName: Este parámetro es opcional.. ZAxisMapping: Especifica que funcione la rueda que incorpora el mouse. Configuracion tipica de un teclado Ejemplo: Section “InputDevice” Identifier Driver Option Option Option Option EndSection Identifier: Especifica un nombre para esta sección. Esta opción en muy útil solamente para tarjetas con múltiples conectores. Option: Especifica las opciones necesarias pertinentes al dispositivo Para un teclado las opciones son las siguientes: CoreKeyboard: Especifica que es el teclado principal XkbModel: Especifica el tipo de teclado. Driver: Especifica el controlador que debe cargar para el correcto funcionamiento del vídeo.m. cuando se presionen ambos botones simultáneamente. Screen: Este parámetro es opcional. "es" (español). . especifica que conector del monitor en la tarjeta gráfica configura la sección Device.net/web/comunidad/base-de-conocimiento.conf secciones Device separadas y cada una de estas secciones debe tener un valor Screen diferente. Esta opción únicamente es necesaria para sistema con múltiples tarjetas gráficas.linuxparatodos. deben existir en xorg. "us" (ingles) “Generic Keyboard” “kbd” “CoreKeyboard” “XkbRules” “xorg” “XkbModel” “pc105” “XkbLayout” “es” Seccion “Device” Esta sección es la que define y configura la tarjeta gráfica (vídeo) Ejemplo: Section “Device” Identifier Driver VendorName Option Option Option EndSection Identifier: Especifica un nombre para esta sección. especifica el fabricante de la tarjeta de vídeo. “Device0” “nvidia” “NVIDIA Corporation” “RenderAccel” “dpms” “true” “true” “AllowGLXWithCompisite” 29 de 63 24/07/2010 11:53 p.

conf. 30-64) VertRefresh: Especifica la frecuencia de barrido vertical del monitor. El valor para cada conector adicional incrementa este valor en uno. expresado en kHz. De esta manera se entrelazan las configuraciones de las diferentes secciones. vinculando una tarjeta gráfica (Device) con la sección "Monitor" Ejemplo: Section “Screen” Identifier Device Monitor DefaultDepth Options Depth Modes Depth Modes Depth Modes Depth Modes Depth Modes Depth Modes EndSection Identifier: Especifica un nombre unico para esta sección Device: Especifica el nombre de una sección "Device" existente en el fichero xorg.conf Observación: las entradas "Device y Monitor" tienen que tener el mismo valor que la entrada "Identifier" de las secciones "Device" y "Monitor". Puede existir varias secciones "Monitor" en el archivo xorg. Puede ser una frecuencia fija (30. expresado en Hz. se usa para activar el estado de ahorro de energía del monitor.. Seccion “Monitor” Esta sección es la que define y configura los parámetro del monitor Ejemplo: Section “Monitor” Identifier Option HorizSync VertRefresh EndSection Identifier: Especifica un nombre para esta sección. 1 “1600x1050” ”1200x1024” ”1024x768” ”800x600” “640X400” 4 “1600x1050” ”1200x1024” ”1024x768” ”800x600” “640X400” 8 “1600x1050” ”1200x1024” ”1024x768” ”800x600” “640X400” 15 “1600x1050” ”1200x1024” ”1024x768” ”800x600” “640X400” 16 “1600x1050” ”1200x1024” ”1024x768” ”800x600” “640X400” 24 “1600x1050” ”1200x1024” ”1024x768” ”800x600” “640X400” “Default Screen” “nvidia geforce mx400” “AcerX203W” 24 “AddARGBGLXvVisuals” “True” Subseccion “Display” Subseccion “Display” Subseccion “Display” Subseccion “Display” Subseccion “Display” Subseccion “Display” 30 de 63 24/07/2010 11:53 p. .5. Option "nombre_opción": Este parámetro es opcional. SubSection "Display": Especifica los modos disponibles de la pantalla para una profundidad de color en particular.Base de Conocimiento http://www2. HorizSync: Especifica la frecuencia de barrido horizontal del monitor. DefaultDepth: Especifica la profundidad de color por defecto en bits.Certificación LPI 102 . Reemplace "nombre_opción" con una de las opciones listadas para esta sección en la pagina man de xorg.conf Monitor: Especifica el nombre único de una sección "Monitor" existente en fichero xorg. esto es causado porque disponemos de dos o mas monitores conectados al ordenador..net/web/comunidad/base-de-conocimiento.m. un rango (30-110). Los valores para la entrada Screen debe ser enteros.conf Una de las opciones mas habituales es "dpms" (Display Power Management Signalling). El primer conector de la tarjeta de vídeo tiene el valor 0.linuxparatodos. “Acer X203W” “DPMS” 30-83 “55-75” Seccion “Screen” Esta sección es la que va a definir la pantalla. los valores son iguales a la opción HorizSync. o varios rangos (15-25. cada una con diferente identificación (Identifier). 35.8). multiples frecuencias fijas (30.5).

Pueden estar presente más de una opción "Screen" “Default Layout” “Default Screen” “Generic Layout” “Configured Mouse” Tareas Administrativas Administrando cuentas de usuario. los valores posibles son: 1. de las cuales cada una corresponde a un usuario. el servidor web o el de correo. Puede especificarse una sola resolución "1680x1050" (si sabemos que nuestro monitor la soporta).m.linuxparatodos. Section “ServerLayout” Identifier Screen InputDevice InputDevice EndSection Identifier: Especifica un nombre para esta sección. de las cuales cada una corresponde a un usuario. estos parametros son: x *o! La letra 'x' indica que el password del usuario se encuentra cifrado y ligado directamente al fichero /etc/shadow Los parametros * o ! indican que el usuario no podra loearse en el sistema. Cada una de estas lineas se encuentra formada por 9 campos los cuales se encuentran separados por el operador 31 de 63 24/07/2010 11:53 p. Observación: Una sección "Screen" puede tener múltiples subsecciones "Display". esta opcion es comunmente asignada a usuarios que hacen uso de servicios como FTP o correo vacioSi se encontrace este campo vacio significa entonces que el usuario no tiene asignada ninguna contraseña Un ejemplo del fichero /etc/passwd se muestra a continuacion: Usuario. dichos datos se encuentran organizados linea a linea. eliminacion..conf Seccion “ServerLayaout” Esta sección es la que vincula los dispositivos de entrada y salida que controla el servidor xorg. Reemplace "nombre de opción" con una opción valida listada para esta sección en la pagina man de xorg. Tambien puede encontrar en este fichero algunos servicios del sistema como son . Como mínimo. 4. Screen: Especifica el nombre de la sección "Screen" a ser usado por el servidor xorg. Por defecto se usa la primera en la lista.-Interprete de comandos asignado al usuario Fichero /etc/shadow Este este fichero almacena las contraseñas cifradas de cada usuario del sistema.-Identificador que indica a cual grupo pertenece el usuario Informacion Adicional. Nota: Dependiendo de nuestro monitor y tarjeta grafica (si son de gama "media baja" o inferior). pero debe existir al menos una para la profundidad de color especificada en la entrada "DefaultDepth" Depth: Especifica la profundidad de color de la subsección. 8. estos datos se encuentran organizados linea a linea. Comenzaremos hablando de los ficheros directamente relacionados con las cuentas de los usuarios y la funcion que estos desempeñan. grupos y ficheros del sistema En este capitulo abodaremos temas como son la creacion.-Contraseña asignada al usuario UID.-Directorio de trabajo del usuario Shell. puede darse los siguientes casos: * A mayor profundidad de color "24 bits" obtenemos menor resolución "800x600" * A menor profundidad de color "8 bits" obtenemos mayor resolución "1680x1050" Option "nombre de opción": Especifica parámetros extras para la sección. Cada una de estas lineas se encuentra formada por 7 campos los cuales se encuentran separadpos por el operador : Los campos de los cuales hablamos son conformados por los siguientes parametros UserName X UserID GroupID UserInfo HomeDir Shell 1 23 4 5 6 7 El segundo campo es comunmente conocido como el campo de password y se encuentra directamente ligado a la contraseña del usuario. y asi hasta la ultima resolución que tengamos listada.Base de Conocimiento http://www2.Certificación LPI 102 . o un listado de estas: "1680x1050" "1280x1024" "1024x768" "800x600" "640x480". y por ultimo estudiaremos la manera de cambiar el grupo al cual pertenece un usuario y anexarlo a otro. suspencion y cambio en las cuentas de usuario del sistema. tambien aprenderemos a crear y eliminar grupos.-Nombre de la cuenta con la que el usuario se logeara para acceder al sistema Password. Este campo puede adoptar 3 parametros posibles.net/web/comunidad/base-de-conocimiento. Fichero /etc/passwd Este fichero almancena datos sobre las cuentas de usuario del sistema.. esta sección debe especificar un dispositivo de salida (monitor) y al menos dos de entrada ( un teclado y un ratón) En Particular esta sección junta todos los identificadores "Identifier" de cada sección. 15. 16 y 24 bits Modes: Especifica las resoluciones que podremos visualizar según nuestro monitor. si no se usa la siguiente.-Informacion detallada del usuario Home del Usuario. .-Identificador del Usuario GID. siempre que este soportada por nuestro monitor.

Fecha de caducidad de la cuenta.m. : Estos 9 campos se encuentran conformados por los siguientes parametros CampoDescripcion 1 2 3 4 5 6 7 8 9 Login del Usuario Contraseña cifrada Días transcurridos desde el 1/ene/1970 hasta la fecha en que la contraseña fue cambiada por última vez. si es que no se cambio. (-1 significa nunca). Número de días tras los cuales hay que cambiar la contraseña. campo 8 de /etc/shadow Identificador o uid que sera asignado al usuario. antes de que la cuenta sea deshabilitada El nombre del grupo o gid asignado a un nuevo usuario Grupo secundario al cual puede ser asignado un usuario Ejemplos -G a) -G desarrolloJava b) -G ventasMedicas c) -G soportePHP -u -m -s usermod El comando usermod modifica los parametros de acceso asignados a una cuenta existente del sistema. las contraseñas cifradas de los usuarios son asignadas al fichero /etc/shadow. A partir de este dato se obtiene la fecha de expiración de la contraseña.. campo 6 de /etc/passwd Cambia o establece la fecha de expiración de la cuenta.Certificación LPI 102 .]] [-l login_name] [-p passwd] [-s shell] [-u uid [ -o]] [-L|-U] OpcionesDescripcion -c -d -e Añade o modifica el comentario. Ejemplos -e a) -e 20100506 b) -e 20081224 c) -e 20090214 -f -g Numero de dias antes de que la contraseña expire. Interperete de comandos SHELL que sera asignado al usuario. Debe especificarse en el siguiente formato Año-Mes-Dia. . Número de días antes de la expiración de la contraseña en que se le avisará al usuario al inicio de la sesión Días después de la expiración en que la contraseña se inhabilitara. por defecto Linux asignara UID's a partir del numero 500 Copia el contenido de la carpeta /etc/skel a la carpeta del usuario recien creado..net/web/comunidad/base-de-conocimiento.Base de Conocimiento http://www2.linuxparatodos. Cuando una nueva cuenta de usuario es creada (usando el comando useradd) por default toma la plantilla (opcion -m) /etc/skel para generar el entorno de trabajo del usuario. campo 5 de /etc/passwd Modifica el directorio de trabajo o home del usuario. Número de días que deben transcurrir hasta que la contraseña se pueda volver a cambiar. Se expresa en días transcurridos desde el 1/Enero/1970 Reservado para uso futuro Vacio= Sin password * o ! = No permite logeo en sistema Nunca vacio 0= Siempre permite cambio Normalmente son 10000 dias Vacio=Sin advertencia vacio=Nunca inactivo vacio=Nunca sera deshabilitado Comentario Administración de cuentas de usuario Las cuentas de usuario estan localizadas en el fichero /etc/passwd.. useradd Para generar una cuenta de usuario haremos uso del comando useradd que a su vez debera seguir la siguiente estructura : [BASH]# useradd [opciones] nombreDelUsuario OpcionesDescripcion -b -d El nombre de usuario sera añadido a la ruta donde sera ubicada su carpeta de trabajo El nombre de usuario no sera añadido a la ruta donde sera ubicada su carpeta de trabajo Se usa para especificar la fecha en la cual expira la cuenta.. formato AAAA-MM-DD.. Sintaxis: [BASH]# useradd nombreDelUsuario [-c comment] [-d home_dir [ -m]] [-e expire_date] [-f inactive_time] [-g initial_group] [-G group[. entre las opciones disponibles estan: 32 de 63 24/07/2010 11:53 p.

asi que hay que usarla solo en casos muy extremos..net/web/comunidad/base-de-conocimiento. cuenta. directorios y archivos del usuario.. La utilización del comando passwd con los parámetros usuario y contraseña sólo es posible para root. .linuxparatodos. : _ . no permitiendolé que ingrese al sistema. entonces root puede cambiar la contraseña para ese usuario. su shell por defecto que ahora sera Korn shell y su grupo principal de usuario quedó establecido al GID 505 y todo esto se aplicó al usuario ’sego’ que como se observa debe ser el último argumento del comando. -g -G -i -L -s -u -U Cambia el número de grupo principal del usuario (GID).+ ! $ % & / | ? { [ ( ) ] } Sintaxis: [BASH]# passwd [Opciones] nombreDelUsuario Opciones: OpcionesDescripcion -e -l -u -n -x -f -s chage Se usa para listar o cambiar el tiempo en el que expira una contraseña de usuario Sintaxis: [BASH]# change [opciones] nombreDelUsuario Opciones Esta opcion forzara al usuario a cambiar su contraseña en su siguiente login al sistema Con esta opcion. No borra ni cambia nada del usuario. separados por comas. además de que podría causar inestabilidad en el sistema. el administrador del sistema puede deshabilitar la cuenta de algun usuario especifico Mínimo número de días antes de poder cambiar Máximo número de días de validez. Desbloquea una cuenta previamente bloqueada con la opción -L. Si se utiliza sólo el parámetro usuario cuando se hace uso de este comando. campo 1 de /etc/passwd y de /etc/shadow Bloque la cuenta del usuario. Cambia el login o nombre del usuario. entonces: [BASH]# usermod -d /home/carlita carlita Otros cambios o modificaciones en la misma cuenta: [BASH]# usermod -c "supervisor de area" -s /bin/ksh -g 505 carlita Lo anterior modifica el comentario de la cuenta. Es una opción muy radical. Cambia el shell por defecto del usuario cuando ingrese al sistema. . elimina todo lo del usuario. Los caracteres admitidos para las contraseñas son los siguientes: # * . solo lo deshabilita. Con el comando passwd primero se exigirá la contraseña vigente y luego se pedirá dos veces la nueva para prevenir cualquier error. luego pide cambiar Cambia el nombre completo del usuario Cambia el SHELL del usuario 33 de 63 24/07/2010 11:53 p. pero además lo hace sin -f importar si el usuario esta actualmente en el sistema trabajando. .Base de Conocimiento http://www2. Si quiseramos cambiar el nombre de usuario de ’carita’ a ’carlita’: [BASH]# usermod -l carlita carita Casi seguro también cambiará el nombre del directorio de inicio o HOME en /home. campo 4 de /etc/passwd Establece otros grupos a los que puede pertenecer el usuario.m. el administrador del sistema puede inhabilitar la cuenta de algun usuario especifico Con esta opcion. Cuando se emplea el comando passwd sin opciones. passwd El comando passwd se utiliza para cambiar contraseñas. userdel El comando userdel remueve un usuario del sistema. Sintaxis: [BASH]# userdel -r nombreDelUsuario OpcionesDescripcion -r Este parametro indica al sistema que sera eliminada la carpeta de trabajo del usuario. pero si no fuera así. se cambia la contraseña del usuario que lo invocó. Cambia el UID del usuario. Si se usara el comando userdel sin el parametro -r solo eliminara al usuario del sistema La opción -f es igual que la opción -r.Certificación LPI 102 .

txt [BASH]# chmod 0600 /root/batch-nuevos-usuarios. Algunos de los aspectos que controlan estas variables son: Número máximo de días que una contraseña es válida PASS_MAX_DAYS El número mínimo de caracteres en la contraseña PASS_MIN_LEN Valor mínimo para usuarios normales cuando se usa useradd UID_MIN El valor umask por defecto UMASK Si el comando useradd debe crear el directorio home por defecto CREATE_HOME Basta con leer este archivo para conocer el resto de las variables que son autodescriptivas y ajustarlas al gusto.txt Fichero /etc/login. (muy util para hacer un reset de password masivo). apagados y logeos finger -l usuario Muestra los usuarios logeados local o remotamente en el sistema Administración de grupos groupadd 34 de 63 24/07/2010 11:53 p. el usuario deberá de modificarla Modifica el número mínimo de días entre cambio de contraseña Modifica el número de días que se avisará al usuario antes de cambiar la contraseña -E fecha Modifica la fecha en que la cuenta del usuario expirará y será bloqueada newusers La mayoría de las veces que vamos a crear un nuevo usuario utilizamos el comando useradd pero cuando tenemos una red de muchos usuarios o tenemos que crear o actualizar multiples usuarios en un servidor se hace útil poderlo hacer desde una lista. OpcionesDescripcion -d dias -l dias -M dias -m dias -W dias Cuenta el número de días (desde 01-01-1970) transcurridos desde que cambió la contraseña por última vez Modifica cuantos días puede permanecer una cuenta con una contraseña expirada antes de ser bloqueada Modifica el número máximo de días durante los que es válida la contraseña de usuario. El comando newusers toma un archivo de texto plano que debe tener el mismo formato que el de el archivo /etc/passwd de nuestro sistema. igualmente pueden agregar los usuarios que quieran actualizar.Certificación LPI 102 . recuerden que debe tener el mismo formato que /etc/passwd: usuario1:password:1001:513:Cuenta Mercadeo:/home/usuario1:/bin/bash usuario2:password:1002:513:Usuario Ventas:/home/usuario2:/bin/bash pepe:password:1110:501:Cuenta Invitado:/home/guest:/bin/menu Agreguen cuantos usuarios quieran. Para hacer uso de este comando haremos lo siguiente: Primero creamos el archivo de texto con los usuarios: [BASH]# touch /root/batch-nuevos-usuarios. Pasados los días. groups [usuario]Muestra todos los grupos al cual pertenece el usuario id -nu [usuario] Muestra el nombre del usuario logeado echo $user id -u users who w lastlog Muestra el usuario actual Muestra el ID del usuario actual Muestra los usuarios logeados localmente en el sistema Muestra los usuarios logeados localmente en el sistema Muestra los usuarios logeados localmente en el sistema Muestra los ultimos accesos al sistema.txt Y ahora agregamos la lista de usuarios.defs En el archivo de configuración /etc/login. La lista incluye inicios.net/web/comunidad/base-de-conocimiento. para esto podemos utilizar el comando newusers..linuxparatodos. así mismo si no existe la carpeta /home/nobreDelUsuario la creará por nosotros. Ahora editamos el archivo [BASH]# vim /root/batch-nuevos-usuarios.Base de Conocimiento http://www2. . Recúerdese que se usaran principalmente al momento de crear o modificar usuarios con los comandos useradd y usermod..txt Es importante que este archivo sólo pueda ser leido por root (por eso el chmod 0600) ya que las claves en este archivo estarán en texto plano. Al ejecutar el comando y darle como parámetro la ruta al archivo de texto creará los usuarios no existentes y actualizará los que ya existen. Por último ejecutamos el comando: [BASH]# newusers /root/batch-nuevos-usuarios.defs están definidas las variables que controlan los aspectos de la creación de usuarios y de los campos de shadow usadas por defecto.m. Otros comandos de inicio de sesión del usuario Opciones Descripcion id -ng [usuario] Muestra el grupo actual al cual pertenece el usuario.

si hubiera se mostraría un ‘hash’ encriptado. Sintaxis: [BASH]# groupmod [-g nuevo-gid] [-n nuevoNombre] nombreDelGrupo Opciones: OpcionesDescripcion -g -n groupdel El comando groupdel elimina un grupo del sistema Sintaxis: [BASH]# groupdel nombreDelGrupo gpasswd Permite administrar los grupos. grupoSe borra permanentemente a un usuario del grupo -r grupo grpck El comando grpck revisa un grupo de sistema Sintaxis: [BASH]# grpck nombreDelGrupo Elimina la contraseña del grupo Fichero /etc/group Este archivo guarda la relación de los grupos a los que pertenecen los usuarios del sistema. NOTA: Las contraseñas de grupo solo son necesarias su un usuario que no es miembro del mismo quisiera anexarse al grupo y convertirlo en uno de sus grupos efectivos.Certificación LPI 102 .se puede utilizar para añadir y eliminar usuarios. que no existe. señalar un administrador e indicar una contrasela para el grupo.net/web/comunidad/base-de-conocimiento.. este numero no puede ser uno negativo Define un grupo del sistema. -oAsigna un ID existente a un grupo groupmod El comando groupmod permite modificar el nombre o GID de un grupo. .m. contiene una línea para cada usuario con tres o cuatro campos por usuario: Ejemplo: El campo 1 indica el usuario. Un grupo del sistema es aquel que tiene un numero de identidad (GID) de grupo por debajo del numero 500 Este particular GID es utilizado por los servicios del sistema como un servidor web o de correo| -f Forza al sistema a crear el grupo aunque este ya exista. 35 de 63 24/07/2010 11:53 p..Base de Conocimiento http://www2. El campo 2 ‘x’ indica la contraseña del grupo. grupoAñade miembros a un grupo -r grupo Elimina la contraseña del grupo Opciones para el administrador del grupo Opciones Descripcion -a usuario...linuxparatodos. grupo Señala como administrador de un grupo particular a un usuario del grupo -M usuario. grupoSe añade permanentemente un usuario a un grupo -d usuario... para ello debera proporcioonar la contraseña del grupo Sintaxis: [BASH]# gpasswd opciones [nombreDelGrupo] Opciones para el administrador del sistema Opciones -R Descripcion Hace que el grupo sea reservado para miembros Esta opcion cambia el GID de un grupo existente en el sistema Esta opcion sirve para cambiar el nombre de un grupo existente por otro -A usuario. Para dar de alta grupos de trabajo en el sistema usaremos el comando groupadd el cual debera ser aplicado segun la siguiente sintaxis: [BASH]# groupadd [opciones] nombreDelGrupo Opciones: OpcionesDescripcion -g -r Define mediante un valor numerico el ID del grupo.

Fichero /etc/gshadow Este fichero almacena las contraseñas cifradas de los grupos. grpconv y grpunconv Estos comandos funcionan de la misma manera que pwconv y pwunconv..linuxparatodos. programas o scripts. Es decir. cada minuto. haciendo sumamente difícil que cualquier usuario que no sea root lo lea.net/web/comunidad/base-de-conocimiento.1 root root 1106 2007-07-08 01:07 /etc/passwd -r-------. . de semana o mes).los administradores de cada grupo y los usuarios que pertenecen a cada grupo. solo que aplicados a los ficheros /etc/group /etc/gshadow Automatizar tareas de administración del sistema mediante la programación de scripts de trabajo Sobre CRON Cron es un administrador o planificador de tareas de segundo plano. si se añade el usuario ’paola’ también se crea el /etc/group el grupo ’paola’. El campo 3 es el Group ID (GID) o identificación del grupo. [BASH]# more /etc/shadow root:ghy675gjuXCc12r5gt78uuu6R:10568:0:99999:7:7:-1:: hack:rfgf886DG778sDFFDRRu78asd:10568:0:-1:9:-1:-1:: [BASH]#pwunconv [BASH]# more /etc/passwd root:ghy675gjuXCc12r5gt78uuu6R:0:0:root:/root:/bin/bash sergio:rfgf886DG778sDFFDRRu78asd:501:500:Hack Beastie:/home/hack:/bin/bash En cualquier momento es posible reactivar la protección de shadow: [BASH]# pwconv [BASH]# ls -l /etc/passwd /etc/shadow -rw-r--r-. Las horas a las que deben ejecutarse dichos procesos se indican en el fichero crontab correspondiente al usuario.1 root root 699 2009-07-08 01:07 /etc/shadow Se vuelve a crear el archivo shadow. Los procesos que deben ejecutarse y la hora en la que deben hacerlo se especifican en el archivo crontab correspondiente. que (se insiste) oculta efectivamente el ‘hash’ cifrado de la contraseña de /etc/passwd Pero si por alguna bizarra y extraña situación de compatibilidad se requiriera tener las contraseñas cifradas en el mismo archivo de /etc/passwd se usaría el comando pwunconv: [BASH]# more /etc/passwd root:x:0:0:root:/root:/bin/bash hack:x:501:500:Hack Beastie:/home/hack:/bin/bash La 'x' en el campo 2 indica que se hace uso de /etc/shadow como mencionamos anteriormente..m. o una exportacion semanal de la base de datos. una copia de seguridad diaria. pwconv y pwunconv El comportamiento por defecto de todas las distros modernas de GNU/Linux es activar la protección extendida del archivo /etc/shadow. Por ejemplo podemos instruirlo para ejecutar un script cada cinco minutos. contiene una linea para cada grupo con cuatros campos por grupo: Ejemplo: NombreDelGrupoContraseña o !listaDeAdministradoreslistaDeMiembros Cada uno de estos campos separado por el identificador : La lista de administradores y miembros de un grupo deben estar separados mediante el identificador . En este modulo veremos como: 36 de 63 24/07/2010 11:53 p. a intervalos regulares programados.Certificación LPI 102 . con el mismo nombre del usuario. Es un demonio que ejecuta procesos. además nótese los permisos tan restrictivos (400) que tiene este archivo.Base de Conocimiento http://www2. cron es un administrador regular de procesos en segundo plano (demonio) que ejecuta procesos o scripts a intervalos regulares (por ejemplo. El campo 4 es opcional e indica la lista de grupos a los que pertenece el usuario Actualmente al crear al usuario con useradd se crea también automáticamente su grupo principal de trabajo GID. En el sistema operativo Unix.

linuxparatodos." >> /var/log/mi-cron. escribiremos lo siguiente: [BASH]# crontab -e SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # m h dom mon dow command 0 19 * * * echo "Son las 19h. Por ejemplo para programar una tarea que a las 19h genere un mensaje en un log. el mes y el dia de la semana. Estas variables no son estrictamente necesarias. Concretamente utilizaremos la orden crontab -e [BASH]# crontab -e Utilizaremos siempre esta orden en lugar de ir a buscar el fichero con un editor de texto ya que asi nos garantizamos que estamos editando un fichero auxiliar en exclusiva. por ejemplo: SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin/:/bin/:/usr/sbin:/usr/bin MAILITO=sistemas@factor. solo son para ajustarlas si queremos. el dia del mes. separandolos por comas: # m h dom mon dow command 37 de 63 24/07/2010 11:53 p.Certificación LPI 102 .Base de Conocimiento http://www2. Probablemente crontab nos presentara un fichero vacio o bien con la siguiente lınea de cabeceras: # m h dom mon dow command Esta linea simplemente nos servira de guion para escribir debajo de ella nuestras tareas. es decir: # minutos horas diaDelMes mes1-12 diaDeLaSemana1-7 comandoAEjecutar No obstante añadiremos unas lineas al principio. utilizaremos siempre la utilidad crontab. pero nunca editaremos los ficheros de cron directamente. MAILTO Definiremos a que correo iran los avisos en caso de algo vaya mal al ejecutar una de las tareas. . semanales y mensuales Añadir tareas al crontab del sistema El crontab de root El fichero crontab de root se guarda en /var/spool/cron/crontabs/root.log Si quisieramos que se ejecutase a las 19:30h pero solo los lunes pondriamos: # m h dom mon dow command 30 19 * * 1 echo "Son las 19:30h. Para editar el crontab (fichero donde se guardan las tareas programadas) de root. Como se puede ver nos esta indicando el formato. diarias.log Y si quisieramos que se ejecute a las 19:30 del dia 1 de diciembre # m h dom mon dow command 30 19 1 12 * echo "Son las 19:30h. primero los minutos.log ¿Que pasa si queremos que se ejecute a las 19 y 19:30? Se puede poner mas de un valor en cada campo. dandole algunas variables de entorno de nuestro interes..net/web/comunidad/base-de-conocimiento.. del 1 de diciembre.com # m h dom mon dow command Las variables: SHELL Indicaremos con que interprete deberemos ejecutar los comandos PATH Estableceremos el camino de busqueda de comandos que debera seguir el sistema. Programando tareas Para programar una tarea utilizaremos la orden crontab -e. Listando el crontab Para obtener un listado de las tareas programadas de root.m. y evitaremos problemas de concurrencia con otros administradores." >> /var/log/mi-cron. ejecute lo siguiente: [BASH]# crontab -l Evidentemente no saldran tareas si todavia no hemos programado ninguna." >> /var/log/mi-cron. del lunes. Añadir tareas al crontab de root Añadir tareas enlazadas cada hora. luego la hora.

daily ) test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron. weekly y monthly Los sistemas UNIX modernos vienen con unos directorios predefinidos para que cron los lee y ejecute lo que hay dentro en los intervalos que su nombre indica: /etc/cron.30 19 * * * echo "Son las 19 o las 19:30h.hourly test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.Base de Conocimiento http://www2. y lo enlazamos en /etc/cron.d/ #LSBNAMES=’-l’ # Whether to read the system’s default environment files (if present) # This will make cron set a proper charset for the mails it sends # Comment this or set it to something other than ’yes’ to prevent # cron from reading it. These files also have username fields.25” pero hay una abreviatura. Es igual que el crontab de root.linuxparatodos.monthly Dichos directorios se suelen utilizar para enlazar guiones que deban ser llamados en el intervalo correspondiente al directorio." >> /var/log/mi-cron. set a higher log level to audit cron’s work EXTRA_OPTS="-L 2" De esta forma conseguiremos que cron vaya dejando un rastro en /var/log/syslog que podremos observar. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # m h dom mon dow user 17 * 25 6 47 6 52 6 # * * * * * * * * 7 1 * * root root root root command cd / && run-parts --report /etc/cron.hourly /etc/cron.sh [BASH]# ln -s /root/bin/miScript.m.d.daily /etc/cron. Por ejemplo. pero no es recomendable.sh /etc/cron. y cron hara una suplantacion previa a la ejecucion. salvo que en este podemos especificar con que usuario se ejecuta cada cosa. Este crontab se deja para que lo maneje la distribucion y sus programas.Certificación LPI 102 . le damos permisos de ejecucion. Si ponemos tareas en dicho archivo seran ejecutadas igualmente. cron lo ejecutar ́ cada hora: [BASH]# chmod +x /root/bin/miScript. si creamos un guion de bash y lo guardamos en /root/bin.. 0.net/web/comunidad/base-de-conocimiento.20.15. por ejemplo. . sin argumentos. No estoy seguro. Para activarlo tendremos que editar el fichero /etc/default/cron y eliminar la almohadilla (#) del principio de la linea EXTRA_OPTS="-L 2" dejando el fichero asi: # cat /etc/default/cron # Cron configuration options # Uncomment this option for LSB name support in /etc/cron.log Directorios predefinidos: hourly.weekly /etc/cron.hourly/ Crontab del sistema El archivo de cron de sistema es /etc/crontab.weekly ) test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.log ¿Y para ejecutarlo cada 5 minutos? Se podria poner “5.monthly ) Log de cron En Debian 5 Lenny el log de cron viene desactivado por defecto." >> /var/log/mi-cron. asi “*/min” # m h dom mon dow command */5 * * * * echo "Han pasado cinco minutos. daily. that none of the other crontabs do. see cron(8) # For example. Un /etc/crontab tıpico es: [BASH]# cat /etc/crontab # # # # # etc/crontab: system-wide crontab Unlike any other crontab you don’t have to run the ‘crontab’ command to install the new version when you edit this file and files in /etc/cron.. asi: [BASH]# tail -f /var/log/syslog 38 de 63 24/07/2010 11:53 p.hourly. READ_ENV="yes" # Extra options for cron.10.

Linux mantiene su propio reloj debido a que leer el reloj de hardware constantemente es lento y complicado. en español.Certificación LPI 102 . para ello teclee lo siguiente: [BASH]# hwclock --utc --hctosys Comando hwclock Hwclock es una herramienta que nos permite: Acceder al Reloj del Hardware Mostrar la hora actual Poner el Reloj del Hardware a una hora especificada Poner el Reloj del Hardware a la Hora del Sistema Poner el Tiempo del Sistema desde el Reloj del Hardware.Base de Conocimiento http://www2. El kernel Linux mantiene la fecha y hora de manera independiente al reloj de hardware.m. 39 de 63 24/07/2010 11:53 p. o UTC. Administrando la hora del equipo En este capitulo aprenderemos a configuar la hora del sistema mediante el uso de servidores de tiempo NTP.. también puede ejecutar hwclock periódicamente para insertar o quitar tiempo del Reloj del Hardware para compensar desviaciones sistemáticas en las que el reloj gana o pierde tiempo consistentemente a una cierta velocidad si se deja solo. es el tiempo de la zona horaria de referencia respecto a la cual se calculan todas las otras zonas del mundo Ajuste de la hora en Linux El procedimiento es relativamente simple: 1) El primero consiste en ajustar el reloj de Hardware a traves de la configuracion del BIOS 2) El segundo consiste en establecer la variable de entorno TZ a la zona horaria adecuada utilizando el siguiente comando [BASH]# tzselect Alternativa al paso 2 Utilice el programa tzconfig que establecerá un enlace simbólico de la siguiente forma: [BASH]# ln -s /usr/share/zoneinfo/Mexico/General /etc/localtime 3) El tercero consiste en decirle a Linux que nuestro reloj de hardware y de sistema correb bajo UTC. Luego. Sintaxis: [BASH]# hwclock [opciones] Opciones: OpcionesDescripcion --show --set --hctosys Lee el reloj del hardware y muestra la hora en la salida estándar. La simplicidad de este modo de trabajar proporciona alta confiabilidad y facilita actualizar la información de la zona horaria. estas herramientas son: hwclockControla el reloj de hardware date Controla el reloj del sistema Ajustes de tiempo y de las zonas horarias Hay 2 formas estándar para ajustar el reloj de un equipo localtimePor ubicacion geografica UTC El tiempo universal coordinado. El reloj de hardware puede estar en formato de hora local u hora universal. Cada proceso realiza las conversiones de zona horaria de manera independiente.net/web/comunidad/base-de-conocimiento. Reloj de tiempo bajo linux Linux utiliza dos relojes: Reloj de Hardware Reloj de Software Un equipo personal tiene un reloj de hardware alimentado por una batería. Durante el inicio de un sistema Linux. Programas para controlar el reloj del sistema Bajo linux existen 2 herramientas principales que son implementadas para administrar el reloj hardware y el de software del sistema. porque de esta manera no será necesario modificar la hora del reloj cuando el horario de verano empiece o finalice. Ésta es una buena opción para poner en uno de los guiones de arranque del sistema. ambos relojes trabajan independientemente.. .linuxparatodos. Usualmente es mejor que el reloj de hardware mantenga la hora universal. Esa batería asegura que el reloj continúe trabajando aún cuando la computadora se encuentre sin suministro eléctrico. también conocido como tiempo civil. el kernel configura su propio reloj de software accediendo a la fecha y hora mantenida por el reloj de hardware. El reloj del kernel siempre muestra la hora universal. El reloj de hardware puede ser modificado (o definido) desde la pantalla de configuración de la BIOS o desde cualquier sistema operativo. Pone el reloj del hardware a la hora dada por la opción --date Pone el tiempo del sistema a partir del reloj del hardware. por lo que no necesita conocer como utilizar usos horarios.

..) M) Servicios Esenciales del Sistema Mail Transfer Agent Basico Protocolo SMTP Simple Mail Transfer Protocol (SMTP) Protocolo Simple de Transferencia de Correo.m.53) Representacion de la fecha local (mm/dd/yy) Representacion de la hora local (%H:%M:%S) Los ultimos dos digitos del año (00. --adjust --utc Añade o sustrae tiempo del reloj del hardware para tener en cuenta el desvío sistemático desde la última vez que el reloj se puso o se ajustó. El número va dirigido a un procesado automático de la respuesta por autómata.. La comunicación entre el cliente y el servidor consiste enteramente en líneas de texto compuestas por caracteres ASCII. a diferencia de %d este suprime el espacio en blanco Lo mismo que %Y-%m-%d Lo mismo que %b Hora (00.23) Hora (01.60).99) Año (1970.999999999) Indicacion de PM o AM en mayusculas Indicacion de pm o am en minusculas Tiempo en 12 horas ( hh:mm:ss AP Tiempo en 24 horas ( hh:mm ) Segundos desde `00:00:00 1970-01-01 UTC' (una extesion de GNU ) Segundos (00.Certificación LPI 102 . mientras que el texto permite que un humano interprete la respuesta.7) el dia 1 representa el lunes Número de semana del año con el domingo como primer día de la semana (00. --systohcPone el reloj del hardware a la hora del sistema actual.31.31) Fecha (mm/dd/yy) Dia del mes (1... Indica que el reloj del hardware se mantiene en el tiempo universal coordinado (UTC).Sat) Localización del nombre completo del día de la semana (Sunday.Base de Conocimiento http://www2. En el protocolo SMTP todas las órdenes.12) Dia del año (001.... Las respuestas del servidor constan de un código numérico de tres digitos.53) Dia de la samana (0.. Protocolo de red basado en texto utilizado para el intercambio de mensajes de correo electrónico entre computadoras u otros dispositivos SMTP se basa en el modelo cliente-servidor.23) Hola (1.. Es cosa suya si mantiene su reloj en hora local o UTC.Saturday) Localización del nombre abreviado del nombre del mes Localizacion de fecha y hora (Sat Nov 04 12:02:33 EST 1989) Siglo (año dividido por 100 y truncado a un entero) 00-99 Dia del mes (01.linuxparatodos.12) Mes (01. réplicas o datos son líneas 40 de 63 24/07/2010 11:53 p. El tamaño máximo permitido para estas líneas es de 1000 caracteres.. pero nada en el reloj le dice qué es lo que ha escogido.. Vea la discusión al respecto más adelante....12) Minutos (00.net/web/comunidad/base-de-conocimiento.366) Hora (0. Así que con esta opción es como le da esa información a hwclock..6). 24 horas (hh:mm:ss) Dia de la semana (1. 0 representa el Domingo Numero de la semana del año con Lunes como primer dia de la semana (00..53) Número de semana del año con el lunes como primer día de la semana (00. . es un protocolo de la capa de aplicación.. seguido de un texto explicativo..). donde un cliente envía un mensaje a uno o varios receptores.59) Una nueva linea Nanosegundos (000000000. Un tabulador horizontal Tiempo . Comando date Este programa se utiliza para mostrar o establecer la hora del sistema Sintaxis: [BASH]# date [opciones] [+FORMATO] Formato: OpcionesDescripcion Una literal % %a %A %b %c %C %d %D %e %F %h %H %I %j %k %l %m %M %n %N %p %P %r %R %s %S %t %T %u %U %V %w %W %x %X %y %Y Localización del nombre abreviado del día de la semana (Sun..

linuxparatodos. es más complejo que POP ya que permite visualizar los mensajes de manera remota y no descargando los mensajes como lo hace POP. los clientes permanecen conectados el tiempo que su interfaz permanezca activa y descargan los mensajes bajo demanda. La mayoría de los clientes de correo electrónico soportan POP3 ó IMAP. cada buzón de usuario era un fichero con derechos de sólo lectura y las aplicaciones de correo eran simplemente texto incorporado en ese fichero. esto de acuerdo a una encuesta realizada por la editorial O'Reilly. que creció a partir de un precedente sistema de entrega de correo electrónico denominado Delivermail.m. La primera transferencia real de un fichero de mensaje de correo entre dos equipos tuvo lugar hasta el año de 1972. el segundo lugar fue para Postfix con un 8. o su acrónimo IMAP. Sendmail. las búsquedas. IMAP tiene varias ventajas sobre POP. los almacena en la computadora del usuario como mensajes nuevos. no para enviarlo. Por ejemplo. En el conjunto de protocolos TCP/IP.6 % y en tercer lugar tenemos a Postini con el 8. obtiene todos los mensajes.5% Sobre Postfix Postfix es un Agente de Transporte de Correo (MTA) de software libre / código abierto. El unico punto debil que preseta sendmail es que este este posee el mayor numero de errores los cuales son reparados casi de inmediato. que es el otro protocolo empleado para obtener correo desde un servidor. permitieron que se materializasen los agentes MTA con funciones completas.Certificación LPI 102 . los elimina del servidor y finalmente se desconecta. Sin embargo. que se materializaba en el transporte de mensajes. Respaldo para búsquedas de parte del servidor IMAP4 proporciona un mecanismo para que los clientes pidan al servidor que busque mensajes de acuerdo a una cierta variedad de criterios. el precursor de Internet. Respaldo para que la información de estado del mensaje se mantenga en el servidor A través de la utilización de señales definidas en el protocolo IMAP4 de los clientes. un programa informático para el enrutamiento y envío de correo electrónico. Protocolo POP3 POP3 está diseñado para recibir correo. Watson Research Center de IBM. de manera tal que. Esta manera de trabajar de IMAP puede dar tiempos de respuesta más rápidos para usuarios que tienen una gran cantidad de mensajes o mensajes grandes.net/web/comunidad/base-de-conocimiento.3 % de los encuestados respondieron que tenian implementado a Sendmail como servidor de correo. es posible especificar en IMAP carpetas del lado servidor. los clientes se conectan brevemente al servidor de correo. solamente el tiempo que les tome descargar los nuevos mensajes. Ventajas sobre POP3 Respaldo para los modos de operación conetado y desconectado Al utilizar POP3. SMTP. usando normalmente el puerto 25 en el servidor para establecer la conexión. Protocolo IMAP Internet Message Access Protocol. Estas señales se almacenan en el servidor. respondido o eliminado. . año en el que el correo electrónico empezó a transferirse por FTP a través de un protocolo de red NCP. delimitadas por el carácter <CRLF>. Esto y otros factores hacen que la operación de IMAP permita a múltiples clientes acceder al mismo buzón de correo. de esta manera. de los cuales el 12. Estos avances. le permite a los usuarios con conexiones intermitentes ó muy lentas (tales como las conexiones por módem). fue originalmente escrito por Wietse Venema durante su estancia en el Thomas J. Formalmente conocido como VMailer e IBM Secure Mailer. Por entonces. Por otro lado. la cual formulo la siguiente pregunta ¿Cuantas empresas tienen implementado como servidor de correo a Sendmail? Para dicha encuesta se seleccionaron al rededor de 400 000 dominios. Este mecanismo evita que los clientes descarguen todos los mensajes de su buzón de correo. Todas las réplicas tienen un código numérico al comienzo de la línea. Sobre Sendmail Las raíces de Sendmail se remontan al nacimiento del correo electrónico. Al utilizar IMAP. por ejemplo. y continúa siendo desarrollado activamente. Cada usuario tenía que abrir y meterse de lleno en el fichero de correo para buscar correos antiguos y leer el correo nuevo era toda una faena. agilizando. en combinación con la sustitución de los ficheros host por dns. Este método de comunicación más sencillo muy pronto se hizo popular. de texto. el protocolo IMAP permite los modos de operación conectado y desconectado. el SMTP va por encima del TCP. incluso hasta el punto de representar la mayor parte del tráfico de ARPANET en menos de un año.. Sobre Exim 41 de 63 24/07/2010 11:53 p. sin embargo. la falta de estándares entre los protocolos existentes convirtió al correo electrónico en más difícil de enviar desde algunos sistemas y así continuó hasta que ARPANET creó el estándar TCP/IP en 1982. En contraste. Cabe mencionar que la mayoría de los clientes de correo incluyen la opción de dejar los mensajes en el servidor. muy pronto se convirtió en estándar a medida que Internet comenzaba a expandirse y a utilizarse más ampliamente. Un nuevo protocolo. de manera que varios clientes conectados al mismo correo en diferente tiempo pueden detectar los cambios hechos por otros clientes. si el mensaje ha sido o no leído. fácil de administrar y segura al ampliamente utilizado Sendmail.Base de Conocimiento http://www2. Sendmail en la actualidad Algunos analisis y encuentas nos expresan comentarios muy buenos sobre Sendmail. Mediante IMAP se puede tener acceso al correo electrónico desde cualquier equipo que tenga una conexión a Internet. Postfix es el agente de transporte por omisión en diversas distribuciones de Linux y en las últimas versiones del Mac OS X. Los clientes de correo electrónico que utilizan IMAP dejan por lo general los mensajes en el servidor hasta que el usuario los elimina directamente. una década antes de que naciese ARPANET.. creado con la intención de que sea una alternativa más rápida. se puede vigilar el estado del mensaje. es un protocolo de red de acceso a mensajes electrónicos almacenados en un servidor. un cliente que utilice POP3 se conecta. solo unos cuantos proveedores de internet ofrecen IMAP como valor agregado de sus servicios. descargar su correo electrónico mientras tienen conexión y revisarlo posteriormente incluso estando desconectados.

Exim es el MTA por defecto en las distribuciones Debian GNU/Linux. etc. colores. Administrar impresoras e impresiones Como imprimir en Linux En Linux podemos imprimir de tres maneras: 1.Los comandos lpr/lpd para manejar la cola de impresión: el sistema lpr/lpd es uno de los estándares de UNIX. que son: lpr (o lp): enviar trabajos a la cola de impresión. eliminando varios problemas asociados al manejo del formato mbox. por lo que necesitamos un filtro. que se configuran y mantienen en forma más o menos sencilla. y eso lo hace el archivo PPD (Postscript Printer Description): contiene todas las características de la impresora. Hasta que apareció CUPS era el sistema estándar de imprimir en Linux. software libre. cuando una aplicación envía un documento a la impresora genera un archivo PostScript. donde permanece hasta que el demonio cupsd lo imprime. además.Escribir directamente en la impresora: la forma más sencilla de imprimir un archivo en Linux es enviarlo directamente a la impresora. Cuando aparece alguno.m.Base de Conocimiento http://www2.Los comandos CUPS para administrar las impresoras: lpinfo lpadmin enable disable accept reject lpoptions lpstat 6. Los nuevos trabajos a imprimir se colocan en la cola de impresión a la espera: el primero que entra es el primero que sale.La interfaz web de CUPS: es la mejor opción para administrar CUPS. El proyecto cuenta con buena documentación.El demonio de impresión cupsd (print spooler daemon): vigila los directorios spool buscando trabajos a imprimir.org) y se debe guardar en el directorio /usr/share/cups/model. Por ejemplo. Sobre Qmail Qmail es un servidor de correo electrónico (SMTP) hecho para Unix. 42 de 63 24/07/2010 11:53 p.. virus. Por este motivo CUPS proporciona su propia versión de esos comandos. las aplicaciones que pueden imprimir son compatibles tanto con lpr/lpd como con CUPS: utilizarán el sistema que esté instalado. Si la impresora entiende el lenguaje PostScript puede imprimir el documento directamente. En términos generales se destaca que no existen situaciones para las que Exim sea una opción incorrecta y en muchas situaciones se desempeña como la mejor opción. Si la impresora no entiende PostScript debemos traducir los documentos que generan las aplicaciones (PostScript) a un lenguaje que entienda la impresora.El sistema lpr/lpd es la versión para Linux del sistema lp (Line Printer) de UNIX. Tiene una gran flexibilidad en los caminos que pueden seguir los mensajes según su origen y por presentar funcionalidades para control de spam. Incluso ahora. 3. Exim (EXperimental Internet Mailer) es un agente de transporte de correo (Mail Transport Agent. Si bien puede compilarse en sistemas operativos Windows. Utiliza el formato maildir para almacenar mensajes (un archivo por mensaje). En el entorno gráfico.La cola de impresión (spool): ubicada en el directorio /var/spool/cups. Qmail es distribuido como código fuente (sourcecode).linuxparatodos. 3. control de relay. listas de bloqueo basados en DNS (DNSBL).los drivers PPD de las impresoras PostScript: en Linux. donde se almacenan los trabajos a imprimir. lprm: eliminar trabajos de la cola de impresión. 2. . se recomienda que sea utilizado en producción sobre sistemas operativos de la familia Unix.El sistema CUPS (Common UNIX Printing System): actualmente es el sistema estándar de impresión en Linux.net/web/comunidad/base-de-conocimiento. para imprimir investigacion. Su sintaxis es: [BASH]# lpr <archivo> lpq: consultar los trabajos pendientes en la cola de impresión. 4. 5. Se distribuye sin costo bajo la licencia GNU GPL por lo que es. Sólo tenemos que decirle a CUPS cuáles son las características de la impresora. De esto se encarga Foomatic (paquete foomatic-db-engine): proporciona el archivo PPD y los filtros necesarios para traducir los documentos (trabaja sobre GhostScript). trabajarán sobre él y obtendrán automáticamente las propiedades de la impresora. cupsd lanza una copia de sí mismo que imprimirá el archivo en la impresora apropiada. es el sistema que se instala por defecto. usualmente MTA) desarrollado por la Universidad de Cambridge y puede ser utilizado en la mayoría de los sistemas Unix (entre ellos GNU/Linux). el archivo PPD de la impresora se puede descargar desde LinuxPrinting (linuxprinting.org) o desde la web de CUPS (cups. como tamaños de papel.Certificación LPI 102 . escrito en lenguaje C. usuarios y dominios virtuales y otros. En ambos casos. En que consiste el sistema de impresion CUPS El sistema de impresión CUPS reemplaza al sistema de impresión lpr/lpd y consiste en lo siguiente: 1.txt > /dev/lp0 2. lpc: configurar las impresoras. resoluciones disponibles.. ejemplos y recetas claras de “como hacer” determinadas tareas.txt haremos: [BASH]#cat investigacion. Este comando copia el archivo a imprimir en el directorio de spool. y las aplicaciones asumen que tendrán los comandos de este sistema de impresión disponibles.

ya que para administrar impresoras hay que tener permisos de root (la contraseña se envía en texto plano.linuxparatodos. ipp:192. Para ello.0 Para terminar reiniciamos el demonio de CUPS: [BASH]# /etc/init. una vez que les permitamos acceder.1 </Location> Vemos que por defecto sólo puede acceder a CUPS la propia máquina (127.d/cups restart Una vez compartida la impresora. Instalar una impresora local con CUPS Veamos cómo instalar una impresora local con CUPS utilizando su interfaz web: conectamos la impresora. en el archivo de configuración de CUPS.m.0.d/cups start accedemos al interfaz web de CUPS: [http://localhost:631 ] entramos a Administracion pulsamos Añadir impresora e introducimos Nombre de la impresora: HP Lasser Jet.0/255. Ubicación y Descripción Tipo de conexión.2:631/printers/Canon. cambiar las opciones de configuración y seleccionarla como impresora predeterminada.Que el servidor Samba atienda peticiones remotas y las pase a CUPS Los equipos que dispongan de un cliente SMB (Windows) podrán conectar con el servidor Samba (paquete samba) de nuestra máquina mediante el protocolo SMB (puerto 139 TCP).0.255. Añadir impresora Introducimos Nombre de la impresora. Mac y Windows XP) podrán conectar con el demonio de impresión cupsd de nuestra máquina mediante el protocolo IPP (Internet Printing Protocol.. instalamos Foomatic si la impresora no es PostScript. /etc/cups/cupsd.Allow Deny All Allow 127.2/printers/Canon. Usuario y Contraseña y la impresora ya está instalada.0.Certificación LPI 102 . comprobamos que realmente funciona lanzando una página de prueba con Imprimir página de prueba. http://192.1).0. Buscaremos las líneas: <Location /> Order Deny. .que CUPS escuche conexiones de máquinas remotas Los equipos que dispongan de un cliente IPP (Linux. Unix. Modelo.255. reiniciamos el demonio de CUPS: [BASH]# /etc/init.. Compartir nuestra impresora Tenemos dos posibilidades para compartir nuestra impresora: 1. Desde aquí podemos monitorizar los trabajos de impresión. puerto 631 TCP).net/web/comunidad/base-de-conocimiento. Instalamos los drivers de la impresora desde el CD del fabricante 1. pulsando en Impresoras iremos a la página de la nueva impresora.168.168. URL de la conexión.0. para terminar. 43 de 63 24/07/2010 11:53 p. Para que puedan acceder las máquinas de la LAN añadiremos la línea: Allow 192. en la siguiente pantalla nos preguntará Tipo de conexión: seleccionamos el modelo. es muy sencillo imprimir desde Linux: Interfaz web de CUPS http://localhost:631 Administración.conf especificaremos qué máquinas tienen acceso a CUPS. Asistente para agregar impresoras Impresora de red o una impresora conectada a otra computadora Conectarse a una impresora en Internet o en su red doméstica u organización URL de la conexión. nos pedirá Usuario y Contraseña. Internet Printing Protocol (IPP). y éste se encargará de pasarle la petición a CUPS.Base de Conocimiento http://www2.0. y ya tenemos la impresora instalada. Ubicación: Oficina: HP Laser. conseguimos e instalamos el archivo PPD de nuestra impresora. sin encriptar).0.168. e imprimir en nuestra impresora.

d/samba restart Una vez compartida la impresora. la red dejaba de ser responsable de la fiabilidad de la comunicación. Para el verano de 1973. que describe los niveles o capas de la pila de protocolos. Un ordenador denominado router (un nombre que fue después cambiado a 44 de 63 24/07/2010 11:53 p.m. Robert E.conf para que quede: [global] printcap name = cups printing = cups Grabamos los cambios y reiniciamos Samba: [BASH]# /etc/init. desarrollador del protocolo de ARPANET. Primero crearemos en nuestro sistema un usuario específico (smbprint) para que acceda a la impresora mediante Samba. además de otros como el ARP (Address Resolution Protocol) para la resolución de direcciones. La familia de protocolos de Internet puede describirse por analogía con el modelo OSI (Open System Interconnection). Network Control Program(NPC) se unió a Kahn con el objetivo de crear una arquitectura abierta de interconexión y diseñar así la nueva generación de protocolos de ARPANET. En la primavera de 1973. minicomputadoras y computadoras centrales sobre redes de área local (LAN) y área extensa (WAN). Después de la construcción de la pionera ARPANET en 1969 DARPA comenzó a trabajar en un gran número de tecnologías de transmisión de datos. En ocasiones se le denomina conjunto de protocolos TCP/IP. en referencia a los dos protocolos más importantes que la componen: Protocolo de Control de Transmisión (TCP) y Protocolo de Internet (IP). El modelo de Internet fue diseñado como la solución a un problema práctico de ingeniería.Certificación LPI 102 . ejecutándolo en ARPANET. entre ellos se encuentra el popular HTTP (HyperText Transfer Protocol). y proporciona un servicio bien definido a los niveles más altos. En una pila de protocolos. no lpr/lpd. como pasaba en ARPANET . Sirve de ayuda entender el modelo OSI antes de conocer TCP/IP. creadores de la red CYCLADES... Kahn y Cerf habian conseguido una remodelación fundamental. Si queremos permitir acceso anónimo lo podemos crear sin contraseña: [BASH]# # /usr/sbin/adduser --system --disabled-password smbprint Para compartir nuestra impresora CUPS y que sólo el usuario smbprint tenga acceso a ella. aunque en la práctica no corresponde exactamente con el modelo en Internet. editaremos el archivo /etc/samba/smb. que fueron los dos primeros en definirse. y sirve para enlazar computadoras que utilizan diferentes sistemas operativos. pulsamos Conectar. dejando a los niveles más bajos la labor de traducir los datos de forma que sean físicamente manipulables. en cambio. Cerf reconoció el mérito de Hubert Zimmerman y Louis Pouzin. pero son más fáciles de entender en el modelo OSI. Existen tantos protocolos en este conjunto que llegan a ser más de 100 diferentes. TCP/IP fue desarrollado y demostrado por primera vez en 1972 por el Departamento de Defensa de los Estados Unidos. . entre otros. Kahn fue contratado por la Oficina de Técnicas de Procesamiento de Información de DARPA. una red de área extensa de dicho departamento.Base de Conocimiento http://www2.net/web/comunidad/base-de-conocimiento. era el host el responsable. incluyendo PC. e instalamos los drivers desde el CD del fabricante. pero el modelo TCP/IP es el que realmente se usa. Desarrollo de TCP/IP La Familia de Protocolos de Internet fueron el resultado del trabajo llevado a cabo por la Agencia de Investigación de Proyectos Avanzados de Defensa (DARPA por sus siglas en inglés) a principios de los 70. ya que se aplican los mismos principios. El modelo OSI. reconoció el importante valor de la comunicación de estas dos formas. cada nivel soluciona una serie de problemas relacionados con la transmisión de datos. es muy sencillo imprimir desde Windows: localizamos nuestra máquina en el Explorador de archivos. Veremos que tiene una impresora compartida. fue propuesto como una aproximación teórica y también como una primera fase en la evolución de las redes de ordenadores. y que son los más utilizados de la familia.linuxparatodos. donde las diferencias entre los protocolos de red se ocultaban usando un Protocolo de comunicaciones y además. el modelo OSI es más fácil de entender. donde trabajo en la comunicación de paquetes por satélite y por ondas de radio. Vint Cerf. por lo que cambiaremos /etc/samba/smb. Los niveles superiores son los más cercanos al usuario y tratan con datos más abstractos. TELNET para acceder a equipos remotos. Fundamentos de Red Fundamentos de TCP/IP Sobre TCP/IP La familia de protocolos de Internet es un conjunto de protocolos de red en la que se basa Internet y que permiten la transmisión de datos entre redes de computadoras.. Por lo tanto.conf poniendo: [printers] browseable = yes printable = yes public = yes guest only = yes guest account = smbprint path = /home/smbprint Además tenemos que decirle a Samba que el sistema de impresión es CUPS. ya que su trabajo estuvo muy influenciado por el diseño de esta red. como invitado (por lo que todas las máquinas de la red local y con conexión directa desde Internet podrán imprimir). y el SMTP (Simple Mail Transfer Protocol) y el POP (Post Office Protocol) para correo electrónico. Vamos a configurar el servidor Samba para compartir nuestra impresora.. En 1972. que es el que se utiliza para acceder a las páginas web. El TCP/IP es la base de Internet. el FTP (File Transfer Protocol) para transferencia de archivos.

aunque ellos parecen pertenecer a niveles más altos en la pila. Protocolos específicos de un tipo concreto de red. el Departamento de Defensa de los Estados Unidos declaró al protocolo TCP/IP el estándar para las comunicaciones entre redes militares. Ejemplos de estos protocolos son el ARP (Protocolo de resolución de direcciones) y el STP (Spanning Tree Protocol). Generalmente esto incluye un enrutamiento de paquetes a través de una red de redes. PPP es un poco más complejo y originalmente fue diseñado como un protocolo separado que funcionaba sobre otro nivel de enlace. y trabajan por debajo de las capas de Internet. Algunos de los protocolos por encima de IP como ICMP (usado para transmitir información de diagnóstico sobre transmisiones IP) e IGMP (usado para dirigir tráfico multicast) van en niveles superiores a IP pero realizan funciones del nivel de red e ilustran una incompatibilidad entre los modelos de Internet y OSI. Como TCP/IP no tiene un nivel de sesión unificado sobre el que los niveles superiores se sostengan. basadas en el intercambio de datos entre una red origen y una red destino. longitudes de onda. Wireless Ethernet. el Centro de Administración de Internet (Internet Architecture Board IAB por sus siglas en inglés) organizó un Taller de Trabajo de tres días de duración. Token Ring y ATM. código de canales y modulación. gateway. . De todas formas.net/web/comunidad/base-de-conocimiento. respectivamente. En la familia de protocolos de Internet. Ethernet. que proporciona un flujo fiable de bytes. por ejemplo. pero sin serlo. en TCP/IP se integran algunos niveles del modelo OSI en su nivel de Aplicación. para evitar confusiones con otros tipos de Puerta de enlace) esta dotado con una interfaz para cada red. incluye campos en la cabecera de la trama que especifican que máquina o máquinas de la red son las destinatarias de la trama. y RIP son realmente también parte del nivel de red. nuevas funcionalidades fueron añadidas a este nivel. Una interpretación simplificada de la pila TCP/IP se muestra debajo: Nivel Fisico El nivel físico describe las características físicas de la comunicación. Reino Unido y Noruega. y todo lo relativo a los detalles como los conectores. los tres niveles superiores del modelo OSI (Aplicación. Con la llegada del concepto de Internet. dando como resultado la primera especificación TCP (Request for Comments 675) Entonces DARPA fue contratada por BBN Technologies. La diferencia más notable entre los modelos de TCP/IP y OSI es el nivel de Aplicación. cada uno de esos protocolos es identificado con un único "Número de protocolo IP". ICMP y IGMP son los protocolos 1 y 2. IP puede pasar los datos a una serie de protocolos superiores. Todos los protocolos de enrutamiento. Los requisitos para estor routers están definidos en (Request for Comments 1812). El siguiente diagrama intenta mostrar la pila OSI y otros protocolos relacionados con el modelo OSI original: Normalmente. Varios prototipos diferentes de protocolos TCP/IP se desarrollaron en múltiples centros de investigación entre los años 1978 y 1983. sincronización y temporización y distancias máximas..m.Base de Conocimiento http://www2. una tercera dividida en dos TCP v3 y IP v3 en la primavera de 1978. incluyendo los delimitadores (patrones de bits concretos que marcan el comienzo y el fin de cada trama). conocida como Internet.. Esta idea fue llevada a la práctica de una forma mas detallada por el grupo de investigación que Cerf tenía en Stanford durante el periodo de 1973 a 1974. TCP (protocolo IP número 6) es un mecanismo de transporte fiable y orientado a conexión. y la University College de Londres para desarrollar versiones operacionales del protocolo en diferentes plataformas de hardware. Se desarrollaron así cuatro versiones diferentes: TCP v1. potencias de señal. Presentación y Sesión) son considerados simplemente como el nivel de aplicación en el conjunto TCP/IP. El modelo TCP/IP no está lo suficientemente dotado en los niveles inferiores como para detallar la auténtica estratificación en niveles: necesitaría tener una capa extra (el nivel de Red) entre los niveles de transporte e Internet. al que asistieron 250 comerciales promocionando así el protocolo lo que contribuyó a un incremento de su uso comercial. OSPF.En 1985. Ejemplos de protocolos de nivel de enlace de datos son Ethernet.Certificación LPI 102 . estos son protocolos locales. TCP v2. Nivel de Enlace de Datos El nivel de enlace de datos especifica cómo son transportados los paquetes sobre el nivel físico. estas funciones son típicamente desempeñadas (o ignoradas) por las aplicaciones de usuario. Cierto es que situar ambos grupos (sin mencionar los protocolos que forman parte del nivel de Internet pero se sitúan por encima de los protocolos de Internet. y envía Datagrama de ida y vuelta entre ellos. Nivel de Transporte Los protocolos de enrutamiento dinámico que técnicamente encajan en el conjunto de protocolos TCP/IP (ya que funcionan sobre IP) son generalmente considerados parte del nivel de red. IP realiza las tareas básicas para conseguir transportar datos desde un origen a un destino. HDLC/SDLC. En marzo de 1982. se realizó la primera prueba de comunicación entre dos redes con protocolos TCP/IP entre la Universidad de Stanford y la University College de Londres(UCL). y después se estabilizó la versión TCP/IP v4 — el protocolo estándar que todavía se emplea en Internet actualmente En 1975. En 1977. se realizó otra prueba de comunicación con un protocolo TCP/IP entre tres redes distintas con ubicaciones en Estados Unidos. pero el modelo OSI no llega a ese nivel de complejidad para ser más útil como modelo de referencia. como BGP. Como TCP/IP y modelo OSI no están delimitados con precisión no hay una respuesta que sea la correcta. el nivel de red soluciona el problema de conseguir transportar paquetes a través de una red sencilla.linuxparatodos. puerta de enlace. que se sitúan por encima del marco de hardware básico. SLIP. como las convenciones sobre la naturaleza del medio usado para la comunicación (como las comunicaciones por cable. La migración completa de la red ARPANET al protocolo TCP/IP concluyó oficialmente el día 1 de enero de 1983 cuando los protocolos fueron activados permanentemente. que asegura 45 de 63 24/07/2010 11:53 p. Este nivel es a veces subdividido en Control de enlace lógico (Logical Link Control) y Control de acceso al medio (Media Access Control). como ICMP) todos en la misma capa puede producir confusión. Niveles en la pila TCP/IP Hay algunas discusiones sobre como encaja el modelo TCP/IP dentro del modelo OSI. Ejemplos de protocolos son X. fibra óptica o radio). un ejemplo es OSPF (protocolo IP número 89). la Universidad de Stanford.25 y Host/IMP Protocol de ARPANET. pertenecen al nivel de red. Nivel de internet Como fue definido originalmente.

y proporciona múltiples sub-flujos multiplexados sobre la misma conexión. es decir. e incluido en la transmisión del segmento. algunos parámetros como el número de secuencia son configurados para asegurar la entrega ordenada de los datos y la robustez de la comunicación. y determina el lado servidor de una conexión. También proporciona soporte de multihoming.linuxparatodos. los números iniciales de secuencia son intercambiados entre las dos entidades TCP. Siempre hay un par de números de secuencia incluidos en todo segmento TCP. es calculado por el emisor. será el mismo. En caso de no estarlo.) y el resultado. lo que significa el rechazo del intento de conexión. Es interesante notar que existe un número de secuencia generado por cada lado. Una de las claves para mantener la robustez y la seguridad de las conexiones TCP es la selección del número inicial de secuencia (ISN. pero también fue usado para otras aplicaciones. Estos programas y sus correspondientes protocolos incluyen a HTTP (HyperText Transfer Protocol). un receptor asiente los segmentos TCP indicando que ha recibido una parte del flujo continuo de bytes. que vuelve a cero tras el siguiente byte después del 232-1. SMTP (correo electrónico). Para mantener la fiabilidad. y asentimientos y temporizadores para detectar pérdidas y retrasos. TCP y UDP: son usados para dar servicio a una serie de aplicaciones de alto nivel. Una vez que los datos de la aplicación han sido codificados en un protocolo estándar del nivel de aplicación son pasados hacia abajo al siguiente nivel de la pila de protocolos TCP/IP.m. Los números de secuencia son de 32 bits (sin signo). DCCP está actualmente bajo desarrollo por el IETF. Establecimiento de la conexion Aunque es posible que un par de entidades finales comiencen una conexión entre ellas simultáneamente. también un mecanismo fiable y orientado a conexión. Se usa la suma en complemento a uno porque el acarreo final de ese método puede ser calculado en cualquier múltiplo de su tamaño (16-bit.net/web/comunidad/base-de-conocimiento. Es un protocolo no fiable (best effort al igual que IP) . consistente en el complemento a uno de la suma en complemento a uno del contenido de la cabecera y datos del segmento TCP. mientras que con el número de asentimiento se refiere al número de secuencia del receptor. sino porque no verifica que los paquetes lleguen a su destino. Durante el establecimiento de conexión TCP. los puertos bien conocidos (well-known ports) son asociados con aplicaciones específicas. Estos números de secuencia son usados para identificar los datos dentro del flujo de bytes. Fue desarrollado inicialmente para aplicaciones telefónicas (para transportar SS7 sobre IP). y puede convertirse en una desventaja en flujos en tiempo real (muy sensibles a la variación del retardo) o aplicaciones de enrutamiento con porcentajes altos de pérdida en el nivel de Internet. transferencia de datos y fin de la conexión.. que los datos llegan completos. El lado cliente de una conexión realiza una apertura activa de un puerto enviando un paquete SYN inicial al servidor como parte de la negociación en tres pasos. el lado servidor respondería a la petición SYN válida con un paquete SYN/ACK. donde una conexión puede ser representada por múltiples direcciones IP (representando múltiples interfaces físicas). una serie de mecanismos claves determinan la fiabilidad y robustez del protocolo. Proporcionan servicios que directamente trabajan con las aplicaciones de usuario. y son habitualmente asociados a un número de puerto bien conocido (well-known port). sin daños y en orden. 32-bit. Por convención. Durante el establecimiento de la conexión.no porque sea particularmente malo... TCP realiza continuamente medidas sobre el estado de la red para evitar sobrecargarla con demasiado tráfico. y no da garantías de que lleguen en orden. TCP puede pasar los segmentos recibidos en el orden correcto dentro del flujo de bytes a la aplicación receptora. Finalmente. normalmente una de ellas abre un socket en un determinado puerto tcp y se queda a la escucha de nuevas conexiones. donde la sobrecarga de las cabeceras que aportan la fiabilidad es desproporcionada para el tamaño de los paquetes. Más reciente es SCTP. etc) donde la llegada a tiempo de los paquetes es más importante que la fiabilidad. ayudando de este modo a que no se puedan establecer conexiones falseadas (spoofing). Selective Acknowledgement) permite a un receptor TCP asentir los datos que se han recibido de tal forma que el remitente solo retransmita los segmentos de datos que faltan. DNS (Resolución de nombres de dominio) y a muchos otros. Esta es una de las principales diferencias con UDP. así si hay un fallo la conexión no se interrumpe. checksums para detectar errores. Un checksum de 16 bits. UDP (protocolo IP número 17) es un protocolo de datagramas sin conexión. En el nivel de transporte..Base de Conocimiento http://www2. El receptor TCP recalcula el checksum sobre las cabeceras y datos recibidos. Una negociación en cuatro pasos (4-way handshake) es usada para la desconexión. Si una aplicación requiere estas características. o para aplicaciones simples de tipo petición/respuesta como el servicio DNS. Algunos programas específicos se considera que se ejecutan en este nivel. completando así la negociación en tres pasos (SYN. las aplicaciones normalmente hacen uso de TCP y UDP. Además. SYN/ACK y ACK) y la fase de establecimiento de conexión. si existe algún proceso escuchando en ese puerto. TCP trata de enviar todos los datos correctamente en la secuencia especificada. El complemento es usado para que el receptor no tenga que poner a cero el campo del checksum de la cabecera antes de hacer los 46 de 63 24/07/2010 11:53 p. Para establecer la conexión se usa el procedimiento llamado negociación en tres pasos (3-way handshake). Los puertos fueron asignados originalmente por la IANA. mientras de cara al usuario se da un servicio de datagramas UDP. y poder identificar (y contar) los bytes de los datos de la aplicación. llamada asentimiento selectivo (SACK. Las aplicaciones con una dirección de red dada son distinguibles entre sí por su número de puerto TCP o UDP. Los procesos que acontecen en este nivel son aplicaciones específicas que pasan los datos al nivel de aplicación en el formato que internamente use el programa y es codificado de acuerdo con un protocolo estándar. Nivel de Aplicacion El nivel de aplicación es el nivel que los programas más comunes utilizan para comunicarse a través de una red con otros programas. En caso de que sí se encuentre abierto el puerto. En el lado del servidor se comprueba si el puerto está abierto. el cliente debería responderle al servidor con un ACK. UDP es usado normalmente para aplicaciones de streaming (audio. 64-bit. Está relacionado con la orientación a byte. video. debe llevarlas a cabo por sí misma o usar TCP. Protocolo TCP Las conexiones TCP se componen de tres etapas: establecimiento de conexión. una vez plegado.Certificación LPI 102 . referidos al número de secuencia y al número de asentimiento. Una mejora de TCP. Transferencia de datos Durante la etapa de transferencia de datos. FTP (Transferencia de archivos). Un emisor TCP se refiere a su propio número de secuencia cuando habla de número de secuencia. Es común referirse a esto como apertura pasiva. Proporciona semántica de control para flujos TCP. se envía al cliente un paquete de respuesta con el bit RST activado. Initial Sequence Number). RTP es un protocolo de datagramas que ha sido diseñado para datos en tiempo real como el streaming de audio y video que se monta sobre UDP. A través del uso de números de secuencia y asentimiento. Entre ellos están incluidos el uso del número de secuencia para ordenar los segmentos TCP recibidos y detectar paquetes duplicados. SSH (login remoto seguro). .

535 bytes. Esto proporciona protección contra paquetes mal dirigidos por errores en las direcciones. el de comienzo lento (Slow-start). Protocolo UDP User Datagram Protocol (UDP) es un protocolo del nivel de transporte basado en el intercambio de datagramas. Escalado de ventana Para una mayor eficiencia en redes de gran ancho de banda. Unido a los temporizadores. Cada lado de la conexión TCP tiene asociado un número de puerto (de 16 bits sin signo. pero también pueden representar servicios que hayan sido registrados por un tercero (rango de puertos registrados: 1024 al 49151). donde no es posible realizar retransmisiones por los estrictos requisitos de retardo que se tiene en estos casos. que el otro interlocutor asentirá con un ACK. entonces su tamaño de ventana será (x . DNS y demás protocolos en los que el intercambio de paquetes de la conexión/desconexión son mayores. Los puertos registrados son normalmente empleados por las aplicaciones de usuario de forma temporal cuando conectan con los servidores. Tampoco tiene confirmación ni control de flujo. registrados y dinámicos/privados. En niveles de enlace con una alta probabilidad de error de bit quizá requiera una capacidad adicional de corrección/detección de errores de enlace. por lo que los paquetes pueden adelantarse unos a otros. Su uso principal es para protocolos como DHCP. debe ser usado un tamaño de ventana mayor. Los puertos bien conocidos son asignados por la Internet Assigned Numbers Authority (IANA). Si es así. Permite el envío de datagramas a través de la red sin que se haya establecido previamente una conexión. Puertos TCP TCP usa el concepto de número de puerto para identificar a las aplicaciones emisoras y receptoras. Los siguientes paquetes recibidos seguirán restando tamaño a la ventana de recepción. son usados por los emisores para interpretar las condiciones de la red entre el emisor y receptor TCP.y) bytes. inspecciones sobre el tráfico de Internet han mostrado que son comunes los errores de software y hardwarecita requerida que introducen errores en los paquetes protegidos con un CRC. salvando en algún lugar el valor del checksum recibido. TCP usa una serie de mecanismos para conseguir un alto rendimiento y evitar la congestión de la red (la idea es enviar tan rápido como el receptor pueda recibir). SSH (22). ya que no hay confirmación de entrega o recepción. y el resultado debe ser igual a 0. a 1 Gigabyte. a un tamaño de ventana de 65. SMTP (25) y HTTP (80). van del 0 al 1023 y son usados normalmente por el sistema o por procesos con privilegios. La entidad emisora puede enviar una cantidad determinada de datos pero antes debe esperar un asentimiento con la actualización del tamaño de ventana por parte del receptor. Por tanto. una desconexión típica requiere un par de segmentos FIN y ACK desde cada lado de la conexión. .m. Los puertos dinámicos/privados también pueden ser usados por las aplicaciones de usuario. Sin embargo. El valor de la escala representa el número de bits desplazados a la izquierda de los 16 bits que forman el campo del tamaño de ventana.Base de Conocimiento http://www2. así como para la transmisión de audio y vídeo en tiempo real.535 bytes. Hay que fijarse en que el checksum de TCP también cubre los 96 bit de la cabecera que contiene la dirección origen. Un ejemplo sería el siguiente: un receptor comienza con un tamaño de ventana x y recibe y bytes. por lo que el rango de valores 47 de 63 24/07/2010 11:53 p. Una conexión puede estar "medio abierta" en el caso de que uno de los lados la finalice pero el otro no. Telnet (23). el de recuperación rápida (Fast Recovery). ya que el propio datagrama incorpora suficiente información de direccionamiento en su cabecera. los emisores y receptores TCP pueden alterar el comportamiento del movimiento de datos. Hay que recordar que un número binario desplazado un bit a la izquierda es como multiplicarlo en base decimal por 2. El lado que ha dado por finalizada la conexión no puede enviar más datos pero la otra parte si podrá. terminando la conexión desde cada lado independientemente. Tamaño de ventana TCP El tamaño de la ventana de recepción TCP es la cantidad de datos recibidos (en bytes) que pueden ser metidos en el buffer de recepción durante la conexión. bajo TCP e IP. y otros. Como el campo de ventana no puede expandirse se usa un factor de escalado. es decir. El campo de puerto tiene una longitud de 16 bits. el protocolo y el tamaño TCP. y que el checksum de 16 bits de TCP detecta la mayoría de estos errores simples. El checksum de TCP es una comprobación bastante débil.y) y el transmisor sólo podrá mandar paquetes con un tamaño máximo de datos de (x . Los puertos son clasificados en tres categorías: bien conocidos.net/web/comunidad/base-de-conocimiento. cálculos. Fin de la conexion La fase de finalización de la conexión usa una negociación en cuatro pasos (four-way handshake). Algunos ejemplos son: FTP (21).. como el usado en el PPP o en Ethernet. muy probablemente tendría un código de redundancia cíclica (CRC) para control de errores en vez del actual checksum. el de retransmisión rápida. La escala de ventana TCP (TCP window scale) es una opción usada para incrementar el máximo tamaño de ventana desde 65. El campo TCP de tamaño de ventana controla el movimiento de datos y está limitado a 16 bits. con lo que existen 65536 puertos posibles) asignado por la aplicación emisora o receptora. en vez de eso. esto no significa que el checksum de 16 bits es redundante: sorprendentemente. o no son rentables con respecto a la información transmitida. se asume que el segmento ha llegado intacto y sin errores. Puertos TCP UDP utiliza puertos para permitir la comunicación entre aplicaciones. recordemos que el rango total de 2 elevado a la potencia 16. La opción de escala de ventana TCP es usada solo durante la negociación en tres pasos que constituye el comienzo de la conexión. pero este caso es menos común. Los asentimientos (ACKs o Acknowledgments) de los datos enviados o la falta de ellos. Esta situación seguirá así hasta que la aplicación receptora recoja los datos del buffer de recepción.. Si TCP fuese rediseñado hoy. cubre 65536 números. del 0 al 65535). que controla que el transmisor mande información dentro de los límites del buffer del receptor. la dirección destino.Certificación LPI 102 . Estos mecanismos incluyen el uso de ventana deslizante. y algoritmos de control de flujo. Los puertos dinámicos/privados no tienen significado fuera de la conexión TCP en la que fueron usados (rango de puertos dinámicos/privados: 49152 al 65535. Las aplicaciones que usan este tipo de puertos son ejecutadas como servidores y se quedan a la escucha de conexiones. BOOTP.linuxparatodos. tales como el algoritmo de Evitación de la Congestión (congestion avoidance). El valor de la escala puede ir desde 0 (sin desplazamiento) hasta 14. Cuando uno de los dos extremos de la conexión desea parar su "mitad" de conexión transmite un paquete FIN. La debilidad del checksum está parcialmente compensada por el extendido uso de un CRC en el nivel de enlace. y tampoco se sabe si ha llegado correctamente. el receptor simplemente calcula la suma en complemento a uno con el checksum incluido.

Certificación LPI 102 - Base de Conocimiento

http://www2.linuxparatodos.net/web/comunidad/base-de-conocimiento...

válidos va de 0 a 65.535. El puerto 0 está reservado, pero es un valor permitido como puerto origen si el proceso emisor no espera recibir mensajes como respuesta. Los puertos 1 a 1023 se llaman puertos "bien conocidos" y en sistemas operativos tipo Unix enlazar con uno de estos puertos requiere acceso como superusuario. Los puertos 1024 a 49.151 son puertos registrados. Los puertos 49.152 a 65.535 son puertos efímeros y son utilizados como puertos temporales, sobre todo por los clientes al comunicarse con los servidores.

Diferencias entre TCP y UDP
UDP: proporciona un nivel de transporte no fiable de datagramas, ya que apenas añade la información necesaria para la comunicación extremo a extremo al paquete que envía al nivel inferior. Lo utilizan aplicaciones como NFS (Network File System) y RCP (comando para copiar ficheros entre ordenadores remotos), pero sobre todo se emplea en tareas de control y en la transmisión de audio y vídeo a través de una red. No introduce retardos para establecer una conexión, no mantiene estado de conexión alguno y no realiza seguimiento de estos parámetros. Así, un servidor dedicado a una aplicación particular puede soportar más clientes activos cuando la aplicación corre sobre UDP en lugar de sobre TCP. TCP: es el protocolo que proporciona un transporte fiable de flujo de bits entre aplicaciones. Está pensado para poder enviar grandes cantidades de información de forma fiable, liberando al programador de la dificultad de gestionar la fiabilidad de la conexión (retransmisiones, pérdida de paquetes, orden en el que llegan los paquetes, duplicados de paquetes...) que gestiona el propio protocolo. Pero la complejidad de la gestión de la fiabilidad tiene un coste en eficiencia, ya que para llevar a cabo las gestiones anteriores se tiene que añadir bastante información a los paquetes que enviar. Debido a que los paquetes para enviar tienen un tamaño máximo, cuanta más información añada el protocolo para su gestión, menos información que proviene de la aplicación podrá contener ese paquete (el segmento TCP tiene una sobrecarga de 20 bytes en cada segmento, mientras que UDP solo añade 8 bytes). Por eso, cuando es más importante la velocidad que la fiabilidad, se utiliza UDP. En cambio, TCP asegura la recepción en destino de la información para transmitir. 109.5 Protocolo ICMP El Protocolo de Mensajes de Control de Internet o ICMP (por sus siglas de Internet Control Message Protocol) es el sub protocolo de control y notificación de errores del Protocolo de Internet (IP). Como tal, se usa para enviar mensajes de error, indicando por ejemplo que un servicio determinado no está disponible o que un router o host no puede ser localizado. ICMP difiere del propósito de TCP y UDP ya que generalmente no se utiliza directamente por las aplicaciones de usuario en la red. La única excepción es la herramienta ping y traceroute, que envían mensajes de petición Echo ICMP (y recibe mensajes de respuesta Echo) para determinar si un host está disponible, el tiempo que le toma a los paquetes en ir y regresar a ese host y cantidad de hosts por los que pasa.

Tabla de Puertos TCP y UDP
Puerto/Protocolo 1/tcp 7/tcp 7/udp 9/tcp 9/udp 13/tcp 17/tcp 19/tcp 19/udp 0 21/tcp 22/tcp 23/tcp 25/tcp 37/tcp 43/tcp 53/tcp 53/udp 67/udp 68/udp 69/udp 0 79/tcp 0 88/tcp 0 111/tcp 113/tcp 119/tcp 123/udp 123/tcp 135/tcp 137/tcp 137/udp Descripcion Multiplexor TCP Protocolo Echo (Eco) Reponde con eco a llamadas remotas Protocolo Echo (Eco) Reponde con eco a llamadas remotas Protocolo Discard Elimina cualquier dato que recibe Protocolo Discard Elimina cualquier dato que recibe Protocolo Daytime Fecha y hora actuales Quote of the Day (Cita del Día) Protocolo Chargen Generador de caractéres Protocolo Chargen Generador de caractéres FTP File Transfer Protocol (Protocolo de Transferencia de Ficheros) - datos FTP File Transfer Protocol (Protocolo de Transferencia de Ficheros) - control SSH, scp, SFTP Telnet comunicaciones de texto inseguras SMTP Simple Mail Transfer Protocol (Protocolo Simple de Transferencia de Correo) time nicname DNS Domain Name System (Sistema de Nombres de Dominio) DNS Domain Name System (Sistema de Nombres de Dominio) BOOTP BootStrap Protocol (Server), también usado por DHCP BOOTP BootStrap Protocol (Client), también usado por DHCP TFTP Trivial File Transfer Protocol (Protocolo Trivial de Transferencia de Ficheros) Gopher Finger HTTP HyperText Transfer Protocol (Protocolo de Transferencia de HiperTexto) (WWW) Kerberos Agente de autenticación POP3 Post Office Protocol (E-mail) sunrpc ident (auth) antiguo sistema de identificación NNTP usado en los grupos de noticias de usenet NTP Protocolo de sincronización de tiempo NTP Protocolo de sincronización de tiempo epmap NetBIOS Servicio de nombres NetBIOS Servicio de nombres

48 de 63

24/07/2010 11:53 p.m.

Certificación LPI 102 - Base de Conocimiento

http://www2.linuxparatodos.net/web/comunidad/base-de-conocimiento...

138/tcp 138/udp 139/tcp 139/udp 143/tcp 161/tcp 161/udp 162/tcp 162/udp 177/tcp 177/udp 389/tcp 389/udp 443/tcp 445/tcp 445/udp 0 512/tcp 513/tcp 514/udp 0 591/tcp 631/tcp 666/tcp 993/tcp 995/tcp 0 1337/tcp 1352/tcp 1433/tcp 1434/tcp 1434/udp 1494/tcp 1512/tcp 1521/tcp 0Enrutamiento y Acceso Remoto para VPN con L2TP. 1723/tcp 1761/tcp 1863/tcp 0 0 0 2427/upd 0 0 3128/tcp 3128/tcp 0 3389/tcp 3396/tcp 0 4662/tcp 4672/udp 4899/tcp 0 0 0 5222/tcp 5223/tcp 5269/tcp

NetBIOS Servicio de envío de datagramas NetBIOS Servicio de envío de datagramas NetBIOS Servicio de sesiones NetBIOS Servicio de sesiones IMAP4 Internet Message Access Protocol (E-mail) SNMP Simple Network Management Protocol SNMP Simple Network Management Protocol SNMP-trap SNMP-trap XDMCP Protocolo de gestión de displays en X11 XDMCP Protocolo de gestión de displays en X11 LDAP Protocolo de acceso ligero a Bases de Datos LDAP Protocolo de acceso ligero a Bases de Datos HTTPS/SSL usado para la transferencia segura de páginas web Microsoft-DS (Active Directory, compartición en Windows, gusano Sasser, Agobot) Microsoft-DS compartición de ficheros IPSec ISAKMP, Autoridad de Seguridad Local exec login syslog usado para logs del sistema RIP FileMaker 6.0 (alternativa para HTTP, ver puerto 80) CUPS sistema de impresión de Unix identificación de Doom para jugar sobre TCP IMAP4 sobre SSL (E-mail) POP3 sobre SSL (E-mail) SOCKS Proxy suele usarse en máquinas comprometidas o infectadas IBM Lotus Notes/Domino RCP Microsoft-SQL-Server Microsoft-SQL-Monitor Microsoft-SQL-Monitor Citrix MetaFrame Cliente ICA WINS Oracle listener por defecto

Enrutamiento y Acceso Remoto para VPN con PPTP. Novell Zenworks Remote Control utility MSN Messenger NFS Archivos del sistema de red CPanel puerto por defecto Web Host Manager puerto por defecto Cisco MGCP NetPanzer NetPanzer HTTP usado por web caches y por defecto en Squid cache NDL-AAS MySQL sistema de gestión de bases de datos RDP (Remote Desktop Protocol) Novell agente de impresión NDPS Subversion (sistema de control de versiones) eMule (aplicación de compartición de ficheros) eMule (aplicación de compartición de ficheros) RAdmin (Remote Administrator), herramienta de administración remota (normalmente troyanos) Universal plug-and-play Session Initiation Protocol (SIP) AOL y AOL Instant Messenger XMPP/Jabber conexión de cliente XMPP/Jabber puerto por defecto para conexiones de cliente SSL XMPP/Jabber conexión de servidor

49 de 63

24/07/2010 11:53 p.m.

Certificación LPI 102 - Base de Conocimiento

http://www2.linuxparatodos.net/web/comunidad/base-de-conocimiento...

5432/tcp 5517/tcp 5631/tcp 5632/udp 0 0 0 0 0 0 6000/tcp 6112/udp 6129/tcp 6346/tcp 6347/udp 6348/udp 6349/udp 0 6355/udp 6667/tcp 6881/tcp 6969/tcp 0 7100/udp 0 0 8118/tcp 0 9898/tcp 0 19226/tcp 12345/tcp 31337/tcp

PostgreSQL sistema de gestión de bases de datos Setiqueue proyecto SETI@Home PC-Anywhere protocolo de escritorio remoto PC-Anywhere protocolo de escritorio remoto VNC protocolo de escritorio remoto (usado sobre HTTP) VNC protocolo de escritorio remoto (usado sobre HTTP) VNC protocolo de escritorio remoto (usado sobre HTTP) VNC protocolo de escritorio remoto (usado sobre HTTP) VNC protocolo de escritorio remoto (usado sobre HTTP) VNC protocolo de escritorio remoto (conexión normal) X11 usado para X-windows Blizzard Dameware Software conexión remota Gnutella compartición de ficheros (Limewire, etc.) Gnutella Gnutella Gnutella Gnutella Gnutella IRC IRCU Internet Relay Chat BitTorrent puerto por defecto BitTorrent puerto de tracker Servidor de Fuentes X11 Servidor de Fuentes X11 iRDMI por lo general, usado erróneamente en sustitución de 8080. También utilizado en el servidor de streaming ShoutCast. HTTP HTTP-ALT ver puerto 80. Tomcat lo usa como puerto por defecto. privoxy Pichat peer-to-peer chat server Gusano Dabber (troyano/virus) Webmin (Administración remota web) Panda SecurityPuerto de comunicaciones de Panda Agent. NetBus en:NetBus (troyano/virus) Back Orifice herramienta de administración remota (por lo general troyanos)

Direcciones IP
Una dirección IP es un número que identifica de manera lógica y jerárquica a una interfaz de un dispositivo (habitualmente una computadora) dentro de una red que utilice el protocolo IP (Internet Protocol), que corresponde al nivel de red del protocolo TCP/IP. Dicho número no se ha de confundir con la dirección MAC que es un número hexadecimal fijo que es asignado a la tarjeta o dispositivo de red por el fabricante, mientras que la dirección IP se puede cambiar. Es habitual que un usuario que se conecta desde su hogar a Internet utilice una dirección IP. Esta dirección puede cambiar cada vez que se conecta; y a esta forma de asignación de dirección IP se denomina una dirección IP dinámica (normalmente se abrevia como IP dinámica). Los sitios de Internet que por su naturaleza necesitan estar permanentemente conectados, generalmente tienen una dirección IP fija (se aplica la misma reducción por IP fija o IP estática), es decir, no cambia con el tiempo. Los servidores de correo, DNS, FTP públicos, y servidores de páginas web necesariamente deben contar con una dirección IP fija o estática, ya que de esta forma se permite su localización en la red. A través de Internet, los ordenadores se conectan entre sí mediante sus respectivas direcciones IP. Sin embargo, a los seres humanos nos es más cómodo utilizar otra notación más fácil de recordar y utilizar, como los nombres de dominio; la traducción entre unos y otros se resuelve mediante los servidores de nombres de dominio DNS. Existe un protocolo para asignar direcciones IP dinámicas llamado DHCP (Dynamic Host Configuration Protocol).

Direcciones IPv4
En su versión 6.55, una dirección IP se implementa con un número de 32 bit que suele ser mostrado en cuatro grupos de números decimales de 8 bits (IPv4). Cada uno de esos números se mueve en un rango de 0 a 255 (expresado en decimal), o de 0 a FF (en hexadecimal) o de 0 a 11111111 (en binario). Las direcciones IP se pueden expresar como números de notación decimal: se dividen los 32 bits de la dirección en cuatro octetos. El valor decimal de cada octeto puede ser entre 0 y 255 (el número binario de 8 bits más alto es 11111111 y esos bits, de derecha a izquierda, tienen valores decimales de 1, 2, 4, 8, 16, 32, 64 y 128, lo que suma 255 en total). En la expresión de direcciones IPv4 en decimal se separa cada octeto por un carácter ".". Cada uno de estos octetos puede estar comprendido entre 0 y 255, salvo algunas excepciones. Los ceros iniciales, si los hubiera, se pueden obviar. Ejemplo de representación de dirección IPv4: 164.12.123.65 Hay tres clases de direcciones IP que una organización puede recibir de parte de la Internet Corporation for Assigned Names and Numbers (ICANN): clase A, clase B y clase C. En la actualidad, ICANN reserva las direcciones de clase A para los gobiernos de todo el mundo (aunque en el

50 de 63

24/07/2010 11:53 p.m.

se asignan los dos primeros octetos para identificar la red.16. Entre estos parámetros se encuentra la dirección IP del cliente.255.0. se asignan los tres primeros octetos para identificar la red.255. reservando el octeto final (8 bits) para que sea asignado a los hosts. El estándar RFC 2131 especifica la última definición de DHCP (marzo de 1997). DHCP sustituye al protocolo BOOTP. Por ejemplo un router necesita saber cuál es la red a la que pertenece la dirección IP del datagrama destino para poder consultar la tabla de encaminamiento y poder enviar el datagrama por la interfaz de salida.x.255.0. Por ejemplo la dirección 172.Base de Conocimiento http://www2. reservando los tres últimos octetos (24 bits) para que sean asignados a los hosts. Hay ciertas direcciones en cada clase de dirección IP que no están asignadas y que se denominan direcciones privadas. La dirección 0. para rodear el problema que las distribución por clases había estado gestando. DHCP apareció como protocolo estándar en octubre de 1993. La dirección que tiene su parte de host a unos sirve para comunicar con todos los hosts de la red en la que se ubica. Ventajas 51 de 63 24/07/2010 11:53 p. Las direcciones privadas pueden ser utilizadas por los hosts que usan traducción de dirección de red (NAT) para conectarse a una red pública o por los hosts que no se conectan a Internet.net/web/comunidad/base-de-conocimiento. Cada clase de red permite una cantidad fija de equipos (hosts).x se reservan para pruebas de retroalimentación. Las IP dinámicas son las que actualmente ofrecen la mayoría de operadores. Los dispositivos de red realizan un AND entre la dirección IP y la máscara para obtener la dirección de red a la que pertenece el host identificado por la dirección IP dada. En una red de clase B.255 (8 bits red.255. el empleado actualmente para la delegación de direcciones. una de clase B 255. 20 bits hosts) Uso universidades y grandes compañias Clase C: 192.255. se asigna el primer octeto para identificar la red. IP dinamica Una dirección IP dinámica es una IP asignada mediante un servidor DHCP (Dynamic Host Configuration Protocol) al usuario. 16 777 214 hosts.0. que pretende en líneas generales establecer una distribución de direcciones más fina y granulada. que es más antiguo. Se denomina dirección de red. 16 bits hosts) Uso de compañias medias y pequeñas ademas pequeños proveedores de internet(ISP) A partir de 1993. Hay dos direcciones de cada subred quedan reservadas: aquella que identifica la subred (campo host a 0) y la dirección para realizar broadcast en la subred (campo host a 1).0.2 (las direcciones reservadas de broadcast últimos octetos a 255 y de red últimos octetos a 0). y no necesitan conectividad externa. Las direcciones privadas se pueden utilizar junto con un servidor de traducción de direcciones de red (NAT) para suministrar conectividad a todos los hosts de una red que tiene relativamente pocas direcciones públicas disponibles.0 y el host al que se refiere es el 2. Por ejemplo. La dirección que tiene su parte de host a cero sirve para definir la red en la que se ubica. pasado se le hayan otorgado a empresas de gran envergadura como. En este caso crearíamos una subred que englobara las direcciones IP de éstos.2 dentro de la misma.1.0 a 192. es decir. Las direcciones 127.2. de manera que las direcciones privadas son ideales para ellas.x. En las redes de gran tamaño a menudo se usa TCP/IP. o 65 534 hosts.0. Mascara de una direccion IP La máscara permite distinguir los bits que identifican la red y los que identifican el host de una dirección IP. cualquier tráfico que posea una dirección destino dentro de uno de los intervalos de direcciones privadas no se enrutará a través de Internet.2.linuxparatodos.0 nos indica que los dos primeros bytes identifican la red (por ser una dirección de clase B).. muy pocas redes continúan usando BOOTP puro. se empezó a introducir el sistema CIDR.0. calculando las direcciones necesarias y "desperdiciando" las mínimas posibles.31.0. .1. reservando los dos octetos finales (16 bits) para que sean asignados a los hosts.0 y una de clase C 255.168. de modo que la cantidad máxima de hosts es 28 . La máscara se forma poniendo a 1 los bits que identifican la red y a 0 los bits que identifican el host. Según lo acordado. Las direcciones privadas también se pueden utilizar en una red en la que no hay suficientes direcciones públicas disponibles. Éstas suelen cambiar cada vez que el usuario reconecta por cualquier causa.1 con máscara 255. En una misma red no puede existir dos direcciones iguales.0. Este sistema es. Las direcciones privadas son: Clase A: 10.0 es utilizada por las máquinas cuando están arrancando o no se les ha asignado dirección. La IP que se obtiene tiene una duración máxima determinada. De esta forma una dirección de clase A tendrá como máscara 255.0. Un ejemplo de uso es cuando necesitamos agrupar todos los empleados pertenecientes a un departamento de una empresa.255 (16 bits red. Dada la dirección de clase A 10.. Debido a la compatibilidad retroactiva de DHCP.255.0. 24 bits hosts) Uso VIP EJ:La red militar norte-americana Clase B: 172. Hewlett Packard) y las direcciones de clase B para las medianas empresas. Se denomina dirección de bucle local o loopback.Certificación LPI 102 . de hecho. Creacion de Subredes El espacio de direcciones de una red puede ser subdividido a su vez creando subredes autónomas separadas.0. de modo que la cantidad máxima de hosts es 224 .168. los bancos pueden utilizar TCP/IP para conectar los cajeros automáticos que no se conectan a la red pública. Se denomina dirección de broadcast. El servidor DHCP provee parámetros de configuración específicos para cada cliente que desee participar en la red IP.0 a 172.m. el tercer byte identifica la subred (a 1 los bits en la máscara) y el tercero identifica el host (a 0 los bits correpondientes dentro de la máscara).0.255 (12 bits red. Para conseguirlo hay que reservar bits del campo host para identificar la subred estableciendo a uno los bits de red-subred en la máscara. pero sí se pueden repetir en dos redes privadas que no tengan conexión entre sí o que se sea a través de NAT. Muchas aplicaciones requieren conectividad dentro de una sola red. Se otorgan direcciones de clase C para todos los demás solicitantes. de modo que la cantidad máxima de hosts es 216 .2 sabemos que pertenece a la red 10. por ejemplo.2. ó 254 hosts. En una red de clase C.0 a 10.16.0. En una red de clase A.0. ante la previsible futura escasez de direcciones IPv4 debido al crecimiento exponencial de hosts en Internet.255.1.255.

a cualquier cliente que solicite una. utilizando normalmente el puerto de red 20 y el 21.Base de Conocimiento http://www2. Un bloque abarca desde 0000 hasta FFFF. cuando el servidor tiene a su disposición una tabla que empareja direcciones MAC con direcciones IP. Para listar el contenido de este fichero teclee lo siguiente: [BASH]# cat /etc/services FTP FTP (sigla en inglés de File Transfer Protocol . Una IP puede ser Privada ya sea dinámica o fija como puede ser IP Publica Dinámica o Fija. El proceso es transparente para el usuario y tiene un periodo de validez limitado. En el caso de la IP Privada generalmente es dinámica asignada por un servidor DHCP. Es más caro para los ISP puesto que esa IP puede no estar usándose las 24 horas del día.. aunque si se podría. creada manualmente por el administrador de la red.m. tomada de un rango prefijado por el administrador. Mucha gente confunde IP Fija con IP Publica e IP Dinámica con IP Privada. desde el login y password del usuario en el servidor hasta la transferencia de cualquier archivo. Su representación suele ser hexadecimal y para la separación de cada par de octetos se emplea el símbolo ":". Asignacion de direcciones IP Dependiendo de la implementación concreta. Esto permite al usuario montar servidores web.. si esta cambiara (fuera dinámica) seria más complicado controlar estos privilegios (pero no imposible) Las IP Publicas fijas actualmente en el mercado de acceso a Internet tienen un coste adicional mensual.linuxparatodos. Para solucionar este problema son de gran utilidad aplicaciones como scp y sftp. independientemente del sistema operativo utilizado en cada equipo. Algunas reglas acerca de la representación de direcciones IPv6 son: Los ceros iniciales. etc. Sólo clientes con una dirección MAC válida recibirán una dirección IP del servidor. Está compuesta por 8 segmentos de 2 bytes cada uno. donde el servidor DHCP asigna permanentemente una dirección IP libre. Ejemplo: 2001:0:0:0:0:0:0:4 -> 2001::4. el equivalente a unos 3. ya que todo el intercambio de información. Desde un equipo cliente se puede conectar a un servidor para descargar archivos desde él o para enviarle archivos. el servidor DHCP tiene tres métodos para asignar las direcciones IP: manualmente.4x1038 hosts direccionables. Direcciones IPv6 La función de la dirección IPv6 es exactamente la misma a su predecesor IPv4. pero dentro del protocolo IPv6.Certificación LPI 102 . Desventajas Obliga a depender de servicios que redirigen un host a una IP. como en IPv4. puesto que el usuario no puede conseguir otra IP. se pueden obviar. automáticamente. Estas IP son asignadas por el usuario después de haber recibido la información del proveedor o bien asignadas por el proveedor en el momento de la primera conexión. el único método que permite la reutilización de direcciones IP. .net/web/comunidad/base-de-conocimiento. Una IP Publica se utiliza generalmente para montar servidores en internet y necesariamente se desea que la IP no cambie por eso siempre la IP Publica se la onfigura de manera Fija y no Dinámica. pero en algunos casos se configura IP Privada Fija para poder controlar el acceso a internet o a la red local. El Servicio FTP es ofrecido por la capa de Aplicación del modelo de capas de red TCP/IP al usuario. Desventajas Son más vulnerables al ataque. Ejemplo no válido: 2001:0:0:0:2:0:0:1 -> 2001::2::1 (debería ser 2001::2:0:0:1 ó 2001:0:0:0:2::1). basado en la arquitectura cliente-servidor. se realiza en texto plano sin ningún tipo de cifrado.Protocolo de Transferencia de Archivos) en informática. acceder al servidor. otorgando ciertos privilegios dependiendo del número de IP que tenemos. Reduce los costos de operación a los proveedores de servicios internet (ISP). Esta operación sólo se puede hacer una vez. dinámicamente. es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP. Ejemplo: 2001:0123:0004:00ab:0cde:3403:0001:0063 -> 2001:123:4:ab:cde:3403:1:63 Los bloques contiguos de ceros se pueden comprimir empleando "::". incluidas en el paquete SSH. pero no la máxima seguridad. Ventajas Permite tener servicios dirigidos directamente a la IP. Fichero /etc/services El fichero /etc/services contiene una lista de todos los puertos que GNU/Linux utiliza. Un problema básico de FTP es que está pensado para ofrecer la máxima velocidad en la conexión. y dirigir un nombre de dominio a esta IP sin tener que mantener actualizado el servidor DNS cada vez que cambie la IP como ocurre con las IP Publica dinámica. correo. FTP. Reduce la cantidad de IP´s asignadas (de forma fija) inactivas. IP fija Una dirección IP fija es una IP asignada por el usuario de manera manual. que suman un total de 128 bits. o apropiarse de los archivos transferidos. con lo que un posible atacante puede capturar este tráfico. La ventaja con respecto a la dirección IPv4 es obvia en cuanto a su capacidad de direccionamiento. El administrador de la red asigna un rango de direcciones IP para el DHCP y cada ordenador cliente de la LAN tiene su software de comunicación TCP/IP configurado para solicitar una dirección IP del servidor DHCP cuando su tarjeta de interfaz de red se inicie. que permiten transferir archivos pero 52 de 63 24/07/2010 11:53 p.

174.l.20.232.9.86 (64.84 (64. Estas herramientas (traceroute y tracert) son órdenes ejecutables en una consola en modo texto. que sirve para acceder mediante una red a otra máquina.cantv. Muchas veces se utiliza para medir la latencia o tiempo que tardan en comunicarse dos puntos remotos.conf Traceroute Traceroute es una herramienta de diagnóstico de redes que permite seguir la pista de los paquetes que van desde un host (punto de red) a otro. que se utiliza en las redes ATM (como puede ser una simple ADSL instalada en casa) y. El campo TTL es un número entero que es decrementado por cada nodo por el que pasa el paquete.net (144. Dig Dig es una herramienta (linea de comandos) disponible en prácticamente cualquier distribución linux que te permite hacer consultas a un servidor dns.Certificación LPI 102 . el TTL vale 2.245.68 (216.43. Existe otro tipo.google.174. 64 hops max. sino que el nodo que lo esté manejando en ese momento lo descartará.1) 23 ms 23 ms 22 ms 38 ms 43 ms 93 ms 51 ms 43 ms 93 ms 95 ms 103 ms 93 ms 38 ms 38 ms 38 ms 94 ms 94 ms 104 ms 104 ms 37 ms 93 ms 95 ms 10.232.43.16. Para que la conexión funcione.14.google.233. para manejarla remotamente como si estuviéramos sentados delante de ella.net (200.223.Base de Conocimiento http://www2. Tracert usa esta respuesta para averiguar la dirección IP del nodo que desechó el paquete.sprintlink.44.84) 104 ms 106 ms 105 ms 107 ms 99 ms 100 ms 106 ms * 110 ms 109 ms * yo-in-f99.66. .169.239.14. Telnet Telnet (TELecommunication NETwork) es el nombre de un protocolo de red (y del programa informático que implementa el cliente). los tres tiempos siguientes son el tiempo de respuesta para los paquetes enviados (un asterisco indica que no se obtuvo respuesta).net (144.233) sl-crs1-mia-0-4-0-0.border. La segunda vez que se manda un paquete. Lo que hace tracert es mandar paquetes a la red de forma que el primer paquete lleve un valor TTL=1. Ping La utilidad ping comprueba el estado de la conexión con uno o varios equipos remotos por medio de los paquetes de solicitud de eco y de respuesta de eco (ambos definidos en el protocolo de red ICMP) para determinar si un sistema IP específico es accesible en una red. Configuracion de los parametros de Red Configuracion de interfaces de Red 53 de 63 24/07/2010 11:53 p. devolviendo de nuevo un mensaje de control. debido a la existencia en la red de un bucle cerrado en la ruta).233. se utiliza entre los aficionados a los juegos en red el término PING para referirse al lag o latencia de su conexión.google.99). dirección IP que toma del archivo resolv.233. por lo que pasará el primer nodo y llegará al segundo.net/web/comunidad/base-de-conocimiento. el primer paquete será eliminado por el primer nodo al que llegue (ya que éste nodo decrementará el valor TTL.conf.21) 103 ms 103 ms 98 ms 105 ms 104 ms 103 ms * 103 ms 103 ms 97 ms 64. donde será descartado.50) sl-bb20-mia-5-0-0. las tramas que se transmiten son ATM (nivel 2 del modelo OSI). Esto se hace de forma sucesiva hasta que el paquete llega a su destino. Esta herramienta se llama traceroute en UNIX y GNU/linux.232. llegando a cero).14.236.com traceroute to www.223.net (144.linuxparatodos.m.com (64.48) sl-st20-atl-1-0-0.48. que será el primer nodo de la red.sprintlink.86) 216. la máquina a la que se acceda debe tener un programa especial que reciba y gestione las conexiones. y por ello. De esta forma. como en todos los servicios de Internet.68) 72.cantv.234) 64..44. cifrando todo el tráfico. Cuando un nodo elimina un paquete. posteriormente viene el nombre y la dirección IP del nodo por el que pasa. El puerto que se utiliza generalmente es el 23.133) 144. Ping ATM.21 (72. en este caso. cuando el campo TTL llega al valor 0 ya no se reenviará más.233.183.233.1 (172.48.com (64.gw. etc.47.sprintlink. y en sistemas GNU/Linux en /etc/resolv.16.232. lo que viene a ser una estimación de la distancia a la que están los extremos de la comunicación.18.127. 40 byte packets 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 * * * 172.127. Tracert utiliza el campo Time To Live (TTL) de la cabecera IP.47.198) 51 ms 95 ms sl-st21-mia-14-1-0. Este tipo de paquetes se envían para probar si los enlaces ATM están correctamente definidos.net (144. Dig precisa conocer la dirección IP de un servidor DNS al que consultar por defecto.174. envía al emisor un mensaje de control especial indicando una incidencia.233.236.200) 72. De esta forma.sprintlink.248) sl-crs1-atl-0-0-0-1.200 (72.net (144.223.239.234 (144. Es útil para diagnosticar los errores en redes o enrutadores IP. Este campo sirve para que un paquete no permanezca en la red de forma indefinida (por ejemplo..232.183.net (200. mientras que en Windows se llama tracert.99) Funcionamiento El número de la primera columna es el número de salto.232.2.sprintlink.229) [MPLS: Label 1479 Exp 0] cnt-00-tge1-0-0.66.169. Ejemplo: [BASH]# traceroute www.85) cri-00-pos1-0-0.174. el segundo un TTL=2.14.229 (10. Se obtiene además una estadística del RTT o latencia de red de esos paquetes.

Ifcfg-wlanN.net www.Equipo alias Las modificaciones realizadas en este archivo de configuración son reflejados inmediatamente Nota: Este archivo se encuentra la dirección de loopback (127.10 192.ejemplo. El archivos hosts solo permite hasta 3 servidores de nombre diferentes Define el nombre de dominio local en el cual pertenecen los equipos en una red local.0. ifcfg-pppN..0. dependiendo del numero de interfaces de red instaladas en el computadora será el numero de archivos de configuración. FORWARD_IPV4Habilita el reenvío de paquetes. . La configuración de la interfaz es importante en un servidor o equipo de escritorio.conf Este archivo de configuración contiene la direcciones IP de los servidores DNS. dhcp Obtiene los parámetros de red por medio de un servidor de DHPC| IPADDR NETMASK NETWORK Define la dirección IP asignada a ese dispositivo. Este archivo especifica las direcciones IP de los servidores DNS Este archivo de configuración es utilizado para definir las características de red deseadas Estos archivos de configuración son utilizados para especificar la configuración de la tarjeta de red. Los parámetros que admiten los archivos de configuración de la interfaz de red Ethernet son los siguientes: DEVICE Define el nombre del dispositivo físico BOOTPROTOnone No utiliza ningún protocolo de arranque.m.1)..net www..249. . esta dirección es utilizada por varias aplicaciones para su funcionamientos. ifcfg-eth1. Este parámetro define la lista de búsqueda nombres de equiposes útil cuando se busca un equipo dentro de la red local por un nombre corto Este parámetro indica la preferencia de los nameserver definidos localhost.linuxparatodos..168. el cual debe de tener la forma del Fully Qualified Domain Name (FQDN).red. . Los principales archivos de configuración son Este archivo de configuración contiene los nombres de equipos dentro de una red local y se utilizar para resolver su /etc/hosts /etc/resolv.0..redfactor.1.1 192. el nombre de estos archivos depende del tipo de dispositivo Ethernetifcfg-eth0. HOSTNAME GATEWAY Define el nombre del equipo.. Modem ifcfg-ppp0.. Por ejemplo: equipo.Certificación LPI 102 . Wi-Fi ifcfg-wlan0. se recomienda que no modifique esta linea. Los valores que admite son yes o no. en donde N representa el numero de interfaz a configurar.conf /etc/sysconfig/network /etc/sysconfig/network scripts/ifcfg-<interfaz> nombre cuando no se tiene un servidor de DNS en la red local.0.13 207. Sus parámetros de configuración son: nameserver domain search sortlist Define las direcciones IP de los servidores de nombre en los cuales se deberán resolver las búsquedas. Configuracion del archivo /etc/hosts Este archivo de texto asocia las direcciones IP con el nombre del equipo (hostname). .1.Del. Define el segmento de red 54 de 63 24/07/2010 11:53 p.168.. Ejemplo: 127.net/web/comunidad/base-de-conocimiento.linuxparatodos. Define la mascara de red. también este archivo define la dirección de loopback que representa al propio equipo independientemente de la dirección IP que se le haya asignado.0. ifcfg-ppp1. Este archivo debe tener la siguiente forma: Direccion IP nombre..factor. ifcfg-ethN.40 Configuracion del archivo /etc/resolv. static Se define de forma manual los parámetros de red.net localhost mail www Configuracion del archivo /etc/sysconfig/network Los parámetros que utiliza este este archivo son: Los valores que admites son: NETWORKING yes Permite la configuración de los servicio de red.. no No permite la configuración de los servicio de red.Base de Conocimiento http://www2.. ifcfg-wlan1.localdomain mail.net Este parametro define la dirección IP del Gateway Configuracion de la interfaz de red El directorio de configuración de la interfaz de red se encuentra en: /etc/sysconfig/network-scripts/ Dentro de este directorio se encuentran los archivos de configuración de los dispositivos.

DNS2 DHCP_HOSTNAME Define el dirección MAC del dispositivo de red.0 GATEWAY=192. Aunque todo el código fuente del SSH original también está disponible.2. usando como base al protocolo SSH. Este proyecto es liderado actualmente por Theo de Raadt quien actualmente es fundador y líder de proyectos como OpenBSD.net/web/comunidad/base-de-conocimiento.168. Una clave RSA (Sistema Criptografico con Clave Publica) es un algoritmo que genera un par de llaves de autenticacion.. de esta manera si usted se encuentra trabajando bajo algún ambiente gráfico.Nivel de Transporte 5.255. por otra parte si usted se encuentra trabajando bajo linea de comandos no tendrá que hacer nada.255. De manera predeterminada.0 NETWORK=192..168.Nivel de Internet 4. El protocolo SSH (Secure Shell) esta implementado bajo el estándar TCP/IP. Además de la conexión a otros equipos.linuxparatodos. sea KDE o GNOME le pedimos abra una terminal de BASH. lo cual es debido a la conocida reputación de los desarrolladores de OpenBSD por crear código limpio y perfectamente auditado.254 DNS1=192.2. Los desarrolladores de OpenSSH aseguran que este es más seguro que el original. Su seguridad también es atribuible al hecho de que su código fuente se distribuya libremente con una licencia BSD. La publica se distribuye en forma autenticada y la privada que generalmente es guardada en secreto por el propietario. la publica y la privada. Utilice esta opción si el servidor DHCP requiere que el cliente especifique el nombre de su equipo antes de recibir una dirección IP. gestionar claves RSA para no escribir claves al conectar a las máquinas y pasar los datos de cualquier otra aplicación por un canal seguro tunelizado mediante SSH. DEVICE=eth0 BOOTPROTO=static IPADDR=192.Certificación LPI 102 .10 NETMASK=255.Nivel Físico 2. estas son: SCP SFTP Estas herramientas en realidad tienen la misma función de copiado solo se diferencian en la forma en como son aplicadas tema del cual hablaremos mas adelante.2. . el cual a su vez se encuentra dividido en 5 secciones: 1.Base de Conocimiento http://www2. existen restricciones con respecto a su uso y distribución. lo que convierte a OpenSSH en un proyecto mucho más atractivo a la hora de atraer nuevos desarrolladores. Además de la conexión a otros equipos. nos referimos a la capa de aplicación La capa de aplicación es el nivel que los programas más comunes utilizan para comunicarse a través de una red con otros programas. Define la Dirección IP del Gateway en la red Establece si el dispositivo debe activarse con los servicios de red Define la direcciones de los servidores DNS primario y secundario a utilizar.m.Nivel de Aplicación Por lo que el protocolo SSH esta ubicado en la quinta capa del modelo TCP/IP. HWADDR GATEWAY ONBOOT DNS1. Los procesos que acontecen en este nivel son aplicaciones específicas que pasan los datos al nivel de aplicación en el formato que internamente use el programa y es codificado de acuerdo con un protocolo estándar.1 HWADDR= 00:1E:EC:6E:CD:51 Tareas de Administracion de Seguridad El Protocolo SSH El protocolo SSH (Secure Shell) es una herramienta que nos permite conectarnos a equipos remotos (Servidores en Producción) así mismo.2. Los paquetes a descargar son los siguientes: openssh openssh-clients openssh-server La forma en que se instalaran estos paquetes sera tecleando en consola lo siguiente: 55 de 63 24/07/2010 11:53 p. Instalando OpenSSH A partir de este punto empezaremos a descargar los paquetes necesarios para el perfecto funcionamiento de openSSH. openSSH nos permite copiar datos de forma segura mediante la implementación de dos herramientas proporcionadas por openSSH. Se recomienda que modificar el valor de este parámetro. Esta opción establece un nombre al equipo. SSH nos permite copiar datos de forma segura. lo que contribuye a que sea más seguro. activar o apagar servicios. Ejemplo del archivo de configuración.168. nos da la capacidad de llevar a cabo tareas administrativas dentro del mismo como. el protocolo SSH atiende peticiones por el puerto 22 En este capitulo haremos uso de OpenSSH la cual es la alternativa libre y abierta al programa propietario SSH Acerca de OpenSSH OpenSSH (Open Secure Shell) es un conjunto de aplicaciones que permiten realizar comunicaciones cifradas a través de una red.Nivel De Enlace 3.168.

linuxparatodos..m. [root@ localhost ] # yum install -y openssh openssh-clients openssh-server Una vez finalizado el proceso de instalación pasaremos con las configuraciones propias de openSSH.Base de Conocimiento http://www2. esto es algo que conocen todos nuestros posibles atacantes . ssh_host_dsa_key. En este ejemplo usaremos el 34765.. así que usted puede elegir el que quiera. por lo que tendrá que editar el parámetro Port del fichero de configuración el cual deberá quedar así: 56 de 63 24/07/2010 11:53 p. scp y sftp) y otro orientado completamente al servidor.pub La clave pública RSA usada por ssh para la versión 1 del protocolo SSH. Blindando el fichero sshd_config Este fichero lo podrá localizar en en la siguiente ruta /etc/ssh/ El siguiente paso sera abrir el fichero con la ayuda del editor de textos VI [root@ localhost #] vi /etc/ssh/sshd_config A partir de este punto comenzaremos a blindar SSH Cambiando el puerto por defecto SSH tiene asignado por defecto el puerto 22. Cuando un cliente se conecta al servidor. por lo que es una buena idea cambiarlo. La clave privada RSA usada por ssh para la versión 1 del protocolo SSH. es por ello que le enseñaremos la manera apropiada en la que deberá ser configurado este vital fichero. identity. known_hosts Este archivo contiene las claves de host DSA de los servidores SSH a los cuales el usuario ha accedido. La clave pública DSA del usuario La clave RSA privada usada por ssh para la versión 2 del protocolo SSH. ya que si no se llegaran a configurar apropiadamente estos ficheros la vulnerabilidad de nuestro servidor seria demasiado sensible a ataques informáticos.pub ssh_host_rsa_key El archivo de configuración del sistema cliente SSH por defecto. La clave privada RSA usada por el demonio sshd para la versión 2 del protocolo SSH. Para modificar esta opción y las siguientes que iremos mencionando editaremos el fichero de configuración shd_config. nos referimos a los ficheros de configuración Archivos de configuración de OpenSSH OpenSSH dispone de dos conjuntos diferentes de ficheros de configuración: uno completamente dedicado al cliente (ssh. . Este archivo es muy importante para asegurar que el cliente SSH está conectado al servidor SSH correcto Configuración de fichero sshd_config La función que desempeñan los ficheros de configuración de openSSH son de vital importancia para la seguridad de nuestro servidor . La clave pública RSA usada por ssh para la versión 2 del protocolo SSH. Archivos de configuración del lado del cliente La ubicación de los ficheros referentes al cliente se encuentran almacenados en el directorio de trabajo de cada usuario: Ejemplo: “/home/usuario/” Dentro del directorio podemos encontrar los siguientes ficheros de configuración: authorized_keys id_dsa id_dsa. Se recomienda usar un puerto cualquiera por encima del 1024.pubLa clave pública DSA usada por el demonio sshd ssh_host_rsa_key. Archivos de configuración del lado del servidor La ubicación de los ficheros de configuración referentes al servidor openSSH se encuentran en la siguiente ruta: /etc/ssh/ Dentro del directorio podemos encontrar los siguientes ficheros de configuración: Contiene grupos Diffie-Hellman usados para el intercambio de la clave Diffie-Hellman que es imprescindible para la moduli construcción de una capa de transporte seguro. el servidor autentica al cliente chequeando su clave pública firmada almacenada dentro de este archivo. Contiene la clave privada DSA del usuario.pub La clave pública RSA usada por el demonio sshd para la versión 2 del protocolo SSH.pub identity Este archivo contiene una lista de claves públicas autorizadas.pub id_rsa id_rsa. La clave pública RSA usada por el demonio sshd para la versión 1 del protocolo SSH. ssh_config sshd_config ssh_host_dsa_key ssh_host_key ssh_host_key. Este valor se usa para proporcionar la autenticación del host.Certificación LPI 102 . Cuando se intercambian las claves al inicio de una sesión SSH. se crea un valor secreto y compartido que no puede ser determinado por ninguna de las partes individualmente.net/web/comunidad/base-de-conocimiento. Este archivo se sobrescribe si hay alguno ya presente en el directorio principal del usuario El archivo de configuración para el demonio sshd La clave privada DSA usada por el demonio sshd La clave privada RSA usada por el demonio sshd para la versión 1 del protocolo SSH. que por defecto se encuentra en el directorio /etc/ssh/.

Activando el modo estricto La opción StrictModes debe activarse para que. Para llevar a cabo estos cambios tendrá que editar el parámetro StrictModes del fichero de configuración el cual deberá quedar de la siguiente manera: # Authentication: Uncommented options change a 57 de 63 24/07/2010 11:53 p. los usuarios que establecen permisos de escritura para todos en sus ficheros y directorios no se lleven una desagradable noticia cuando otro usuario los modifique. estas son: Versión 1 Versión 2 La versión 1 de openSSH hace uso de varios algoritmos de cifrado de datos mas sin embargo. por ejemplo. algunos de estos algoritmos han dejado de ser mantenidos por sus creadores y por lo tanto presenta serios huecos de seguridad que potencialmente permite a un intruso insertar datos en el canal de comunicación. en este caso después de dos intentos.linuxparatodos. # default value. se perderá o cerrará la conexión.. Con esto siempre tendremos que ingresar como un usuario normal y ya estando adentro entonces mediante un su – cambiarnos a la cuenta de root. but leave them commented. estableciendo un número máximo de intentos de conexión lograremos que sus intentos por entrar a nuestro servidor sean disuadidos. pero con solo dos intentos por vez. es totalmente posible volver a intentarlo.0. Prácticamente la mayoría de sistemas operativos Linux crean por defecto al usuario root .m. Para llevar a cabo estos cambios tendrá que editar el parámetro PermitRootLogin del fichero de configuración el cual deberá quedar de la siguiente manera: # Authentication: #LoginGraceTime 2m PermitRootLogin no #StrictModes yes #MaxAuthTries 6 Definiendo un número máximo de intentos de conexión Muchos de los ataques llevados a cabo por piratas informáticos se basan en fuerza bruta.Base de Conocimiento http://www2. por lo que tendrá que editar el parámetro Protocol del fichero de configuración el cual deberá quedar así: # Disable legacy (protocol version 1) support in the server for new # installations. es por ello que la mayoría de los ataques informáticos se concentran en atacar al equipo a través de la cuenta de root y mucho mas si la cuenta tiene asignada una contraseña débil Una manera de deshabilitar el logeo al sistema a través de la cuenta de root es poner en 'no' la variable PermitRootLogin . Port 34567 #AddressFamily any #ListenAddress 0. Claro. ..0. Para llevar a cabo estos cambios tendrá que editar el parámetro MaxAuthTries del fichero de configuración el cual deberá quedar de la siguiente manera: # Authentication: #LoginGraceTime 2m PermitRootLogin no #StrictModes yes MaxAuthTries 2 El número 2 indica la cantidad de veces que podemos equivocarnos al ingresar el usuario y/o contraseña. # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible.net/web/comunidad/base-de-conocimiento.Certificación LPI 102 . basta con indicar que solo admita comunicaciones de ssh basadas en el protocolo 2.0 #ListenAddress :: Desactivando el Protocolo 1 Hay dos versiones de ssh en cuanto a su protocolo de comunicación. con esto el usuario root no tendrá permiso de acceder mediante ssh y por lo tanto cualquier intento de ataque directo a root será inútil. Para evitar el uso del protocolo 1 y sus posibles ataques a este. de esta manera se protege la información de los usuarios. In future the default will change to require explicit # activation of protocol 1 Protocol 2 Deshabilitando el acceso a root Este es quizá el parámetro mas importante de seguridad que podemos indicar para blindar nuestro servidor.

.net/web/comunidad/base-de-conocimiento. condrestartReinicio Condicional. o no queremos que los usuarios se conecten a él.linuxparatodos. de esta manera cuando el equipo arranque. detener o reiniciar el servidor openSSH Llegado a este punto usted ya deberá contar con las configuraciones de seguridad apropiadas. detener.Certificación LPI 102 .-La diferencia con reload radica en que al ejecutar un restart este mata todos los procesos relacionado con el servicio y los vuelve a generar de nueva cuenta Recarga el servicio. o peor aun. Para llevar a cabo estos cambios tendrá que editar el parámetro LoginGraceTime del fichero de configuración el cual deberá quedar de la siguiente manera: # Authentication: LoginGraceTime 30 PermitRootLogin no StrictModes yes MaxAuthTries 2 Iniciar. por lo que podría entenderse que hace el cambio en caliente. por lo que solo faltaría iniciar el servicio de SSH.-La diferencia con restart radica en que al ejecutar un reload este solamente carga las actualizaciones hechas al reload fichero de configuración del servicio sin necesidad de matar los procesos relacionados con el mismo.Base de Conocimiento http://www2. recargar o conocer el status en el que se encuentra el servicio. Aprendiendo a utilizar openSSH En esta parte del capitulo le enseñaremos a: 58 de 63 24/07/2010 11:53 p. . si no lo hace. evitando así dejar por tiempo indeterminado pantallas de login sin que nadie las use. status Da a conocer el estado en el que se encuentra el servicio Anexando el servicio de SSH al arranque del servidor Para añadir el servicio de SSH al arranque del servidor solo tendrá que teclear en consola y como root lo siguiente: [root@ localhost ]# chkconfig sshd on Esto es útil cuando por motivos ajenos a usted se reinicia el servidor. Para iniciar el servicio de SSH tendrá que teclear en consola y como root lo siguiente: [root@ localhost ]# /etc/init.Solamente se inicia si el servicio se encuentra ejecutándose. Estas opciones pueden ser consultadas en la siguiente tabla: start stop restart Inicia el servicio Detiene el servicio Reinicia el servicio. #LoginGraceTime 2m PermitRootLogin no StrictModes yes MaxAuthTries 2 Impidiendo la conexión al servidor gráfico Si nuestro servidor no tienen entorno gráfico instalado. que alguien este intentando mediante un script varias veces el adivinar un usuario y contraseña. Si somos el único usuario del sistema considero que con 20 o 30 segundos es mas que suficiente.. definiremos esta opción en el fichero de configuración: Para llevar a cabo estos cambios tendrá que editar el parámetro X11Forwarding del fichero de configuración el cual deberá quedar de la siguiente manera: # Accept locale-related environment variables AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL #AllowTcpForwarding yes #GatewayPorts no #X11Forwarding yes Limitando el tiempo para autenticarse con SSH El número indica la cantidad de segundos en que la pantalla de login estará disponible para que el usuario capture su nombre de usuario y contraseña. el login se cerrará.m.d/sshd start Igualmente existen opciones ya sea para reiniciar.. automáticamente levantara el servicio de SSH sin necesidad de levantarlo manualmente después.

.. .-Por ultimo. de otra forma nunca lo descargara. en cambio SFTP nos deja navegar entre las carpetas lo cual hace mas sencillo la ubicación del recurso que deseamos copiar. La única desventaja que presenta SCP es que únicamente permite la transferencia de archivos (descarga y subida de ficheros).25. para descargar una carpeta tendrá que seguir la siguiente sintaxis: [root@ localhost ]#scp -P[puertoDeEscucha] -r usuarioRemoto@ipDelServidorRemoto:rutaDelDirectorioRemoto 59 de 63 24/07/2010 11:53 p.-Para conectarnos al servidor remoto habrá que especificar el puerto de escucha. solo deberá especificar el puerto por el cual requiere autenticarse al servidor.d/httpd restart 5. o también conocido como Terminal.60 closed.249. solo deberá especificar el puerto por el cual requiere autenticarse al servidor. carpetas o ficheros radica en que para SCP tenemos que conocer exactamente donde se encuentra el recurso que queremos copiar.m. La diferencia en utilizar SCP (Shell ) y SFTP (Security File Transfer Protocol) para copiar archivos.249. para ello nos ha proporcionado los siguientes datos: IP del servidor remoto -> 207.25. La sintaxis para llevar a cabo esta operación es la siguiente: [root@ localhost ]# ssh usuarioRemoto@ipDelServidorRemoto En caso de haber establecido un puerto de escucha distinto al puerto 22. Ejemplo [root@ localhost ]# ssh -p[puertoDeEscucha] usuarioRemoto@ipDelServidorRemoto Ejemplo 1: La empresa Factor Integración para la cual trabajamos.net/web/comunidad/base-de-conocimiento.-Para salir del SSH solo basta teclear “exit” [root@ web ]# exit Connection to 207.-El siguiente paso sera teclear la contraseña del usuario remoto 3. solo bastara reiniciar el servidor de apache [root@ web ]# /etc/init.Base de Conocimiento http://www2. ficheros o carpetas desde un equipo remoto hacia nuestro equipo existen dos maneras: Mediante el uso del comando SCP Mediante el uso del comando SFTP Copiando ficheros a través de SCP (Shell Secure Copy) Es un medio de transferencia segura de archivos entre un equipo local y uno remoto haciendo uso del protocolo Open Secure Shell (openSSH). Conectarse a un equipo remotamente a través de SSH Copiar archivos o carpetas desde un equipo remoto Enviar archivos o carpetas a un equipo remoto Conectándose a un equipo remoto a través de SSH Para establecer una conexión con un servidor SSH remoto desde Centos haremos uso del Bash.-Una vez dentro del servidor remoto nos logearemos ahora si como “root” [adminlog@ web ]# su Contraseña: xxxxxxxxxxxxxxxxxx [root@ web ]# 4. nos ha pedido reiniciar el servicio de apache .linuxparatodos. el usuario remoto y la IP del servidor remoto (Recuerde que no esta permitido conectarse como root desde SSH) 2.60 Nombre del usuario remoto -> adminlog Puerto de autenticacion -> 34765 Solución: 1. Ejemplo: [root@ localhost ]#scp -P[puertoDeEscucha] usuarioRemoto@ipDelServidorRemoto:rutaDelRecursoRemoto Aunado a esto. La sintaxis de SCP para llevar a cabo esta operación es la siguiente: [root@ localhost ]#scp usuarioRemoto@ipDelServidorRemoto:rutaDelRecursoRemoto En caso de haber establecido un puerto de escucha distinto al puerto 22. [root@ localhost ~] # _ Copiar u obtener archivos o carpetas desde un equipo remoto Para copiar archivos.Certificación LPI 102 .

" naturalmente siempre que usuario tenga permisos sobre la carpeta y su cuenta esté entre las de los que pueden hacer ssh.Base de Conocimiento http://www2. [root@ localhost]# sftp -o Port=[PuertoDeEscucha] usuarioRemoto@ipDelServidorRemoto El siguiente paso sera autenticarnos con la contraseña del usuario remoto Connecting to IPDelServidorRemoto. en pocas palabras.. el protocolo SFTP permite una serie de operaciones sobre archivos.linuxparatodos. para ello nos ha proporcionado los siguientes datos: IP del servidor remoto -> 207. o carpetas remotos. incluidas las subcarpetas y el contenido de éstas. . usuarioRemoto@IPDelServidorRemoto's password: xxxxxxxxxxxxxxxxxxxxxx Una vez dentro del servidor solo bastara ejecutar el comando “get” para descargar algún fichero o archivo. Escritura o de Ejecución a un fichero remoto rename rutaLocal rutaRemotaRenombra un un fichero remoto Ejemplo 3: La misma empresa. copia la carpeta y todo su contenido.60 Nombre del usuario remoto -> adminlog Puerto de autenticacion -> 34567 Ruta del Recurso Remoto -> /tmp/Conta Solución: Para poder hacer la copia desde servidor remoto habrá que especificar el puerto de escucha. Copiando ficheros a través de SFTP (Security File Transfer Protocol) El protocolo de transferencia de archivos SFTP es un protocolo que proporciona la transferencia de archivos y la funcionalidad de manipulación de los mismos Se utiliza normalmente con SSH a fin de asegurar la transferencia de archivos.. nos permite navegar directamente en el servidor remoto con el fin de localizar el recurso que deseamos descargar.. Lo anterior nos copiará la carpeta "/tmp/Conta" remota en el directorio actual ".60 Nombre del usuario remoto -> adminlog Puerto de autenticacion -> 34567 Ruta del Recurso Remoto -> /tmp/Conta Solución: 1. para ello nos ha proporcionado los siguientes datos: IP del servidor remoto -> 207. [root@ localhost]# sftp -o Port=[PuertoDeEscucha] usuarioRemoto@ipDelServidorRemoto Connecting to IPDelServidorRemoto. La sintaxis de SFTP para llevar a cabo esta operación es la siguiente: [root@ localhost]# sftp usuarioRemoto@ipDelServidorRemoto En caso de haber establecido un puerto de escucha distinto al puerto 22. usuarioRemoto@IPDelServidorRemoto's password: sftp> get recursoRemoto La siguiente tabla explica mas a detalle los comandos que pueden ser utilizados con SFTP: cd rutaRemota lcd rutaLocal chgrp grp rutaRemota chown own rutaRemota get rutaRemota rutaLocal lmkdir rutaLocal lpwd mkdir rutaRemota put rutaLocal rutaRemota pwd exit rmdir rutaRemota rm rutaRemota Cambia de directorio dentro del servidor remoto Cambia de directorio en el equipo local Cambia el grupo de trabajo de un fichero remoto.odt que se encuentra dentro la ruta “/tmp/Conta/” . el usuario remoto y 60 de 63 24/07/2010 11:53 p.25.249. El own tiene que ser un User ID Copia un recurso remoto en un equipo local Crea una carpeta en el equipo local Imprime la ruta local en la cual estamos trabajando Crea una carpeta en el equipo remoto Sube un fichero o archivo desde una ruta local hasta una ruta remota Imprime la ruta remota en la cual estamos trabajando Salimos de SFTP Borra una carpeta remota Borra un fichero remoto xxxxxxxxxxxxxxxxxxxxxx chmod opciones rutaRemotaCambia los permisos de Lectura. Factor Integración..-Para poder traer la copia desde servidor remoto hacia nuestro equipo habrá que especificar el puerto de escucha.249. solo deberá especificar el puerto por el cual requiere autenticarse al servidor. el usuario remoto. nos ha pedido copiar el fichero inventarioEnero. La opción "-r" significa recursivo. En comparación de capacidades con el anterior protocolo SCP. nos ha pedido copiar la carpeta de inventarios de la empresa la cual esta hospedada en un servidor remoto . que únicamente permite la transferencia de archivos... Ejemplo. El grp tiene que ser un Group ID Cambia el grupo de trabajo de un fichero remoto. ficheros. es decir. Factor Integración.m.net/web/comunidad/base-de-conocimiento. Ejemplo 2: La misma empresa.25. la IP del servidor remoto y la ruta (sin errores) del recurso remoto.Certificación LPI 102 .

-Dentro de la carpeta “Conta” aplicar el comando “dir” para visualizar el contenido de la misma sftp>dir inventarioEnero..html actualizacion5. solo deberá especificar el puerto por el cual requiere autenticarse al servidor.0KB/s 0.0KB/s 0.0KB/s 0.Nos pedirá autenticarnos con la contraseña del usuario remoto.Nos moveremos entre directorios con la ayuda del comando “cd” hasta estar ubicados en “/tmp/Conta” 5..249.html actualizacion7.Certificación LPI 102 .net/web/comunidad/base-de-conocimiento.el puerto de escucha.html actualizacion2.html actualizacion3.0KB/s 0.odt inventarioMarzo.249. la IP del servidor remoto y la ruta (sin errores) a donde se quiere enviar el directorio Luego de haber hecho esto nos pedirá autenticarnos con la contraseña del usuario remoto adminlog@207.linuxparatodos.Base de Conocimiento http://www2.odt 6. 61 de 63 24/07/2010 11:53 p. para subir una carpeta tendrá que seguir la siguiente sintaxis: [root@ localhost ]#scp -P[puertoDeEscucha] -r directorioLocal usuarioRemoto@ipDelServidorRemoto:rutaRemota Ejemplo 4: Se nos ha pedido subir una actualización referente a la pagina web de la empresa . Ejemplo [root@ localhost ]#scp -P[puertoDeEscucha] rutaDelRecursoLocal usuarioRemoto@ipDelServidorRemoto:rutaRemota Aunado a esto. en este caso la contraseña del usuario “adminlog” 3. solo deberá especificar el puerto por el cual requiere autenticarse al servidor.html actualizacion8.m.odt” dentro de la carpeta “home” de nuestro sistema Subir o enviar archivos o carpetas a un equipo remoto Para subir archivos. Ejemplo.25. para ello nos ha proporcionado los siguientes datos: IP del servidor remoto -> 207.60's password:xxxxxxxxxxxxx Al finalizar nos mostrara un ventana mostrando el progreso de cada copia hecha al servidor remoto como la que se muestra a continuación. ficheros o carpetas desde nuestro equipo hacia un equipo remoto existen dos maneras: Mediante el uso del comando SCP Mediante el uso del comando SFTP Enviando ficheros a través de SCP (Shell Secure Copy) La sintaxis de SCP para llevar a cabo esta operación es la siguiente: [root@ localhost ]#scp rutaDelRecursoLocal usuarioRemoto@ipDelServidorRemoto:rutaRemota En caso de haber establecido un puerto de escucha distinto al puerto 22.0KB/s 05:00 07:00 15:00 15:00 25:00 30:00 31:00 40:00 Enviando ficheros a través de SFTP (Security File Transfer Protocol) La sintaxis de SFTP para llevar a cabo esta operación es la siguiente: [root@ localhost]# sftp usuarioRemoto@ipDelServidorRemoto En caso de haber establecido un puerto de escucha distinto al puerto 22. . Actualizacion1.0KB/s 0. el usuario remoto.60 Nombre del usuario remoto -> adminlog Puerto de autenticacion -> 34567 Ruta del Servidor a donde se tiene que subir la información -> /tmp/Conta Solución: Para subir este directorio al servidor remoto habrá que especificar la ruta del directorio local.25.0KB/s 0. la IP del servidor remoto 2.html actualizacion4.-Con la ayuda del comando “get” descargaremos el fichero nombrado “inventarioEnero.html actualizacion6.odt inventarioFebrero..0KB/s 0.-Una vez autenticados con el servidor nos dará acceso a través de SFTP 4..html 100% 100% 100% 100% 100% 100% 100% 100% 0.

net/web/comunidad/base-de-conocimiento.m. El own tiene que ser un User ID Copia un recurso remoto en un equipo local Crea una carpeta en el equipo local Imprime la ruta local en la cual estamos trabajando Crea una carpeta en el equipo remoto Sube un fichero o archivo desde una ruta local hasta una ruta remota Imprime la ruta remota en la cual estamos trabajando Salimos de SFTP xxxxxxxxxxxxxxxxxxxxxx chmod opciones rutaRemotaCambia los permisos de Lectura.-Dentro de la carpeta “Conta” aplicar el comando “lpwd” para verificar la ruta en la cual estamos ubicados localmente sftp> lpwd Local working directory: /home/juanito 6....Por ultimo teclee la palabra exit para salir del “SFTP” sftp> exit [root@localhost ]# 0 archivos adjuntos 384 Accesos 62 de 63 24/07/2010 11:53 p. usuarioRemoto@IPDelServidorRemoto's password: xxxxxxxxxxxxxxxxxxxxxx Una vez dentro del servidor solo bastara ejecutar el comando “put” para descargar algún fichero o archivo.60 Nombre del usuario remoto -> adminlog Puerto de autenticacion -> 34567 Ruta del Servidor a donde se tiene que subir la información -> /tmp/Conta Solución: 1.. en este caso la contraseña del usuario “adminlog” 3.. el usuario remoto y la IP del servidor remoto 2. Escritura o de Ejecución a un fichero remoto rename rutaLocal rutaRemotaRenombra un un fichero remoto rmdir rutaRemota rm rutaRemota Borra una carpeta remota Borra un fichero remoto Ejemplo 5: Se nos ha pedido subir una actualización referente a la pagina web de la empresa .Base de Conocimiento http://www2.linuxparatodos.Certificación LPI 102 .-Una vez autenticados con el servidor nos dará acceso a través de SFTP 4.25. El grp tiene que ser un Group ID Cambia el grupo de trabajo de un fichero remoto. para ello nos ha proporcionado los siguientes datos: IP del servidor remoto -> 207.. pero esta vez sera usando SFTP.Nos moveremos entre directorios con la ayuda del comando “cd” hasta estar ubicados en “/tmp/Conta” 5. usuarioRemoto@IPDelServidorRemoto's password: sftp> put recursoLocal La siguiente tabla explica mas a detalle los comandos que pueden ser utilizados con SFTP: cd rutaRemota lcd rutaLocal chgrp grp rutaRemota chown own rutaRemota get rutaRemota rutaLocal lmkdir rutaLocal lpwd mkdir rutaRemota put rutaLocal rutaRemota pwd exit Cambia de directorio dentro del servidor remoto Cambia de directorio en el equipo local Cambia el grupo de trabajo de un fichero remoto..Cuando este ubicado en el directorio de trabajo que contiene la información que desea subir al servidor remoto teclee lo siguiente: sftp> put datosactuales El comando “put” tiene la funcionalidad de subir archivos desde una maquina local hasta un equipo remoto. .249. 8..Nos pedirá autenticarnos con la contraseña del usuario remoto... [root@ localhost]# sftp -o Port=[PuertoDeEscucha] usuarioRemoto@ipDelServidorRemoto Connecting to IPDelServidorRemoto..Para subir este directorio al servidor remoto habrá que especificar el puerto de escucha.-Si no se encuentra ubicado en el directorio de trabajo indicado cámbiese de directorio mediante el comando “lcd” sftp> lcd /home/juanito/datosActualizados lcd /home/juanito/datosActualizados 7. [root@ localhost]# sftp -o Port=[PuertoDeEscucha] usuarioRemoto@ipDelServidorRemoto El siguiente paso sera autenticarnos con la contraseña del usuario remoto Connecting to IPDelServidorRemoto.

Certificación LPI 102 .m...Base de Conocimiento http://www2. Promedio (0 Votos) 63 de 63 24/07/2010 11:53 p.net/web/comunidad/base-de-conocimiento.linuxparatodos. .