LPIC-1 Guia para certificacion

June 9, 2018 | Author: Pedro Vargas | Category: Linux Distribution, Fedora (Operating System), Ip Address, Transmission Control Protocol, Network Architecture
Report this link


Description

CLACarrera Linux Argentina www.carreralinux.com.ar Guía básica para preparar los examenes LPIC-101 LPIC-102 Temario Métodos de Instalación....................................................................................................................................12 Metodos de instalacion alternativos..........................................................................................................12 Instalacion desde CD o DVD......................................................................................................................12 Carpeta paquetes........................................................................................................................................12 Carpeta imagenes..................................................................................................................................12 Carpeta dosutils......................................................................................................................................13 Instalación desde un servidor HTTP........................................................................................................13 Configuracion de la instalacion HTTP.................................................................................................13 Instalacion desde un disco duro...........................................................................................................14 Configuracion de la instalacion desde disco duro........................................................................14 Disco de Rescate Linux.........................................................................................................................15 Comenzado con el Disco de Rescate Linux..................................................................................15 Arquitectura del Sistema ...........................................................................................................................16 Asignacion de recursos.........................................................................................................................16 Solicitudes de interrupcion (IRQ)....................................................................................................16 Direcciones de Entrada/Salida........................................................................................................16 Accesos Directos a Memoria (DMA)..............................................................................................16 Listado de asignacion de recursos...........................................................................................................17 lspci......................................................................................................................................................17 dmesg..................................................................................................................................................17 Soporte USB............................................................................................................................................17 Dispositivos SCSI...................................................................................................................................18 El canal SCSI.....................................................................................................................................18 El numero ID del dispositivo............................................................................................................18 Numero de unidad logica.................................................................................................................18 Deteccion de dispositivos SCSI......................................................................................................18 Tarjetas de Red......................................................................................................................................19 Configuracion de impresoras................................................................................................................19 Tarjetas de Audio...................................................................................................................................19 OSS (Open Sound System)............................................................................................................19 ALSA (Advanced Linux Sound Architecture)................................................................................20 Identificando las tarjetas de audio..................................................................................................20 Administracion de tarjetas de audio...............................................................................................20 Conociendo el Arranque de Linux.............................................................................................................20 Sobre los Discos Duros.........................................................................................................................20 Tipos de Discos Duros...........................................................................................................................21 Discos Duros IDE-ATA=...................................................................................................................21 Discos Duros SATA..........................................................................................................................21 Discos Duros SCSI............................................................................................................................22 -3- ...........30 Nivel 0 –Parada Del Sistema.....................27 El Proceso de arranque...................................................................................................................................................................27 BSD......................................................................31 Comando chkconfig.....................................................................................................................................Configuracion de discos...................... deteniendo y reiniciando servicios................................. -Sin Uso..........................................33 Configuración de YUM ...........................................25 Dando formato a un disco duro con mkfs...............................................................................................................................................31 Nivel 6.............................................................................................................................................27 SystemV.............................36 Herramienta DPKG...........31 Nivel 4............................................................38 Manejo de comandos.............................. -Reinicio del Sistema.......................................................................................................................................................................................................................30 Nivel 2 -Multiusuario sin Red...... -Multiusuario Grafico....................................27 Niveles de Ejecucion en Linux.30 Niveles de Ejecucion...................31 Nivel 3 -Multiusuario con Red......................................................................................................................................................................................37 Herramienta APTITUDE............................................................................................local...............................................................................................................................................................................................................................................................................................................................36 Utilidades YUM..31 Manejo de Paquetes..................27 El Proceso INIT.............................33 Herramienta YUM..................28 El archivo rcN..............39 -4- ........................................................................................................................29 El archivo rc........31 Nivel 5...........................................................30 El archivo rc.................................................................23 Configuracion de Particiones........................................................24 Aplicaciones graficas para particionar discos duros...........25 Particionando un disco duro con fdisk.................................................32 Introduccion a la gestion e instalacion de software......................................................30 Nivel 1 o S -Monousuario o Single User.........................................................................................................................................................................................................................sysinit....................................................................................................31 Levantando............................................................................................................................................................................................................................29 El archivo inittab...............................................................................................................................................................................................................28 El archivo init......................................................25 Formatear y particionar discos duros desde BASH..........................d.............................................24 Gparted..............................................................................24 Parted Magic.................................................................................................................................................................................................................................................................................................................................................................................................................................................................d..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................25 Dando formato de bajo nivel con dd......................38 Herramienta APT...............................................................34 Extensiones de YUM..........................................................................32 Herramienta RPM....................................................................................................................................................................................................................................... ...............................................39 Algunas variantes del SHELL....................40 Rutas Relativas.............................................................................................................................................................................................................................41 Comodines.............. ......................................................................................................................................................................................39 Bourne Shell (sh).................................................................................................52 Mostrando estadisticas de un archivo............................40 Introduccion a BASH................................................................................................................................................................................................44 Ordenando lineas de un archivo con Sort...................................................41 El comando ls...................................................................................................................49 Ver el final de un archivo......Sobre SHELL.............................................................................................................................................................................................................................................................................................................................43 comando touch...............44 comando cat y cp .................40 Rutas (Paths).................................................................................... (punto a punto).....................................................40 Boune Again Shell (bash)........................................................................................................39 El Ambiente Linux..........................41 Entendiendo el ...................40 CShell (csh)...............................................................................54 -5- .......................................44 comando mv..................................................................................................40 Rutas Absolutas.............................................................42 El comando mkdir................................................................................................................................................................................................48 Borrando o sustituyendo caracteres........................................................................................................................................................51 Eliminando lineas repetidas en un archivo ............................................................52 Convirtiendo archivos para imprimir..........................................................................................................................................45 Segmentando un texto con Cut....40 Conociendo el SHELL de nuestro equipo....39 Korn Shell (ksh)...............................................................47 Formateando parrafos.............................................................................................................................................................................................48 Ver el inicio de un archivo...........................................................................................................................................53 Administracion de Archivos..................................................................44 Procesando cadenas de texto usando filtros....................................................................41 Usando los comandos de Linux....................................................................................53 Añadiendo numeros de linea a un archivo.........................................................................................................................................................................................................................................40 Usando el comando cd.......................................................................54 Listando el contenido de un directorio........................................................................................................44 Listando el contenido de un archivo...50 Segmentando un archivo............................................................................................................................................................................................................................................................................................................46 Pegando texto con Paste......................................................44 comando echo....................................................................................................................................................................................................50 Uniendo multiples archivos........................................................................................................................................................................................ (punto)............................................................................................................................................................................................................................................................................................................................41 Usando el .......................................................................... .......................................................................................................................................................................................................................................................................................................................................................61 Comando ps (process state)..................64 Utilizando fdisk..................................................................................................................................................................................................................................................................................71 Controlando el montaje y desmontaje del sistema de archivos..................................................................................................................71 Montando el sistema de archivos ..............................................................58 Creando......................................74 Establecer y consultar cuotas de disco.......................70 Comprobando la integridad del sistema de archivos........... monitorizando y matando procesos.....................................................................................................................73 Administrando cuotas de disco...61 Comando pstree y top.....................................................................................................................................................................................................77 edquota...................................................................................................................57 Moviendo Archivos..............................................................................................................74 Cuotas de Limitacion.............................................................................................................................................................................................................................................................................................................................58 Sobre procesos......................................................................................................70 Montando y desmontando sistemas de archivos...............................................................................................................58 Estados de un proceso............................................................................................................................................................................................................................................................................72 Desmontando el sistema de archivos.......................................................................................................68 Manteniendo la integridad de los sistemas de archivos..........................................................................................................................................................................................................................................................55 Copiando Archivos.......................................64 Sobre fdisk...............................................................................................................................................................................................................78 repquota..................................62 Finalizando un proceso........................................................................................75 quota...................76 quotaoff..................................................................................................................................................................59 Modelo de dos estados..............................................................................................................................79 -6- ...................................................................................60 Caracteristicas..................................Determinando el tipo de archivo.................................................71 Administrando la tabla del sistema de archivos......................................................................................56 Copiando y convirtiendo archivos con diferente formato...............................................69 Monitorizando el espacio y los inodos libres del disco................................................57 Eliminando Archivos................................................................................................................................59 Sobre demonios...........................................69 Monitorizando el espacio y los inodos libres del disco........................................................................75 quotaon....................................77 quotacheck......................................59 Diagrama de formacion de un proceso..................................................................64 Utilizando mkfs..................................64 Creando particiones y sistemas de archivos............................................................................................................................................................................................................63 Procesos en segundo y primer plano.............................................................................................................................................59 Modelo de cinco estados.............................................................................................74 Comandos de cuotas............. ................................................................88 Como establecer la variable PATH.............................81 Comando chmod.......................................................................................................................................................................................... /.................................79 Permisos de archivos y directorios.................................................84 Crear y cambiar enlaces de archivos..................84 Comando chgrp.................................................................92 Sentencia if.....................................93 Sentencia while y until........................................................................................bash_logout.................................................................................................................88 Variables de entorno...................................................................................................................................................................................................87 /.................bash_profile................82 Permisos especiales.............bashrc y /etc/profile......bashrc...................................................................................................................89 Variables locales y globales de Shell.................Habilitando las cuotas...................................................................................................................................................... Scripting y Manejo de datos....................................................................86 Fichero /etc/profile....................................................................................................87 /..................87 /........................... /etc/bashrc.....................................................................................................................................................................................87 /..............85 Los Hard Links ..................................................81 Permisos de archivos y directorios.............................................................................................................................................................................................................87 Ficheros /.................................................................................................................................................................................91 Comparaciones de cadenas alfanumericas.................84 Comando chown...............83 Administrando el propietario de los archivos.....93 Sentencia case.............................86 Archivos de configuracion de BASH........................83 SGID.............................................................................................................................................bash_logout y /.........................................................................bash_profile ...............................................................................................86 Personalizando y conociendo el shell...............................90 Personalizar o escribir scripts simples.................................................................................................................83 SUID.........................................................................................................................................87 /inputrc....................85 Creando links a archivos................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................94 -7- ........................................81 Administracion de Permisos................................................................92 Comparaciones de atributos de fichero..........................94 Sentencia select............................................................................................................................................................. /.......................................................................86 Fichero /etc/bashrc......................................................................................................................................................................................................................................................................................................................................................................92 Sentencia for.......................................................83 Stiky Bit..........................................................bashrc......................................................................................................bash_profile ...................................................................................................................................................................................91 Comparacion de valores numericos.................................................................................................................................................85 Shell............................................................89 Funciones de Shell Bash............................85 Los Symlinks ................................................................................................................................................................................... ..............102 Extraer informacion de una tabla....................................................................................................................................................................................................................................................................................116 Instalar y configurar X Window System............105 Ordenar registros..................................................95 Conectarse y desconectarse del servidor.......................................122 Seccion “Device”........................111 Coincidencias de patrones................................................................................................127 usermod..............................................................................................121 Configuracion tipica de un teclado............................................................................................................................................................................Manejo de datos en MySQL.........................................................................................................................................................................................................................................conf...........................................................................................104 Seleccionar registros especificos...........................................................................................................................................123 Seccion “Monitor”..................................................................120 Seccion “Files”...................................................120 Especificaciones del teclado....................................................................................................................................................................................95 Prompt Significado ...........................................103 Existen al menos dos formas de solucionarlo:...........................................................................................................................................................................................124 Seccion “ServerLayaout”...100 Cargar datos a una tabla.................................................................................................................................................................................................................................................................................................................................................................................127 useradd.................................................108 Trabajar con valores NULL........................125 Fichero /etc/passwd....114 Utilizar mas de una tabla..........104 Seleccionar columnas concretas...................................................125 Tareas Administrativas..............................................................119 Especificaciones del mouse....................................................................................120 Seccion “Modules”...........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................106 Calculos sobre fechas....126 Administración de cuentas de usuario......................................................................................................................................................................................................................................121 Seccion “InputDevice”.......................113 Contar registros............................................................................................................................99 Crear y utilizar una base de datos......................................................................................111 Algunas características de las expresiones regulares extendidas:...................................................................................................................................................128 -8- ...................................................................................................................................................................................................................100 Crear una tabla..............................................................................................................................................................................................................123 Seccion “Screen”.................................................................................................................118 Sobre X Window System...............................120 Fichero xorg..................................................................................................................119 Configurando el entorno X Window System...........................................................................97 Crear y utilizar una base de datos......128 userdel.....................126 Fichero /etc/shadow.........................................................118 Instalando X Window System................................................................................... ..........................136 Crontab del sistema.............................................................131 groupmod........................................................................144 Instalar una impresora local con CUPS.....................................................................138 Comando hwclock......................................................................................140 Protocolo SMTP................................................................................................................................134 Sobre CRON.........................................................................................passwd....................................................................136 Log de cron..........134 Las variables:........137 Programas para controlar el reloj del sistema................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................142 Sobre Postfix...........145 Fundamentos de Red..........135 Listando el crontab.................... weekly y monthly.........................................130 Fichero /etc/login........................................................................................................................................................................................................................................................................................140 Protocolo POP3.......................142 Sendmail en la actualidad................................................135 Directorios predefinidos: hourly......................................................................................................................................................................................................................................147 -9- ...................................................................................................................................................................................................................................................................130 Administración de grupos......................................................................................131 groupdel............................................................................................................................................................143 Sobre Exim................................................141 Sobre Sendmail............................................... daily.........................................................................................................................................................................................................131 groupadd..............................................................132 gpasswd.........................................143 Sobre Qmail..............................................................................................................................................................................................................................................................................................................................................138 El procedimiento es relativamente simple:...................................................................................................................................133 grpconv y grpunconv................137 Administrando la hora del equipo............129 chage......................................................................................................143 En que consiste el sistema de impresion CUPS......132 Fichero /etc/gshadow......................................................................................................................................................................133 pwconv y pwunconv..........................................................................135 Programando tareas.................................................................................................................................................132 Fichero /etc/group........................................................................................................................................................................................................................................................................................129 newusers....141 Protocolo IMAP................................................................................................................................................138 Ajustes de tiempo y de las zonas horarias.................................................140 Mail Transfer Agent Basico....................................................................................................................................................................................143 Como imprimir en Linux....................................................................................................................................................138 Servicios Esenciales del Sistema......................................................................................................................................................defs ................132 grpck........................................................................................ ........................................................................149 Nivel de Enlace de Datos.................................................................................................................................159 Asignacion de direcciones IP.....153 Puertos TCP...........................................................................159 Creacion de Subredes..................................................159 IP dinamica....................154 Diferencias entre TCP y UDP...................................................................................................160 Direcciones IPv6.......................................................................................................................................................................163 Configuracion de interfaces de Red..........................151 Transferencia de datos......................151 Establecimiento de la conexion .................................................................................................................................149 Nivel de Transporte........................................................................................164 ..164 Configuracion del archivo /etc/resolv................Fundamentos de TCP/IP..................................................................................................................................................164 /etc/sysconfig/network-scripts/.....................147 Desarrollo de TCP/IP..........................................163 Configuracion del archivo /etc/hosts..................................................................................149 Nivel de Aplicacion..........................................................................................................................................162 Traceroute....................................................................................................................................................................................................................................161 Telnet.............155 Direcciones IP............................................................................................................................................................................157 Direcciones IPv4..........................................................................................................................................................................................................................................................................................162 Dig....................................................162 Ping......................................................................................................................................................................................................................................................................................................................................................................................................................147 Sobre TCP/IP................................................................................................................................152 Escalado de ventana.........................................................163 Configuracion de los parametros de Red...........................................................................161 FTP..............................................................................................................................................conf.....................................................................................................................................................................................................................................................................................................................................................................................................149 Nivel de internet.............154 Tabla de Puertos TCP y UDP...........................................................................................................................................................................................................................................................................................................................................153 Fin de la conexion...................................................................................................................................................................162 Funcionamiento..................................161 Fichero /etc/services................................................................................................................................................................153 Protocolo UDP......................................................................................................................147 Niveles en la pila TCP/IP................151 Tamaño de ventana TCP...................................150 Protocolo TCP...........................................................................148 Nivel Fisico..............................................................................................................................157 Mascara de una direccion IP................................................10 - .................................................................................................................................164 Configuracion del archivo /etc/sysconfig/network................................................................................................................................................153 Puertos TCP............................................................................................. ..................................................................................................................................... detener o reiniciar el servidor openSSH...............................................................................170 Impidiendo la conexión al servidor gráfico........................................................................................................174 ..................................................................................................................................170 Aprendiendo a utilizar openSSH.........................................................................................................170 Limitando el tiempo para autenticarse con SSH..................................................................................................................................................................................11 - ....................168 Deshabilitando el acceso a root........................167 Archivos de configuración del lado del cliente...........................................................................................................................................................172 Copiando ficheros a través de SFTP (Security File Transfer Protocol).....169 Definiendo un número máximo de intentos de conexión.166 Instalando OpenSSH...................................................................................................................................El Protocolo SSH.............................................171 Copiar u obtener archivos o carpetas desde un equipo remoto.......................................................................................................................165 Acerca de OpenSSH.................................................................................................169 Activando el modo estricto............................................................168 Blindando el fichero sshd_config...........................................................................................167 Configuración de fichero sshd_config................................................................................................168 Desactivando el Protocolo 1...........................166 Archivos de configuración de OpenSSH...........170 Iniciar.....173 Subir o enviar archivos o carpetas a un equipo remoto...........................................168 Cambiando el puerto por defecto.........................167 /etc/ssh/......................................................................................................................... existen métodos de instalación alternativos que pueden ser aplicados cuando por ejemplo no disponemos de un lector DVD en el equipo.Modulos del Nucleo de Linux 3. La siguiente tabla muestra los nombres asociados a la carpeta “paquetes” de cada una de las distribuciones linux mas relevantes.12 - .Archivos de boteo para el arranque de Linux 2.Archivos para el rescate de sistemas Linux Algunos de estos archivos pueden ser copiados a una memoria USB o CD para ser usados como discos de arranque. algunos de estos métodos alternativos de instalacion son los siguientes: • Mediante un servidor HTTP • Mediante un Disco Duro Instalacion desde CD o DVD Varias distribuciones linux asignan diferentes nombres para la estructura de sus carpetas de sus discos de instalacion. la estructura generica de estos directorios es la siguiente: Carpeta paquetes Esta carpeta contiene los paquetes precompilados de Linux. Para sistemas operativos Linux de la familia Red Hat la carpeta imagenes esta relacionada con las carpetas • images • isolinux Para sistemas operativos Linux de la Familia Debian la carpeta imagenes esta relacionada con las carpetas • casper • isolinux . Así mismo. Sistema Operativo Carpeta que almacena los paquetes precompilados Red Hat Server CentOS CentOS Fedora Fedora Debian dists Ubuntu dists Carpeta imagenes Esta carpeta alberga los archivos necesarios para llevar a cabo el proceso de instalacion de Linux como son: 1. Una de las formas mas usadas e implementadas es la basada en los discos de instalación de Linux los cuales puedes descargar directamente en formato .Métodos de Instalación Metodos de instalacion alternativos El proceso de instalación de Sistemas Operativos Linux es una tarea similar para casi todas las distribuciones Linux existentes.ISO desde la pagina oficial de la distribución Linux que tu elijas. El comando para montar el medio de instalacion DVD es el siguiente: [BASH]# mount ­t iso9660 ­o loop /dev/dvd  /var/www/html/carpeta Esto ultimo para sistemas operativos Linux de la familia Red Hat y para sistemas operativos Linux de la familia Debian [BASH]# mount ­t iso9660 ­o loop /dev/dvd  /var/www/carpeta 3.iso Esto ultimo para sistemas operativos Linux de la familia Red Hat y para sistemas operativos Linux de la familia Debian /var/www/carpeta/images/boot.13 - .cd o USB. Rawrite es un programa que graba una imagen de un archivo en un disquette. Para sistemas operativos Linux de la familia Red Hat la ubicacion de la carpeta publica es la siguiente: /var/www/html/ Dentro de esta ruta se tiene que crear la carpeta y nombrarla con el nombre que usted elija.El primer paso sera instalar el servidor HTTP. En Linux y otros Unix se puede usar la orden dd que ya viene incluida con el sistema operativo.Carpeta dosutils Este directorio contiene herramientas que pueden ser usadas para preparar la instalacion de Linux. Para sistemas operativos Linux de la familia Debian la instalacion de hace de la siguiente manera /var/www/ Dentro de esta ruta se tiene que crear la carpeta y nombrarla con el nombre que usted elija. Instalación desde un servidor HTTP Configuracion de la instalacion HTTP 1. crear una carpeta dentro de la carpeta publica del servidor HTTP y luego montarlo sobre dicha carpeta.Graba el archivo . Puede ser usado para grabar la imagen de un sistema operativo que sea utilizable como disco de arranque. Estas herramientas son programas diseñadas en MS-DOS muy partiularmente el comando rawrite.iso 4. La versión original fue escrita por Mark E. Becker a petición de Linus Torvalds Existen versiones para otros sistemas operativos.El siguiente paso sera introducir el medio de instalacion DVD a la unidad lectora de discos. Para sistemas operativos Linux de la familia Red Hat la instalacion de hace de la siguiente manera [BASH]# yum install ­y httpd Para sistemas operativos Linux de la familia Debian la instalacion de hace de la siguiente manera [BASH]# apt­get install ­y apache2 2.Una vez montado el DVD en la carpeta publica del servidor HTTP deberas copiar el archivo boot.iso al escritorio de trabajo o en algun otro lugar Este archivo lo podras encontrar dentro de la carpeta images La ruta completa donde puedes escontrar este archivo es la siguiente: /var/www/html/carpeta/images/boot. Copia los archivos * initrd.Selecciona el idioma y tipo de teclado correspondiente: 7.ISO de la distribución 1.Si usted cuenta con el medio de instalación DVD deberá convertir este en una imagen .Desmonta la imagen . 5.ISO de la siguiente manera [BASH]# mount ­t iso9660 ­o loop imagen.ISO omita este punto y salte al siguiente paso.img * vmlinuz En alguna carpeta del sistema Estos archivos los podras encontrar en la carpeta isolinux de la imagen .14 - . 6.lst Y agrega el siguiente contenido al final del archivo title root En esta linea usted puede agregar un comentario sobre el Sistema Operativo a Instalar En esta linea se indica el disco duro y la particion del disco duro en donde se encuentra localizada la imagen .iso en formato .En configuracion HTTP deberas teclear la direccion IP en la cual tienes montado el medio de instalacion DVD asi como tambien el nombre del directorio publico que creaste en el servidor HTTP y teclear el boton “Acpetar” NOTA:Este metodo de instalacion solo es aplicable a distribuciones Linux de la familia Red Hat Instalacion desde un disco duro Configuracion de la instalacion desde disco duro 1.Monta la imagen .ISO [BASH]# dd if=/dev/dvd  of=/Ruta/En/Donde/Creara/La/Imagen/imagen.ISO. si no es asi siga leyendo.ISO de la siguiente forma: . Inserte el medio de instalación DVD en el lector del equipo y teclee el siguiente comando para crear la imagen .iso en un CD con ayuda da algun programa de grabacion de datos como K3B o Brasero.Edita el archivo /boot/grub/menu.El procedimiento es relativamente parecido al anterior para ello debera contar con lo siguiente: • medio de Instalación DVD • La imagen .img” No olvides guardar los cambios hechos al archivo 6.En configuracion TCP/IP deshabilita la opcion IPv6 y solo deja habilitada la opcion Ipv4 9.boot.En la seccion “Metodo de Instalacion” elige “HTTP” 8.Inserta el CD de arranque que acabas de crear en el lector del servidor y teclea enter.ISO que acabas de montar 5.iso /punto/De/Montaje 3. si ya cuenta con la imagen .ISO del sistema operativo kernel En esta linea se indica la ruta en donde copio el archivo “vmlinuz” initrd En esta linea se indica la ruta en donde copio el archivo “initrd.iso 2. Al aplicar “chroot” sobre la particion montada tomaremos el control sobre el sistema de archivos del disco duro y con ello podremos ajecutar comandos administrativos sobre el equipo. monte la particion que contenga el sistema de archivos de linux. selecciona la opcion “No” 5.15 - . este CD de rescate es una version reducida de Linux que implementa un sistema de archivos en la memoria RAM del equipo el cual tiene como funcion acceder al sistema de archivos del disco duro como usuario “root” Comenzado con el Disco de Rescate Linux 1. algo muy parecido al siguiente ejemplo 8. podra recuperarla tecleando en consola lo siguiente: [BASH]# passwd Cambiando la contraseña del usuario root.Por ultimo.[BASH]# umount /punto/De/Montaje/imagen. uno relacionado al virtualizando en la memoria RAM y el segundo relacionado al sistema de archivos del disco duro.La siguiente ventana emergente intentara montar el sistema de archivos de nuestro equipo en la ruta virtual /mnt/sysimage. si olvido la contraseña de root o si esta fue cambiada por alguien mas . 10.Al terminar el proceso de arranque este nos mostrara una interfaz parecida al BASH 7.Teclea en la pantalla la palabra #linux rescue 3.Selecciona el idioma y tipo de teclado correspondiente: 4.Introduce el medio de instalación DVD en el lector de discos del equipo 2.Aplique el comando chroot Sobre la particion que acaba de montar Ejemplo: [BASH]# chroot /tmp Esto es porque existen dos sistemas de archivos .En configuracion de red.Teclee el comando [BASH]# fdisk /dev/hda Esta accion nos arrojara el siguiente mensaje Presione la tecla “p” . Ejemplo: [BASH]# mount ­t ext3 /dev/hda1 /tmp 9. esto nos mostrara una lista con las distintas particiones alojadas en el disco duro.Lo siguiente sera reiniciar el equipo y justo cuando arranque el GRUB elegir la linea de instalacion del sistema Operativo Esta accion cargara el instalador del Sistema Operativo como si estuviera leeyendolo desde el medio de instalacion DVD Disco de Rescate Linux Si tu sistema operativo Linux se corrompe es posible recuperarlo usando un CD de rescate.iso 7. Seleccione la opcion Continuar 6.De acuerdo a la informacion obtenida en el anterior punto.  Nueva UNIX contraseña: . Muy particulamente. en particular con el CPU (Central Processing Unit) el sistema asigna recursos tales como líneas y canales de comunicacion para cada dispositivo. ya que permite a dispositivos de diferentes velocidades comunicarse sin someter al procesador a una carga masiva de interrupciones. Este "hilo" es. Tal operación no ocupa el procesador y como resultado puede ser planificado para efectuar otras tareas. incluyendo controladores de unidades de disco. dichas direcciones son asignadas por el CPU a cada uno de los dipositivos del hardware del sistema para que puedan escribir y leer datos sobre la misma. Es como si cada periférico tirara de un "hilo" que está atado a una campana para indicarle al equipo que desea que le preste atención. por lo que solo atiende de una a una las peticiones que a el llegan. Una interrupción se convierte en una interrupción de hardware cuando es solicitada por uno de los componentes de hardware del equipo. Suponga que un programa1 está siendo atendido por el procesador pero subitamente una solicitud de interrupción llega al procesador. sin embargo un solo procesador no es capaz de procesar simultaneamente varias peticiones . Solicitudes de interrupcion (IRQ) Antes de explicar que es una solicitud de interrupción. Este programa2 es ahora el atendido por el procesador y hasta que este termine de ser atendido el programa1 interrumpido puede continuar ejecutándose . la transferencia se lleva a cabo por el controlador DMA.Arquitectura del Sistema Asignacion de recursos Para permitir que los perifericos y dispositivos del equipo se comuniquen directamente con los recursos del sistema . tarjetas gráficas y tarjetas de sonido. una línea física que conecta cada ranura de expansión así como cada interfaz entrada/salida a la motherboard. En lugar de que el procesador inicie la transferencia. Los periféricos cuentan con un número de interrupción que se denomina IRQ (Peticiones de Interrupción. aqui es donde las solicitudes de interrupcion empiezan a jugar un papel importante. Las transferencias DMA son esenciales para aumentar el rendimiento de aplicaciones que requieran muchos recursos. entendamos primero cual es la funcion de un procesador. Muchos sistemas hardware utilizan DMA.16 - . DMA es una característica esencial en todos los equipos modernos. Cuando un periférico desea acceder a un recurso. El procesador es el encargado de procesar y administrar los datos y peticiones que a este llegan. . de hecho.es entonces cuando el programa1 llega a ser momentaneamente suspendido por un programa2. Un ejemplo típico es mover un bloque de memoria desde una memoria externa a una interna más rápida. Accesos Directos a Memoria (DMA) El acceso directo a memoria (DMA) permite a cierto tipo de componentes del equipo acceder a la memoria del sistema para leer o escribir independientemente del procesador. Direcciones de Entrada/Salida Las direcciones de entrada/ salida representan direcciones especificas en la memoria del sistema. estos recursos son conocidos como solicitudes de interrupcion (IRQ). envía un pedido de interrupción al procesador para llamar su atención. direcciones de entrada/salida y accesos directos a memoria(DMA). Una transferencia DMA consiste principalmente en copiar un bloque de memoria de un dispositivo a otro. para ello solo se tiene que agregar el parametro -v al comando. Este buffer contiene una gran variedad de mensajes importantes generados durante el arranque del sistema y durante la depuración de aplicaciones.Regularmente un equipo consta de 8 canales DMA.17 - . Estos mensajes pueden ser consultado en el archivo /var/log/messages Soporte USB El bus universal en serie (Universal Serial Bus) es un protocolo de comunicacion diseñado para conectar dispositivos a un equipo de computo. Estos dispositivos estan divididos en cuatro clases 1. Discos Duros.Dispositivos de interfaz humana (Mouse. Lectores DVD) 4.2.Dispositivos de comunicacion (Tarjetas WiFi) 2.Dispositivos de almacenamiento de datos (Memorias. . Microfonos) 3. Teclado) El soporte para dispositivos USB estuvo disponible hasta la version 2.Dispositivos de audio (Bocinas.7 del kernel de linux y con ello la liberacion de 3 modulos o controladores para la misma. Ejemplo [BASH]# lspci -v dmesg dmesg (diagnostic message)es un comando que lista el buffer de mensajes del kernel de linux. Los primeros cuatro canales DMA poseen un ancho de banda de 8 bits mientras que los DMA 4 a 7 poseen a su vez un ancho de banda de 16 bits. Asi mismo nos da informacion detallada sobre los IRQ y direcciones de Entrada/Salida asociados a los dispositivos PCI entontrados. Los canales DMA por lo general suelen asignarse de la siguiente manera: • DMA0: libre • DMA1: (tarjeta de sonido)/libre • DMA2: controlador de disquete • DMA3: puerto paralelo (puerto de la impresora) • DMA4: controlador de acceso directo a memoria (conectado a DMA0) • DMA1: (tarjeta de sonido)/libre • DMA6: (SCSI)/libre • DMA7: disponible Listado de asignacion de recursos El nucleo de linux agrupa la informacion relacionada a la asignacion de recursos en la carpeta /proc Los archivos relevantes de esta carpeta son los siguientes: * /proc/dma   ­­­> Archivo que contiene el historio DMA del equipo * /proc/interrupts  ­­­> Archivo que contiene el historico IRQ del equipo * /proc/ioports   ­­­> Archivo que contiene el historico Entrada/Salida del equipo * /proc/pci La asignacion de recursos tambien pueden ser consultada usando comandos como * lspci * dmesg lspci Lspci es un comando que nos imprime informacion detallada sobre los buses y dispositivos PCI conectados al equipo. [BASH]# lsusb ­v El parametro -v es el encargado de listar la infomacion referente a los IRQ. dispositivos USB conectados al equipo.El numero ID del dispositivo 3. Ejemplo: Attached devices:  .Controlador Desarrollador Modulo para el Kernel OHCI Compaq usb-ohci.El canal SCSI 2. esta incluye el controlador por lo tanto sólo hay espacio para 7 dispositivos de bloque • Una interfaz de 16 bits con un bus que soporta 16 dispositivos. esta incluye el controlador por lo tanto sólo hay espacio para 15 dispositivos de bloque Los dispositivos SCSI pueden ser identificados mediante una serie de 3 numeros llamados SCSI ID. CD-ROM.Numero de unidad logica El canal SCSI Cada adaptador SCSI soporta un canal de datos en la que atribuimos los dispositivos SCSI (discos. DMA y las direcciones de entrada/salida de los dispositivos USB.o Asi mismo existe un comando en linux que nos imprime informacion detallada sobre los buses. estas son • Una interfaz de 8 bits con un bus que soporta 8 dispositivos. estos son: 1. Una forma para cononcer si en nuestro sistema operativo tiene soporte para estos controladores es revisando directamente el archivo de modulos del kernel de linux. Este rango de numeros de identificacion van de 0 a 7 para las interfaces de 8 Bits y de 0 a 15 para las interfaces de 16 Bits Numero de unidad logica El término es originario del protocolo SCSI como una forma de diferenciar unidades de disco individuales dentro de un bus SCSI tal que un array de discos Deteccion de dispositivos SCSI Todos los dispositivos SCSI son listados en el archivo /proc/scsi/scsi El cual contiene las caractersitcas de los dispositivos scsi que el equipo a detectado.o UHCI Intel usb-uhci. IRQ y direcciones de Entrada/Salida asociados a los dispositivos USB encontrados.o EHCI ehci-hdc. etc). el nombre de este comando es el siguiente.18 - . La ruta de este archivo es la siguiente: /proc/modules Dispositivos SCSI Existen dos tipos de interfaces scsi. Estos canales están numerados de 0 en adelante El numero ID del dispositivo A cada dispositivo se le asigna un número único de identificación que se puede ajustar usando los jumpers del disco SCSI. las impresoras son detectadas automaticamente por el equipo cuando este es encendido . Configuracion de impresoras Aunque el tema de impresion es tratado mas a profundidad en el curso LPI 102 aqui daremos una breve introduccion. OSS es un proyecto comercial que proporciona controladores de audio a otras .0 Ethernet controller: ADMtek NC100 Network Everywhere Fast Ethernet 10/100 (rev  11) En el ejemplo podemos observar que la tarjeta de red cuenta con un chipset ADMtek . Para ello el kernel debera tener soporte para este tipo de dispositivos.Host: scsi0 Channel: 00 Id: 00 Lun: 00    Vendor: ATA      Model: ST3200820AS      Rev: 3. Usualmente CUPS guarda todos sus archivos de configuracion en el archivo /etc/cups Y generalmente hace uso del puerto 631 para llevar a cabo la administracion de estos recursos Tarjetas de Audio Existen dos proyectos para el soporte de audio en linux .­ Open Sound System  ALSA. CUPS(Common Unix Printing System) es un sistema de impresión modular para sistemas operativos de tipo Unix que permite que un equipo actúe como servidor de impresión.­ Advanced Linux Sound Architecture  OSS (Open Sound System) En efecto. Una forma de obtener informacion referente a las tarjetas de red del sistema es haciendo uso de los siguientes comandos: [BASH]# dmesg [BASH]# lspci Ejemplo: [BASH]# dmesg eth0: ADMtek Comet rev 17 at MMIO 0xdffffc00. El segundo metodo es actualmente el mas implementado para la mayoria de las distribuciones linux y este lleva por nombre CUPS. [BASH]# lspci 01:0a. sin embargo este paquete ha desaparecido para la mayoria de las distribuciones linux existentes. estos son: • • OSS. direccion de entrada/salida 0xdffffc00 y solicitud de interrupcion (IRQ)19. Desde la perspectiva del hardware. Esta informacion puede ser usada si el modulo asociado a la tarjeta de red comienza a entrar en conflictos con el kernel. 00:02:2a:cb:10:2b. IRQ 19. El primero es mediante una herramienta actualmente en desuso llamada “printtool” la cual proporciona un entorno gráfico para montar y gestionar impresoras.19 - . asi mismo las impresoras detectadas por el sistema son listadas en el archivo /var/log/dmesg La forma de gestionar impresoras en linux se puede hacer de dos metodos. Tambien es util si se requiere insertar un modulo con una diferente direccion entrada/salida a travez del comando modprobe.AA    Type:   Direct­Access                    ANSI  SCSI revision: 05 Tarjetas de Red Las tarjetas de red son el punto neuralgico de la comunicacion del equipo con el exterior y viceversa. como por ejemplo cuando se trabaja en tiempo real con el disco duro y no se guardan con anticipación dichos cambios. -c <número de placa o Selecciona la placa de sonido a utilizar. reproducción. Soporta gran variedad de placas de sonidos con dispositivos múltiples. Ejemplo: [BASH]# dmesg | grep ALSA ALSA sound/pci/hda/hda_codec.20 - . si en el sistema existen más de identificación> -D <identificación dispositivo> una placa. de Selecciona el mezclador para el control. -g Cambia el uso de colores. captura o todos.   fmic=0x0. salvo algunas excepciones. -h. es decir.c:3311:    hp_outs=0 (0x0/0x0/0x0/0x0/0x0)  ALSA sound/pci/hda/hda_codec.plataformas. Se utiliza para configurar el sonido y ajustar los volúmenes.c:3307:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)  ALSA sound/pci/hda/hda_codec. metas que han sido alcanzadas en su mayor parte.c:3312:    mono: mono_out=0x0  ALSA   sound/pci/hda/hda_codec. cd=0x1c. Un ejemplo de memoria volátil es la memoria RAM (Random Access Memory).c:3303: autoconfig: line_outs=4 (0x14/0x15/0x16/0x17/0x0)  ALSA sound/pci/hda/hda_codec.  fline=0x0. ya que este tipo de memoria solo almacena la información de manera temporal y es borrada nuevamente . -s Minimiza la ventana del mezclador -V <modo de vista> Selecciona el modo de vista inicial. alsamixer es un programa de mezclado de audio para la arquitectura de sonido de Linux ALSA. así mismo funge como memoria no volátil. aux=0x0 Administracion de tarjetas de audio Una forma de administrar graficamente las tarjetas de audio en Linux es mediante la herramienta “alsamixer”. Conociendo el Arranque de Linux Sobre los Discos Duros Un disco duro es un dispositivo de almacenamiento masivo de datos que a su vez también puede tener instalado algún Sistema Operativo.   line=0x1a. El controlador libre paso a formar parte del proyecto Linux a partir de la version 2. Tiene una interface para usuarios basada en ncurses (modo texto) y no necesita del sistema X Window System. Identificando las tarjetas de audio Una forma usual de identificar las tarjetas de audio es haciendo uso del comando dmesg el cual nos informa si el kernel de linux detecto alguna tarjeta de audio. Las placas se numeran desde 0 (por defecto). cuando por alguna razón se interrumpe la energía eléctrica de nuestra casa u oficina la información anidada en el mismo se almacena de manera correcta. -help Ayuda: muestra las opciones disponibles.c:3320:         inputs:   mic=0x18.0 del kernel de linux ALSA (Advanced Linux Sound Architecture) Advanced Linux Sound Architecture es un componente del núcleo de Linux destinado a sustituir al Open Sound Sistema Algunas de las metas de este proyecto desde su concepción fueron la configuración automática de tarjetas de sonido y el manejo de múltiples dispositivos de sonido en un sólo sistema. Sobre estos platos se sitúan los cabezales encargados de leer o escribir los impulsos magnéticos. se desarrolló una extensión llamada ATAPI que permite interconectar otros periféricos de almacenamiento como unidades de CD o unidades de DVD en una interfaz IDE-ATA.Los discos duros con esta configuración indican a la tarjeta madre que el debe ser el primero en ser leido y por ende el primero en arrancar • Esclavo.El dispositivo será maestro o esclavo en función de su posición en el cable. debe estar situado en la posición de maestro. Se utiliza una ruta de . Si el dispositivo es el único en el cable.cuando se interrumpe la energía eléctrica de la computadora. Este diseño IDE-ATA tiene el inconveniente de que mientras se accede a un dispositivo el otro dispositivo del mismo conector IDE no se puede usar. Los discos IDE están mucho más extendidos que los SCSI debido a su precio mucho más bajo.21 - . sin embargo. Estos discos duros sustituyen a los tradicionales IDE-ATA. también debe estar configurado como cable select. ademas de que proporciona mayores velocidades. Habitualmente... Existen distintos tipos de interfaces y entre las mas comunes se encuentran las siguientes: • IDE-ATA (Integrated Drive Electronics) • SATA (Serial Advanced Technology Attachment) • SCSI generalmente usado en servidores Tipos de Discos Duros Como anteriormente mencionamos existen 3 tipos de discos duros: Discos Duros IDE-ATA= Los discos duros con esta denominación hacen uso de una interfaz llamada IDE(Integrated Device Electronics) ATA(Advanced Technology Attachment) que es la encargada de comunicar al Disco Duro con la tarjeta madre. que pueden usar dos dispositivos por canal. Este inconveniente está resuelto en discos duros como los SATA y en SCSI. Un disco duro (Hard Disk) emplea un sistema de grabación magnética el cual es aplicado a una una serie de platos metálicos apilados girando a gran velocidad. mejor aprovechamiento cuando hay varios discos. El estándar IDE-ATA fue diseñado originalmente para conectar discos duros. El rendimiento de IDE es menor que SCSI pero se están reduciendo las diferencias. las cuales son: • Maestro. En la siguiente figura podemos observar un diagrama que muestra la forma en cual debe ser conectado un disco duro IDE-ATA. Si hay otro dispositivo.Los discos duros con este tipo de configuración no son tomados en cuenta al momento de arrancar el sistema por lo que el disco duro maestro puede disponer de los demás discos duros configurados como discos esclavos • Selección por cable.. mayor longitud del cable de transmisión de datos y capacidad para conectar discos en caliente (con la computadora encendida). un disco duro IDE-ATA puede estar configurado de 3 maneras diferentes. El estándar Serial ATA se basa en una comunicación en serie. Discos Duros SATA Los discos duros con esta denominación hacen uso de una interfaz llamada Serial Advanced Technology Attachment que es la encargada de comunicar los dotos del Disco Duro con la tarjeta madre. 5 Gb/s. los datos se transmiten mediante el modo de transmisión LVDS (Señal diferencial de bajo voltaje) que consiste en transferir una señal a un hilo y su contrapartida a un segundo hilo para permitir que el destinatario recree la señal por diferencia. por lo tanto.2 Gb/s. Por lo tanto. Otra de la ventajas con este tipo de disco es que permite la conexión en caliente o en pocas palabras. 16 unidades. Las unidades lógicas se identifican mediante un LUN (Número de unidad lógica). es decir. Discos Duros SCSI El estándar SCSI (Small Computers System Interface) es una interfaz que se utiliza para permitir la conexión de distintos tipos de periféricos a una computadora mediante una tarjeta denominada adaptador SCSI o controlador SCSI generalmente mediante un conector PCI. Por último. una velocidad efectiva teórica de 600 MB/s. Direccionamiento de los Periféricos SCSI Los periféricos se direccionan mediante números de identificación. El periférico puede tener hasta 8 unidades lógicas (por ejemplo. Con un bus de 8 bits. mientras el equipo esta encendido.22 - . y finalmente 750 MB/s ó 6 Gb/s. a cada una le corresponde un número diferente. con un total de cuatro hilos utilizados para la transmisión. En cada una de estas rutas. la comunicación requiere de dos rutas de transmisión. número que designa al controlador que se encuentra dentro de cada periférico (definido a través de los caballetes posicionados en cada periférico SCSI o por el software). cada octeto se transmite con un bit de arranque y un bit de parada. una velocidad efectiva teórica de 300 MB/s. es decir. El primer número es el ID. una computadora puede contener diversas tarjetas SCSI y. El número de periféricos que se pueden conectar depende del ancho del bus SCSI. los del Serial ATA se encuentran solos en cada cable y ya no es necesario diferenciar los discos duros maestros de los discos duros esclavos. se pueden conectar 8 unidades físicas y con uno de 16 bits. la baja cantidad de hilos en una envoltura redonda permite una mayor flexibilidad y una mejor circulación del aire dentro de la carcasa que la de los cables IDE (incluso si existieran los cables IDE redondeados). Los cables del estándar Serial ATA pueden medir hasta 1 metro de longitud (en comparación con los 45 cm que miden los cables IDE).datos para transmitir los datos y otra ruta para transmitir las confirmaciones de recepción. una unidad de CD-ROM con varios cajones). Además. 5 Volts o 12 Volts y tiene una apariencia similar al conector de datos: Características El estándar Serial ATA brinda una velocidad de 187. El estándar Serial ATA II debe contribuir a alcanzar 375 MB/s ó 3 Gb/s.3 Volts. Los datos de control se transmiten por la misma ruta que los datos mediante una secuencia específica de bits que los distingue.5 MB/s ó 1. Conectores de Serial ATA El cable utilizado por el estándar Serial ATA es un cable redondeado que contiene 7 hilos con un conector de 8 milimetros en su extremo. cada una de las cuales está compuesta por dos hilos. . A diferencia de los periféricos del estándar ATA. el conector de la fuente de alimentación también es diferente ya que comprende 15 clavijas que alimentan al periférico con una potencia que varia entre 3. con una velocidad efectiva teórica de 150 MB/s ó 1. tres hilos tienen conexión a tierra y dos pares se utilizan para la transmisión de datos. que utiliza señales de 5 V. El estándar SCSI-3 incluye nuevos comandos y permite la unión de 32 periféricos. basado en una arquitectura paralela en la que cada canal circula en un alambre. lo que implicaba que era posible alcanzar velocidades de 5 MB/s. los discos fisicos son listados y representados dentro de la carpeta /dev Recordemos: Para ser identificados. • el bus diferencial transporta señales a un par de alambres. Adicionalmente a cada uno de estos identificadores se les agrega una letra del alfabeto para identificar los discos maestros de los esclavos. La información se codifica por diferencia entre los dos alambres (cada uno transmite el voltaje opuesto) para desplazar las interrupciones electromagnéticas.77 MHz con un ancho de 8 bits. así como una velocidad máxima de 320 MB/s (en modo Ultra-320). El estándar SCSI-1 de 1986 definió los comandos estándar para el control de los periféricos SCSI en un bus con una frecuencia de 4. existen dos modos: el modo LVD (Voltaje bajo diferencial). Sin embargo. Éste define 18 comandos. El siguiente cuadro resume las características de los diversos estándares SCSI Configuracion de discos En Linux. Este es el tipo de bus SCSI más común. Los cables SCSI en modo SE poseen 8 alambres para una transmisión de 8 bits (que se denominan limitados) o 16 alambres para cables de 16 bits (conocidos como extendidos). conocidos como CCS (Conjunto de comandos comunes). conocido como SE (por Single-Ended o Terminación única). por lo que en 1994 se adoptó el estándar SCSI-2. un gran número de dichos comandos eran opcionales. sensible a las interferencias. el kernel les agrega un identificador el cual comienza con hd para el caso de discos IDE o sd para el caso de discos PATA o SCSI. Estándares SCSI Los estándares SCSI definen los parámetros eléctricos de las interfaces de entrada/salida. pero las señales eléctricas son diferentes. los periféricos necesitan ser identificados (mediante los símbolos creados para tal fin) para no dañarlos. Por lo tanto. Se han definido varias versiones del estándar SCSI-2: • El SCSI-2 extendido. lo que permite obtener una distancia de cableado considerable (alrededor de 25 metros).23 - . basado en señales de 3. • Los modos Rápido-20 y Rápido-40 duplican y cuadriplican dichas velocidades respectivamente.3 V y el modo HVD (Voltaje Alto Diferencial). Los periféricos que utilizan este tipo de transmisión son cada vez más raros y por lo general llevan la palabra "DIFF". En general. Los conectores para las dos categorías de periféricos son los mismos.SCSI asimétrico y diferencial Existen dos tipos de bus SCSI: • el bus asimétrico. ofrece una velocidad de 10 MB/s • El SCSI-2 rápido es un modo sincrónico rápido que permite un aumento de 5 a 10 MB/s para el estándar SCSI y de 10 a 20 MB/s para el SCSI-2 extendido (denominado SCSI-2 extendido rápido). . basado en un bus de 16 bits (en lugar de 8). Las particiones extendidas pueden ser divididas en particiones logicas y estas pueden tener un maximo de 64 particiones para discos ATA/SATA y 16 particiones para discos SCSI Aplicaciones graficas para particionar discos duros Existen aplicaciones libres como alternativas a las aplicaciones propietarias como es el caso del Partitioning Magic. El LiveCD de Ubuntu incluye esta aplicación entre sus utilidades. La aplicación utiliza la librería libparted para detectar y manipular dispositivos y tablas de partición. Para ser identificados.Identificador del Disco Duro Dispositivo Logico hda Maestro Primario hdb Esclavo Secundario hdc Maestro Secundario hdd Esclavo Secundario sda Primer Disco Sata o SCSI sdb Segundo Disco Sata o SCSI Configuracion de Particiones Asi como los discos duros son listados y representados. Esta aplicación es usada para crear. reorganizar el uso del disco y crear imágenes de un disco en una partición. redimensionar. basado en Slackware y construido sobre la última rama estable núcleo de Linux (2.6). LiveCD es actualizado con cada lanzamiento de GParted. inspeccionar y copiar particiones. a continuación se exponen 2 de las mejores: Gparted GParted es el editor de particiones de GNOME. tambien las particiones correspondientes a cada disco duro son representadas y listadas. Esto es útil para crear espacio para nuevos sistemas operativos. Cuando se carga LiveCD. se inicia una mini-distribución que contiene las siguientes aplicaciones: • Escritorio Xfce • Thunar como gestor de archivos • Una aplicación para capturas de pantallas (por medio de Thunar se pueden guardan en un pendrive) • Documentento de ayuda • GParted . mientras varias herramientas de sistema de archivos dan mantenimiento a sistemas de archivos no incluidos en libparted. Está escrito en C++ y utiliza gtkmm como herramienta gráfica. Gparted LiveCD Se encuentra disponible en LiveCD.24 - . el kernel le agrega un numero al final de cada identificador para diferenciar de una particion primaria. NOTA:Los discos duros ATA y SATA permiten 4 particiones primarias. conforme con las Human Interface Guidelines. Este acercamento es para mantener la interfaz gráfica de usuario lo más simple posible. logica o extendida. eliminar. como también sistemas de archivos. También se encuentra disponible en versión LiveUSB. de las cuales 1 puede ser extendida. • Xfree86 Capacidades y limitaciones GParted no puede incrementar el tamaño de las particiones sin existir un espacio vacío después de dicha partición, es decir, si existen dos particiones juntas no se podrá aumentar el tamaño de una en detrimento de la otra; pero esto es más bien una limitación técnica. En esta tabla se muestran las capacidades de GParted, de acuerdo con cada sistema de archivos. Si tu deseas probar esta aplicación, la puedes descargar directamente de la pagina oficial del proyecto http://gparted.sourceforge.net Parted Magic Parte Magic es un LiveCD que incluye una distribución Linux a medida para poder operar directamente con ella sin necesidad de ser instalada en el disco duro. No estamos hablando solo de un particionador de discos mas. En este LiveCD podemos encontrar varias herramientas entre ellas un editor de particiones llamado VisParted basado en el genuino Gparted con la que podremos crear, redimensionar y borrar nuestras particiones del disco duro. Parted Magic soporta los siguientes sistemas de archivos: ext2, ext3, ext4, fat16, fat32, hfs, hfs+, jfs, linux-swap, ntfs, reiserfs, reiser4 y xfs. Si tu deseas probar esta aplicación, la puedes descargar directamente de la pagina oficial del proyecto http://partedmagic.com/ Formatear y particionar discos duros desde BASH Formatear y particionar dispositivos de almacenamiento de datos como discos duros y memorias USB es una tarea sencilla. Para ello usaremos tres herramientas, estas son: • dd • fdisk • mkfs Dando formato de bajo nivel con dd Esta herramienta sirve para dar formato de bajo nivel a un disco duro. La forma de implementar esta herramienta es la siguiente: [BASH] # dd if=/dev/zero dd of=/dev/sda El comando dd (duplicate disk) es un comando bastante útil para transferir datos desde un dispositivo o archivo hacia otro dispositivo o archivo if=/dev/ze if significa input file, es decir, lo que quieres copiar En el ejemplo de arriba llenaremos de ro ceros el disco duro of=/dev/s of significa output file, o sea, el dispositivo o archivo destino donde se van a copiar los da datos.En el ejemplo de arriba nos referimos al disco duro El proceso puede variar dependiendo del tamaño de almacenamiento del disco duro o del tipo de interfaz (IDE o SATA), por lo que tendra que ser paciente. Particionando un disco duro con fdisk Fdisk nos servira para agregar, eliminar, redimensionar o dar formato a un disco duro. La forma de aplicar esta herramienta es la siguiente: [BASH] # fdisk ­l /dev/sd[a,b,c] - 25 - sda,b,c Hace referencia al numero de disco duro al que se le aplicara esta herramienta -l Este parametro listara la tabla de particiones que contiene el Disco duro La forma correcta de aplicar “fdisk” es de la siguiente manera: [BASH] # fdisk /dev/sd[a,b,c] La diferencia con el anterior comando radica en la forma en como fue implementado, pues en el primer comando indicamos explicitamente que deseamos conocer las particiones anidadas en el disco duro y con este ultimo estamos lanzando la aplicacion como tal. Una vez aplicado el comando mostrara un mensaje como este: Orden (m para obtener ayuda): Prueba tecleando la letra 'm', esto desplegara un menu con las utilidades de esta aplicacion.: Orden  Acción     a   Conmuta el indicador de iniciable     b   Modifica la etiqueta de disco bsd     c   Conmuta el indicador de compatibilidad con DOS     d   Suprime una partición     l   Lista los tipos de particiones conocidos     m   Imprime este menú     n   Añade una nueva partición     o   Crea una nueva tabla de particiones DOS vacía     p   Imprime la tabla de particiones     q   Sale sin guardar los cambios     s   Crea una nueva etiqueta de disco Sun     t   Cambia el identificador de sistema de una partición     u   Cambia las unidades de visualización/entrada     v   Verifica la tabla de particiones     w   Escribe la tabla en el disco y sale     x   Funciones adicionales (sólo para usuarios avanzados) La forma de agregar una particion al disco duro sera tecleando la letra 'n' lo cual nos desplegara la siguiente informacion: Acción de la orden  e   Partición extendida     p   Partición primaria (1­4)  p solo habra que especificar si la particion a añadir sera primaria (p) o extendida (e). NOTA:Los discos duros ATA y SATA permiten 4 particiones primarias, de las cuales 1 puede ser extendida. Las particiones extendidas pueden ser divididas en particiones logicas y estas pueden tener un maximo de 64 particiones para discos ATA/SATA y 16 particiones para discos SCSI* El siguiente paso sera especificar el tamaño y numero de la particion a la cual haremos el cambio. En el siguiente ejemplo crearemos una particion que ocupara todo el tamaño del disco duro. Número de partición (1­4): 1  Primer cilindro (1­1019, valor predeterminado 1): 1     Last cilindro, +cilindros or +size{K,M,G} (1­1019, valor predeterminado 1019): 1019 Si se quisiera asignar un tamaño diferente para la particion tambien se podra hacer, Para ello podemos hacer uso de las unidades KiloBytes,Megabytes o GigaBytes pero de manera abreviada (K,M,G) Al terminar de aplicar lo cambios solo debera ejecutar la orden 'w' lo cual escribira los cambios al disco duro. ¡Se ha modificado la tabla de particiones!  - 26 - Llamando a ioctl() para volver a leer la tabla de particiones.  Se están sincronizando los discos.  Dando formato a un disco duro con mkfs Por ultimo solo restaria asignarle un formato a las particiones que creamos. Para ello haremos uso de la herramienta mkfs, la cual debe ser aplicada segun la siguiente sintaxis [BASH]# mkfs.[ext2|ext3|ext4|vfat|ntfs]  /dev/sd[a,b,c][1,2,3]  Niveles de Ejecucion en Linux El Proceso de arranque El proceso de arranque de un sistema operativo Linux se inicializa de la siguiente manera: Cuando usted enciende su servidor o su computadora personal, esta hace que el BIOS de su equipo inicie las operaciones relacionadas con el arranque. El BIOS (Basic Input Output System) es un pequeño programa escrito en lenguaje ensamblador cuya función es cargar el sistema operativo en la memoria RAM (Random Access Memory), una vez que el BIOS carga el sistema operativo en RAM este inicia un proceso llamado POST (Power On Self Test) el cual es un proceso de diagnostico y verificación de los componentes de entrada y salida de un servidor o computadora y se encarga de configurar y diagnosticar el estado del hardware, una vez verificado el hardware se inicia la fase de arranque del sistema (bootstrapping) el cual cede el control al GRUB (Grand Unified Bootloader), el GRUB es un gestor de arranque que hace uso de un menú gráfico que permite elegir el Sistema Operativo que se desea arrancar; Así mismo, el GRUB realiza las siguientes tareas: 1.Cargar el kernel en memoria. 2.Cargar el sistema de archivos virtual initrd el cual es usado tipicamente para hacer los arreglos necesarios antes de que el sistema de archivos raíz pueda ser montado 3.Pasarle los argumentos runlevel e init al kernel 4.Comenzar la ejecución del kernel Al terminar de ejecutar todas las tareas anteriores el GRUB le cede el control total del arranque al kernel y este a su vez se encarga de realizar la llamada a la función starup la cual tiene como función detectar el tipo de CPU con el que el equipo cuenta así como de lo principal del sistema operativo, como el manejo de memoria, planificador de tareas, entradas y salidas, comunicación interprocesos, y demás sistemas de control, a partir de este momento se ejecuta el proceso INIT. El Proceso INIT INIT es el primer proceso en ejecutarse despues de la carga del kernel de linux e implementa dos modelos bajo los cuales puede trabajar, estos son 1.SystemV 2.BSD Estos modelos son arrancados por un programa (script) de arranque que establece como deben inicializarse los diferentes servicios, programas o registros que sean necesarios para que el sistema funcione como el administrador lo requiere. Explicaremos brevemente como es que trabajan estos modelos SystemV Es un modelo usado para controlar el inicio y apagado del sistema y fue originalmente desarrollado por la compañía estadounidense de telecomunicaciones AT&T. SystemV fue una de las versiones del sistema operativo Unix que se encargaba de controlar el arranque de los programas en el instante de inicio del equipo. Este modelo es considerado por muchos como facil, potente y flexible - 27 - asi como del sistema operativo solaris y AIX.Fue la versión más popular de SVR asi como la fuente de varias características comunes del sistema operativo Unix. A continuacion un ejemplo de cuantos niveles de ejecucion tienen cada una de las distribuciones mas importantes de linux. como el script /etc/init.-Incluye mejoras en el sistema de archivos asi como una nueva API de red.1 y 6 todos los sistemas operativos Linux tratan a los niveles de ejecucion un poco diferente. las cuales son: 1..-Incluye mejoras con respecto al nucleo el cual esta implementado como memoria virtual paginada. 3. el sistema operativo AIX de IBM hace uso de este modelo 4. El denominador comun de todas las distribuciones linux es el archivo /etc/inittab el cual define lo que hace cada nivel de ejecucion. el sistema operativo Apple esta basado en este modelo. estos son: 0.d en donde la letra N representa cada uno de los niveles de ejecucion en los que trabaja init.en comparacion con el sistema de inicio BSD Existen cuatro versiones release de SystemV (SVR) .SVR2. BSD El modelo BSD init se ejecuta mediante el script de inicializacion situado en la ruta /etc/rc Algunos de los sistemas operativos que se basan en este modelo son los basados en BSD como: • FreeBSD • NetBSD • OpenBSD • DragonFlyBSD • DesktopBSD • PCBSD El archivo init. tres son considerados reservados. que son alias del mismo nivel de ejecucion.Halt 1. La ubicación de este archivo esta localizada en: Algunos de los servicios que podemos . la funcion de estos archivos se explicara mas a detalle en el siguiente tema.SVR1.28 - .d Niveles de Ejecucion Los niveles de ejecucion en SystemV describen ciertos estados del equipo los cuales se caracterizan por ejecutar ciertos procesos.SVR4.d. En general existen 8 niveles de ejecucion los cuales van del 0 al 6 y S o s.-Reboot Aparte de los niveles de ejecucion 0.d En este archivo se encuentran todos los scripts encargados de levantar cada uno de los servicios del servidor. de estos ochos niveles.-Single user mode 6.SVR3.-Primera version de SystemV lanzada en 1984.. En la mayoria de los sistemas operativos linux los usuarios pueden saber bajo que nivel de ejecucion estan trabajando tecleando en una consola y como root lo siguiente: [root@localhost ]$ runlevel  N 5 Existen tambien los archivos llamados rcN. incluia el editor de textos Vi 2. d La funcion que desempeñan estos directorios es organizar la manera en como los servicios de un servidor son levantados. lo cual indica que los scripts dentro de esta carpeta se ejecutan en el nivel de ejecucion 5 Los detalles del renglon subrayado se explican a continuacion: El archivo inittab La ubicación de este archivo la podemos localizar en: El archivo inittab describe que procesos se inician en la carga asi como los scripts de inicializacion .d rcN. la cual la tomamos de la ruta /etc/rc.d/rc3.d  Otra de las caracteristicas de estos enlaces simbolicos es la sintaxis de sus propiedades.29 - .-Esta letra representa que el servicio esta dado de alta 1.El nombre del servicio Un ejemplo de esto lo podemos observar de la siguiente tabla.El estado del servicio.                   .d/init.encontrar en el archivo init. Estos directorios a su vez contienen un conjunto de enlaces simbolicos a los scripts del directorio /etc/rc.                   .  ­rwxr­xr­­ 1 root root  6154 ago  6 05:05 named  ­rwxr­xr­x 1 root root  1745 sep 18 10:26 smb ­rwxr­xr­x 1 root root  4112 mar 29  2008 sendmail El archivo rcN.d/init. imaginemos que tenemos instalado un servidor Web apache. y que lo tenemos configurado para que trabaje en los niveles de ejecucion 3 y 5 . Esta sintaxis esta conformada por 3 parametros 1.                   .. ­rwxr­xr­x 1 root root  3099 feb 25  2008 httpd ­rwxr­xr­x 1 root root  4239 mar  3  2008 mysqld                   .-Esta letra representa que el servicio esta dado de baja • La letra S.El orden en el que es arrancado el servicio.Este parametro indica el orden en el que los servicios deben ser dados de alta o de baja 2.d es un conjunto de directorios que representan cada uno de los niveles de ejecucion del sistema operativo.d son los referentes a: • Servidor Web Apache ---->httpd • Servidor Samba ----->smb • Servidor de Correo --->sendmail • Servidor DHCP ---->dhcpd • Servidor DNS ---->named • Manejador de Base de Datos MySQL ---->mysqld [root@localhost ~]# cd /etc/rc.                   . como por ejemplo. los cuales son representados con dos variables: • La letra K.d.d/ [root@localhost init.d]# ls ­l  total 428 ­rwxr­xr­x 1 root root  2974 jun 23  10:18 dhcpd                   .d  /etc/rc.d/rc5.d/rc5. por ende deberiamos poder observar dichos enlaces simbolicos en las rutas: • • /etc/rc. por lo que ningun usuario podra hacer eso de este nivel de ejecucion En este nivel no se . La funcion que tiene este script es agregar comandos que nos haga facil de realizar tareas necesarias como arrancar servicios especiales o inicializar dispositivos sin tener que escribir scripts complejos de inicializacion en el directorio /etc/rc. las cuales pueden ser GNOME o KDE El archivo rc.-Esta seccion controla el reseteo del sistema.-Este es el nivel de ejecucion en el cual arranca por defecto el equipo 3. De acuerdo a lo mostrado en la siguiente imagen describiremos la funcion que desempeña cada linea.-Lineas encargadas de controlar los procesos getty 8. la forma en que este lo hace es a travez del comando halt. A continuacion mencionaremos las caracteristicas de cada uno de ellos.. en especial los de la Familia Red Hat.-Aqui se especifica que script de configuracion se debe cargar para el proceso de arranque del sistema 4. 7. Para ello usamos como ejemplo el archivo inittab del sistema operativo Centos version 5. Nivel 0 –Parada Del Sistema El nivel 0 es usado para especificarle al sistema que debe apagarse.-Aqui se especifican los scripts de arranque que el sistema utilizara para cada nivel de ejecucion o tambien llamados runlevels 5. Niveles de Ejecucion Los niveles de ejecucion o tambien llamados runlevels hacen referencia a los sistemas operativos Linux que implementan el estilo de sistema de arranque de iniciacion tipo UNIX System V del cual ya hemos hablando extensamente.local Este archivo esta localizado en la siguiente ruta Este archivo es el utimo en ser ejecutado por el proceso init.del sistema. A lo largo de este tema mencionamos 8 niveles de ejecucion bajo los cuales trabajan algunos sistemas operativos linux.d/init.Este recuadro nos indica los diferentes niveles de ejecucion bajo los cuales trabaja CentOS 5.30 - . tambien distingue los multiples niveles de ejecucion bajo la cual trabaja el sistema operativo. Al ejecutarse este comando se apagan todos los servicios que se encuentren activos Nivel 1 o S -Monousuario o Single User El nivel 1 o tambien llamado nivel Single (S) solo puede ser iniciado por el administrador del sistema (root).-Estas dos lineas estan relacionadas con las acciones que deben de seguirse en caso de una falla de voltaje y la segunda indica que debe hacerse cuando el voltaje ha sido restablecido.-Esta linea arranca el entorno grafico del sistema. de los cuales tres son reservados y otro mas es alias de algun nivel en particular.sysinit Este archivo esta localizado en la siguiente ruta La funcion que desempeña este archivo es ejecutar una serie de scripts que inicializan tareas como: • Configuracion de reloj del sistema • Configuracion de los parametros del Kernel • Levantamiento de dispositivos RAID y LVM • Activacion y Actualizacion de cuotas en disco • Activacion de la particion SWAP El archivo rc. Se puede comentar esta linea para que no pueda ser reseteado el sistema 6.2 1.d ni creando enlaces simbolicos.2 2. recordemos que los niveles de ejecucion validos son 8. a diferencia del nivel de ejecucion 2. esto quiere decir que no se puede contar con servidores como NFS o web. • Para conocer el estado de los procesos que estan corriendo en su sistema puede ejecutar el siguiente comando [root@localhost ~]#chkconfig  ­­list • Para conocer el status de algun proceso en particular solo teclee esto [root@localhost ~]#chkconfig –­list httpd httpd           0:desactivado   1:desactivado   2:desactivado   3:desactivado  4:desactivado   5:desactivado   6:desactivado Lo cual nos mostrara bajo que niveles de ejecucion esta corriendo el proceso o servicio. este si cuenta con soporte de red. detener o reiniciar servicios en caliente es mediante el uso del siguiente comando el cual hace uso del archivo init. Nivel 2 -Multiusuario sin Red Este nivel esta caracterizado por la capacidad de permitir que varios usuarios puedan entrar al sistema pero sin contar con soporte en red.activan los servicios de Red.d del cual hemos hablado anteriormente. Nivel 4. pero puede ser personalizado por el administrador para que cumpla con alguna funcion en especial Nivel 5. la unica diferencia es el alta de entornos graficos como GNOME o KDE para la administracion del sistema Nivel 6. -Reinicio del Sistema Comando chkconfig Este comando es una herramienta util para levantar o desactivar servicios los cuales son aplicados durante el arranque del equipo asi como tambien conocer el estado de los servicios que se estan ejecutando. La estructura de la sintaxis para poder ocupar el comando es la siguiente: . • Para levantar algun proceso o servicio durante el arranque del sistema solo teclee esto [root@localhost ~]#chkconfig –­level 35 httpd on De esta manera estamos especificando el sistema que siempre que este inicie levante el servidor web apache en los niveles de ejecucion 3 y 5 • Para detener algun proceso o servicio durante el arranque del sistema solo teclee esto [root@localhost ~]#chkconfig –­level 35 httpd off De esta manera estamos especificando el sistema que siempre que este inicie tenga detenido el servidor web apache en los niveles de ejecucion 3 y 5 Levantando. y tampoco se inician los procesos (daemons) de inicio por lo que permite reparar problemas o hacer pruebas al sistema. deteniendo y reiniciando servicios Otra forma de levantar.31 - . Nivel 3 -Multiusuario con Red Este sistema esta caracterizado por la capacidad de permitir a varios usuarios entrar al sistema. -Multiusuario Grafico Este nivel de ejecucion es identico al nivel 3. -Sin Uso Para la mayoria de las distribuciones linux este nivel de ejecucion no tiene asignada ninguna funcion. aptitude es una interfaz para APT. y otras distribuciones de GNU/Linux basadas en RPM.d/httpd stop De igual manera si se quiere reiniciar el servicio solo debemos cambiar la palabra stop por restart [root@localhost ~]#/etc/init. Muestra una lista de paquetes de software y permite al aptitude usuario elegir de modo interactivo cuáles desea instalar o eliminar. incluyendo el mismo Yellow Dog. que facilitan al usuario entender las complejas relaciones de dependencia que puedan existir entre los . verificar y solicitar programas. dentro de las cuales las más destacadas son Fedora Linux. Es capaz de instalar. usted tendra que aprender a aplicar una serie de comandos en su equipo para poder llevar a cabo tareas de administracion y de gestion de paquetes. APT simplifica en gran medida la instalación y eliminación de programas en los sistemas GNU/Linux. Fedora. Originalmente rpm desarrollado por Red Hat para Red Hat Linux. es una herramienta de administración de paquetes. CentOS. SuSE Linux. fue desarrollada principalmente para actualizar y controlar los sistemas Red Hat. es un sistema de gestión de paquetes creado por el apt proyecto Debian. Red Hat Package Manager (RPM). Advanced Packaging Tool (APT) . La forma en que usted llevara a cabo esta administracion y gestion de paquetes sera mediante el uso de las siguientes herramientas Yellow dog Updater Modified (YUM) es una herramienta de software libre de gestión de yum paquetes para sistemas Linux basados en RPM.d/httpd start Para detener este mismo servicio solo debemos cambiar la palabra start por stop [root@localhost ~]#/etc/init. actualizar o eliminar software en sistemas operativos linux diferira de la forma en como usted lo hacia en sistemas operativos Windows o Mac. en la actualidad muchas distribuciones GNU/Linux lo usan. También se ha portado a otros sistemas operativos. Mandriva Linux.d/httpd restart Otra manera de arrancar.[root@localhost ~]#/etc/init. actualizar. stop o restar según sea el caso Ejemplo: [root@localhost ~]#service httpd start Manejo de Paquetes Introduccion a la gestion e instalacion de software Instalar. desinstalar. para ello solo bastara teclear lo siguiente: [root@localhost ~]#/etc/init. Dispone de un poderoso sistema de búsqueda que utiliza patrones de búsqueda flexibles.32 - . en cambio. esto es debido a que la mayoria de las aplicaciones desarrolladas para Linux no cuentan con un asistente de instalacion. Supongamos que tenemos ya instalado y configurado un servidor web apache y lo unico que falta es levantar el servicio. detener o reiniciar servicios sin necesidad de teclear toda la ruta anterior es mediante el uso de un alias el cual tiene la siguiente sintaxis [root@localhost ~]# service httpd {start|stop|status|restart|reload}  De igual forma solo debemos teclear start.d/nombreDelServicio  {start|stop|status|restart|reload}  A manera de ejemplificar el uso del anterior comando haremos lo siguiente. Se utiliza para instalar. se comienza por listar el paquete para conocer el nombre del mismo antes de desinstalarlo asi como tambien para asegurarse de que el paquete está instalado en nuestro sistema. la cual es capaz de instalar. Suse y White Box. sino sólamente el nombre del paquete. paqueteN yum update yum update --exclude=ekiga Comentario Instala paquetes con sus dependencias Te permite actualizar paquetes junto con sus dependencias Te permite eliminar paquetes junto con sus dependencias Actualiza e instala todos los paquetes del sistema operativo Actualiza e instala los paquetes del sistema operativo. Comando Comentario rpm -ivh paquete1. quitar..rpm rpm -Uvh paquete1.rpm Te permite actualizar paquetes . Los paquetes RPM fueron originalmente desarrollados por la empresa Red Hat con la intencion de implementarlo en el sistema operativo Red Hat Linux. sin la estensión RPM. Herramienta YUM Comando yum install paquete1 paquete2 . Centos. como Mandriva..rpm rpm -e nombreDelPaquete Te permite eliminar un paquete No hay que añadir la extensión. Herramienta RPM RPM (Red Hat Package Manager) es una herramienta de administracion y gestion de paquetes orientada para sistemas operativos Linux.paqueteN yum update paquete1 paquete2 . y proporcionar información sobre los paquetes . resumen y nombre del paquete yum info paquete1 Nos ofrece informacion detallada sobre algun paquete .paqueteN yum remove paquete1 paquete2 .. Generalmente. En un principio..33 - . rpm -q nombreDelPaquete Nos permite conocer si un paquete se encuentra instalado o no en el equipo rpm -qa | grep nombreDelPaquete Realiza una busqueda mas profunda sobre los paquetes que tenemos instalados o no en el equipo. dpkg El programa dpkg es la base del sistema de gestión de paquetes de Debian GNU/Linux. desinstalar y verificar paquetes. se diseñó para distribuciones GNU/Linux Debian. pero hoy día se utiliza también en distribuciones basadas en paquetes RPM. solo excluye el definido en la opcion --exclude Nos ofrece un listado de resultados de los paquetes producto de la yum search paquete1 búsqueda por coincidencia de cadena de caracteres en la descripción. Actualmente los paquetes RPM son utilizados por distribuciones linux como Fedora. actualizar.paquetes..deb.rpm Te permite instalar paquetes . d/ Para usos más avanzados agregaremos nuevas secciones y en caso de no encontrar lo que busca consulte man yum.34 - .log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 metadata_expire=1800 installonly_limit=2 tsflasg=repackage # PUT YOUR REPOS HERE OR IN separate files named file. [main] cachedir=/var/cache/yum keepcache=0 debuglevel=2 logfile=/var/log/yum.conf.repo # in /etc/yum.yum repolist enabled Nos permite conocer los repositorios que se encuentran habilitados yum localinstall paquete1. En este caso yum.repos.conf en la sección main define el comportamiento general de yum y establece las directivas base. de dónde se encuentran el cache. Configuración de YUM La configuración general de YUM se encuentra en  /etc/yum. Comentamos a abajo .conf los repositorios YUM configurados en sistemas operativos de la familia Red Hat se encuentran declarados en  /etc/yum.rpm Te permite actualizar un paquete RPM yum list installed Lista todos los paquetes instalados en el sistema yum list available Lista los paquetes que pueden ser instalados yum list updates Lista los paquetes que pueden ser actualizados yum grouplist Lista por grupos los paquetes instalados yum groupinfo "nombreDelGrupo" yum groupinstall "nombreDelGrupo" yum groupupdate "nombreDelGrupo" yum groupremove "KDE (K Desktop Environment)" Obtiene información de los grupos y de sus paquetes constitutivos Instala un grupo de aplicaciones Actualiza un grupo de aplicaciones Elimina un grupo de aplicaciones.rpm Te permite instalar paquetes RPM yum localupdate paquete1.d La primera cosa que podemos notar de los archivos de configuración es su estructura de bloques de secciones con sección. por ejemplo. Veremos que esta estructura se repite al momento de configurar los repositorios.repos. Así entonces si los metadatos actuales descargados son menos segundos de antiguo. Valor por omisión es ’1’ (mantener los archivos) debuglevel Nivel de mensajes de depuración en la salida. El valor por omisión es ‘0’. Es útil cuando se realiza actualizaciones de nivel de distribución (upgrade). installonly_limit . También es posible usar la palabra "never" implicando que los metadatos nunca expirarán. Esta opción también determina si una instalación de un archivo local RPM será verificado por su firma GPG o no. h o m respectivamente al valor especificado. obsoletes Esta opción sólo tiene efecto durante una actualización. cachedir Directorio donde yum debe almacenar su cache y archivos db. Opción en la línea de comando: --obsoletes gpgcheck Ya sea ‘1’ o ‘0’. Conmutador global para habilitar o deshabilitar las extensiones (plugins) de yum. plugins Ya sea ‘0’ o ‘1’. El rango práctico es de 0-10.5 hours. Esto le indica a yum si debe o no realizar una verficación de firma GPG en los paquetes. entonces yum no actualizará dichos metadatos a partir del repositorio. establece el comportamiento por omisión para todos los repositorios. Cuando está habilitado en la sección main. El valor por omisión es 1. logfile Ruta completa al nombre de archivo donde yum debe escribir sus actividades. Habilita la lógica de procesamiento de obsolescencias yum. Si encuentra que yum no está descargando la información para actualizaciones tan frecuente como usted quisiera. metadata_expire Duración en segundos después del cual los metadatos caducarán. es decir. Vea la sección PLUGINS del manual yum(8) para más información acerca de la instalación de extensiones yum. para complementar yumupdatesd ejecutándose una vez por hora. Por omisión el valor es ‘1’. Por omisión su valor es ‘0’ (extensiones deshabilitadas).un poco cada una de las directivas. exactarch Ya sea ‘1’ o ‘0’. El valor por omisión es ‘/var/cache/yum’. También puede cambiar del formato por omisión en segundos a días. horas o minutos agregando d. Puesto a ‘1’ provoca que yum update solo actualice los paquete de arquitectura que haya instalado. Determina si yum debe o no mantener el cache de los encabezados y paquetes después de una instalación exitosa. El valor por omisión es ‘2’. disminuya el valor de este parámetro. keepcache Ya sea ‘1’ o ‘0’.35 - . con esta opción habilitada yum no instalará un paquete i686 para actualziar un paquete i386. Vea también la documentación del comando yum upgrade para más detalles. La forma de instalar esta herramienta sera tecleando lo siguiente .. [BASH]# yum install yum­downloadonly Implementando downloadonly====== La manera de usar este comando es de la siguiente forma. Dentro de yum. Veamos como falla y cómo podemos resolver este problema con yumdownloader.conf. ya está instalado. La forma de instalar esta herramienta sera tecleando lo siguiente . [BASH]# yum install yum­fastestmirror Implementando downloadonly====== La manera de usar este comando es de la siguiente forma.d/ que comentaremos más adelante.f 100% |=========================| 252 kB    00:01 Listo. ’notriggers’. Extensiones de YUM downloadonly Este paquete nos permite descargar los paquetes RPM de alguna aplicación sin que estos sean instalados. Por omisión la lista está vacía. Sin embargo. Estas incluyen ’noscripts’. Puede poner todas o cualquiera de ellas. ya tenemos el rpm que queríamos.conf puede incluir la configuración de los repositorios pero esa forma de configuracióne está en desuso y se prefiere utilizar archivos individuales en /etc/yum. Intentemos ahora con yumdownloader. Por omisión el valor es ’3’. Estas son sólo algunas directivas.Cantidad de paquetes listados en installonlypkgs que se deben mantener instalados al mismo tiempo. [BASH]# yum ­­downloadonly install openssh­server Loading "downloadonly" plugin Setting up Install Process Setting up repositories Reading repository metadata in from local files Parsing package install arguments Nothing to do Pues claro. Poner este valor a 0 deshabilita la funcionalidad. no hay nada que instalar.. y ’repackage’. tsflasg Lista separado por comas o espacios de banderas de transacción que serán pasadas a rpm. mejor no toque.repos.3p2­19. [BASH]# yum install paquete1 Utilidades YUM yumdownloader Esta herramienta complementa al plugin downloadonly ya que dicho plugin sólo funciona si el software deseado no está instalado. [BASH]# yum install –downloadonly paquete1 fastestmirror Esta extensión está diseñada para ordenar la lista de espejos por velocidad de respuestas de cada uno antes de comenzar una descarga. [BASH]#  yumdownloader openssh­server openssh­server­4.36 - . ’nodocs’.. para más. si no sabe qué hacen éstas banderas en el contexto de una transacción rpm.. package-cleanup Esta herramienta ayuda a detectar problemas en la base de datos rpm y a . ’test’. man yum. deb dpkg -r paquete1.resolverlos. Busca en los archivos transaction-all* y transaction-done* que normalmente se encuentran en /var/lib/yum si una transacción ha sido abortada en el medio de su ejecución. Te permite instalar varios paquetes deb. Obtienes la ayuda del comando dpkg. Ejemplo. Hace búsquedas en SO de los paquetes ya instalados.deb dpkg -l paquete1..deb dpkg --status paquete1. Muestra la información del paquete. [BASH]# yum-complete-transaction Herramienta DPKG Comando dpkg -i paquete1.37 - . Muestra la información de donde se instalo el paquete. Muestra el estado del paquete.deb dpkg --purge paquete1.deb dpkg --search paquete1. Borra paquete instalado en el sistemas.deb dpkg --info paquete1. Puede ejecutar este programa más de una vez para limpiar todas las transacciones sin terminar.deb dpkg –help Comentario Te permite instalar paquetes deb. dpkg --configure Ayuda arreglar a terminar de configurar paquetes rotos o que no se terminaron -a de instalar. Comando Comentario package-cleanup Lista paquetes huérfanos o aquellos paquetes que no son provistos por --orphans ninguno de los repositorios configurados package-cleanup --dupes package-cleanup --problems Lista los paquetes con duplicados en la base de datos RPM Lista los problemas de dependencias en la base de datos RPM yum-complete-transaction yum-complete-transaction es un program que busca transacciones yum incompletas o abortadas en el sistema e intenta completarlas.deb dpkg -i *. Borra paquete instalado sin dejar rastro. Si se encuentra más de una transacción no terminada se intentará completar la más reciente primero. se ocupa solo en emergencias cuando las herramientas avanzadas . apt-get install --reinstall paquete1 apt-get -f install apt-get remove paquete1 Reinstala paquetes dañados. Borra paquete y sus dependencias pero no las configuraciones. Instala/borra paquetes y dependencias que esten o sin cumplir paquetes. aptitude search paquete1 aptitude show paquete1 aptitude clean aptitude autoclean Busca paquetes por nombre o expresión. apt-get upgrade Actualiza los paquetes de la SO. Desbloquea paquete. Muestra información detallada de un paquete. Herramienta APT Comando Comentario apt-get update Actualiza la lista de paquetes. Borra paquete. para que no sean actualizados o eliminados. . aptitude upgrade Actualiza los paquetes que tengamos instalados en nuestro sistema. Borra paquete y sus dependencias. como también limpia las llaves de los repositorios. sus dependencias y archivos de configuración. apt-get install paquete1 Instala paquetes y con sus dependencias. Bloquea paquete. Elimina los archivo de paquetes descargados.no pueden solucionar el problema. aptitude dist-upgrade Actualiza SO a la nueva versión de la misma. aptitude update Actualiza lista de paquetes nuevos. Herramienta APTITUDE Comando Comentario aptitude install paquete1 aptitude remove paquete1 aptitude purge paquete1 aptitude hold paquete1 aptitude unhold paquete1 Instala paquete y con las dependencias que tenga.38 - . Elimina los archivos de paquetes descargados. el único y hasta hoy es el mas utilizado ya que . posteriormente paso a convertirse en estandar para todos los sistemas operativos Linux El Ambiente Linux Para que entiendas lo que es y como funciona el Shell. efectuando su manejo y control. apt-get dist-upgrade Actualiza distribución a la mas reciente. su principal funcion es la de servir como puente entre los usuarios y el hardare fisico de un equipo. tal como el Bourne shell o BASH. de forma que todo lo que interacciona con el sistema operativo. apt-get check Verifica que hay dependencias o paquetes . Es también llamado de Standard Shell por haber sido durante varios años. Manejo de comandos Sobre SHELL El shell es una interprete de comandos diseñado especificamente para sistemas operativos Unix y derivados como Linux y BSD. este fue durante muchos años el Shell patrón del sistema operativo Unix. apt-cache search paquete1 Busca paquete o una cadena de texto. apt-get autoremove Borra paquetes ya obsoletos o no necesarios. y es quien hace que el hardware funcione. lo utilizan para realizar las tareas especificas para las cuales fueron desarrolladas. apt-get clean Elimina paquetes descargados. primero te mostraré como funciona el ambiente en capas. Algunas variantes del SHELL Bourne Shell (sh) Desarrollado por Stephen Bourne de la Bell Labs (de AT&T donde también fue desarrollado el Unix). su núcleo. Shell significa concha.39 - . o sea que. Los programas y comandos que envuelven el kernel. Para ello analizaremos la siguiente imagen. Por puente me refiero a que el shell se encargara de interpretar y traducir los comandos en un lenguaje que pueda ser entendido por el hardware del equipo. El BASH fue el shell usado en las primeras versiones de los sistemas operativos Unix . El término shell también hace referencia a un programa particular. tiene que pasar por su filtro. En este gráfico se ve que la capa del hardware es la mas profunda y se encuentra conformada por los componentes físicos de tu equipo. también borra cabeceras de repositorios. envoltura. Encerrando todo eso viene el Shell que tiene este nombre porque en ingles. sus dependencias y archivos de configuración. apt-cache showpkg Muestra información sobre el paquete. queda entre los usuarios y el sistema operativo. viene la capa del kernel que es el corazón de Linux. apt-cache pkgnames Muestra una lista rápida de todos los paquetes del sistema. Envolviendo a ésta.apt-get remove –purge paquete1 Borra paquete. apt-cache dumpavail Muestra información sobre los paquetes que estan disponibles. apt-get autoclean Elimina paquetes descargados. fue transportado para todos los ambientes Unix y distribuciones Linux. Korn Shell (ksh) Desarrollado por David Korn, también de la Bell Labs, es un superconjunto del sh, o sea, posee todas las facilidades del sh y a ellas se agregaron muchas otras. La compatibilidade total con el sh esta atrayendo a muchos usuarios y programadores de Shell para este ambiente. Boune Again Shell (bash) Este es el Shell mas moderno y cuyo número de adeptos crece mas en todo el mundo, sea por ser el Shell default de Linux, su sistema operativo natural, o sea por su gran diversidad de comandos, que incorpora inclusive diversas instrucciones características del C Shell. CShell (csh) Desarrollado por Bill Joy de la Berkley University es el Shell mas utilizado en ambientes *BSD e Xenix. La estrutura de sus comandos es bastante similar al del lenguage C. Su gran pecado fue ignorar la compatibilidad con el sh, partiendo por un camino propio. Además de estos Shells existen otros, pero contigo voy a hablar solamente sobre los tres primeros, tratandolos genéricamente por Shell y señalando las peculiaridades de cada uno que eventualmente tengan. Introduccion a BASH Conociendo el SHELL de nuestro equipo Una forma de conocer sobre cual SHELL estamos trabajando es tecleando el siguiente comando en una terminal # echo $SHELL /bin/bash Si obtuviste el mismo resultado que en la linea de ariba entonces estas utilizando el Shell Bash, en caso contrario de no haber obtenido lo mismo, significa entonces que tu estas usando algun otro Shell. Usando el comando cd current working directory o cd es el comando utilizado para indicar al Shell el directorio en el cual queremos trabajar. Hagamos una prueba de este comando navegando en nuestro propio sistema de archivos. En la terminal teclee lo siguiente: [BASH]# cd / Este comando le indica al BASH que queremos trabajar en el directorio /, tambien conocido como raiz Rutas (Paths) Para conocer el directorio actual de trabajo en el que se encuentra el BASH escriba: [BASH]# pwd /  En el ejemplo anterior , el argumento / es conocido como la ruta o camino hacia donde queremos dirigirnos. En particular, el argumento / es un ruta absoluta Rutas Absolutas Algunos ejemplos de rutas absolutas son las siguientes: /boot /etc /root - 40 - /usr/local/bin Note que todas estas rutas absolutas tienen un comun denominador, nos referimos a la barra / Analicemos a detalle la ultima linea del ejemplo: Si usted teclea → cd /usr/local/bin En ella indicamos al Shell a traves del comando cd (current working directory) que primero entre al directorio / , desde ahi luego entrara al directorio usr posteriormente al directorio local y recien desde ahi entrara a bin. Las rutas absolutas siempre comenzaran a evaluarse a partir de /. Rutas Relativas Las rutas relativas son todas aquellas que no comienzan a evaluarse desde / Por ejemplo, si estamos trabajando en la ruta /usr [BASH]# cd /usr Entonces, ahora usted podra usar una ruta relativa para cambiar el directorio actual de trabajo a /usr/local/bin de la siguiente forma: [BASH]# cd local/bin [BASH]# pwd /usr/local/bin Usando el . . (punto a punto) El uso del . . sirve unicamente para regresar un nivel desde el directorio de trabajo en el cual estamos trabajando. Ejemplo: [BASH]# cd /usr/local/bin [BASH]# pwd /usr/local/bin [BASH]# cd ../../ [BASH]# pwd /usr En la primera seccion del ejemplo indicamos a traves del comando cd (current working directory) que primero entre al directorio / , desde ahi luego entrara al directorio usr posteriormente al directorio local y recien desde ahi entrara a bin. En la segunda seccion del ejemplo indicamos mediante el uso del (../) punto punto que regrese un nivel, pero inmediatamente indicamos nuevamente que retroceda otro nivel mas (../) Por cada retorno de nivel debera hacerse uso del (..) punto punto Entendiendo el . (punto) El uso del punto (. ) sirve para ejecutar algún programa situado en el directorio actual. Ejemplo : [BASH]# ./ejecutable En este ejemplo, se ejecutara el archivo llamado ejecutable que reside en el directorio actual de trabajo. Usando los comandos de Linux El comando ls Vamos a darle una pequeña mirada al comando ls, el cual, ya conozca tal vez, pero por si no lo sabe , este sirve para listar el contenido del directorio actual de trabajo. Hagamos un ejercicio, con ayuda del comando “cd” muevase al directorio de trabajo /var [BASH]#  cd  /var Ahora con ayuda del comando “ls” liste el contenido de dicho directorio [BASH]#  ls X11R6  cache  crash  games  lib  lock  log  mail  opt  run  spool  tmp   Si al comando ls le agregamos el parametro -a nos listara todos los archivos del directorio - 41 - incluyendo los archivos ocultos.Los archivos ocultos son indentidicados por llevar un punto (.) al princio del nombre del archivo. Ejemplo: [BASH]#  ls ­a .emacs           .gvfs        .pulse               .wapi                  Para realizar un listado completo sobre la informacion de algun directorio basta con agregar al comando ls el parametro -l Nuevamente con ayuda del comando “cd” muevase al directorio de trabajo /var, pero esta vez use el comando ls junto el parametro -l y compare sus resultados con el primer ejemplo [BASH]#  cd  /var [BASH]#  ls ­l total 52  drwxr­xr­x 11 root root 4096 jun  9 04:59 adm  drwxr­xr­x 19 root root 4096 jun  9 11:28 cache  drwxrwxrwt  2 root root 4096 dic  3  2008 crash  drwxr­xr­x  2 root root 4096 dic  9  2008 games  drwxr­xr­x 41 root root 4096 jun  9 11:28 lib  drwxrwxr­t  6 root uucp 4096 jun 17 11:40 lock  drwxr­xr­x 13 root root 4096 jun 16 15:38 log  lrwxrwxrwx  1 root root   10 jun  9 04:46 mail ­> spool/mail  drwxr­xr­x  2 root root 4096 dic  3  2008 opt  drwxr­xr­x 25 root root 4096 jun 17 11:40 run  drwxr­xr­x 12 root root 4096 jun  9 04:49 spool  drwxrwxrwt  8 root root 4096 jun 17 10:44 tmp  drwxr­xr­x  3 root root 4096 dic  9  2008 X11R6  drwxr­xr­x  3 root root 4096 dic  9  2008 yp La opcion -l le resultara de gran utilidad cuando quiera ver informacion sobre permisos, tiempos de modificacion, tamaño o propiedad de los contenidos listados. De forma mas detallada, la primer columna muestra la informacion sobre los permisos para cada elemento listado. La columna siguiente lista el numero de links para cada objeto del sistema de archivos. La tercer y cuarta columna listan el propietario del elemento, y el grupo al cual pertenece, respectivamente. La quinta muestra el tamaño de los objetos, mientras que la sexta lista cuando fue realizada la ultima modificacion del objeto . La ultima columna es el nombre del objeto. Si el archivo es un enlace simbolico, entonces usted ver ́ una flecha --> y la ruta hacia la cual el link simbolico apunta. En el capitulo 7 veremos mas a fondo este comando Comodines Los comodines son caracteres que se utilizan en lugar de otros caracteres que el sistema rellena. Los dos comodines más frecuentes son: • El asterisco * • La interrogación ? Aunque en ocasiones se confundan, su significado es diferente y producirán resultados totalmente distintos. El asterisco significa ninguno, alguno o todos los caracteres: Ejemplo: [BASH]#  ls e* ed  edusat.txt éxito.pdf eduardo.gif educacion Este comando mostrará todas las entradas de archivos o directorios dentro del directorio actual que comiencen con la letra e, y que tengan cualquier número de caracteres. Hay que prestar atención a que el comando encuentra la “e” sola y la “e” seguida de cualquier número de caracteres a continuación. En contraste, la interrogación (?) es un contenedor para un y sólo un carácter. - 42 - Si la entrada puede comenzar por esas letras tanto en mayúsculas como en minúsculas.43 - . El comando mkdir Vamos a darle una pequeña mirada ahora al comando mkdir. Si quisiésemos encontrar las entradas que comiencen por e y cuyo nombre tenga 5 caracteres en total. el comando mkdir no crea directorios padre. De esta manera. [BASH]# mkdir principal/secundario/ultimo mkdir: no se puede crear el directorio "principal/secundario/ultimo": No such file or  . y el shell los tratará individualmente: En el siguiente ejemplo encontrará todas las entradas que comiencen por “d” o por “e” y que contengan un número ilimitado de caracteres. Estos dos comodines no son excluyentes. Sin embargo.pulse              . el comando: [BASH]#  ls e? ed   Encontrará entradas de archivos y directorios dentro del directorio actual que comiencen por la letra “s” y que únicamente tengan una letra más.wapi     Por defecto. [BASH]#  ls [de]* Para encontrar las entradas de longitud de 3 caracteres que comiencen por “d” o por “e”. para encontrar sólo los archivos que tengan una extensión de tres letras dentro del directorio actual. podemos expresar subconjuntos de ellos. el asterisco significa todos o ninguno. si lo que queremos es encontrar todas las entradas que comiencen por una letra minúscula pero no por un número u otro carácter. la ruta completa hasta el anteultimo elemento debe existir previamente. Por ejemplo. Por ejemplo. utilizaríamos: [BASH]#  ls e???? En resumen. Ejemplo: [BASH]# mkdir agenda. si quiere crear los directorios → principal/secundario/ultimo tendra que crearlos uno a uno. de modo que se pueden combinar según las necesidades. podemos utilizar abcdefghijklmnopqrstuvwxyz. y el interrogante siempre significa uno. La funcion de este comando es la de crear nuevos directorios.??? Para complicar un poco más las cosas también podemos utilizar los corchetes ( ) para especificar posibles valores. utilizaremos: [BASH]#  ls *. Todos los valores posibles deben estar dentro de los corchetes.gvfs        .Utilizando las mismas posibilidades que antes. si queremos buscar entradas que comiencen por alguna letra entre la “d” y la “t”. podemos usar DEFGHIJKLMNOPQRSTdefghijklmnopqrst o D-Td-t . utilizaremos: [BASH]#  ls [de]??? El número de caracteres que podemos incluir dentro de los corchetes es teóricamente ilimitado. Debido a que esto es un rango. una forma mucho más simple de obtener el mismo resultado es poniendo: [BASH]#  ls [a­z]??? Los rangos no tienen que ser series completas de números o caracteres.emacs           . podemos utilizar indistintamente defghijklmnopqrst o d-t. [BASH]# echo "HELLO LINUX" > archivo1 El signo mayor (>) le dice al BASH que escriba la salida de echo a un archivo llamado archivo1. Por ejemplo. ya que este comando. [BASH]# mv archivo1 nuevoarchivo1 Veamos otra manera de usar el comando mv. ademas de permitirnos renombrar archivos. que se usan para buscar y cambiar archivos. comando cat y cp Para ver los contenidos de un archivo en una terminal. nos permite mover uno o mas archivos hacia otra ubicacion. use el comando cat: [BASH]# cat archivo1 HELLO LINUX  Bien.5. le agregaremos algunos datos. mkdir tiene la opcion -p la cual puede crear una rama de directorios en un solo paso [BASH]# mkdir  ­p  principal/secundario/ultimo Para obtener mas informacion sobre el comando mkdir escriba [BASH]# man mkdir         comando touch Touch es un comando que sirve para crear archivos sin contenido [BASH]# touch archivo1 comando echo Ahora que el archivo existe.44 - .6 hablamos un poco sobre el comando cat. debido a que son especialmente útiles en las labores administrativas diarias. el cual como mencionamos es un .ahora podemos hacer uso del comando cp para crear una copia del archivo nombrado “archivo1” [BASH]# cp archivo1 copiadearchivo1 comando mv Usemos ahora el comando mv para renombrar “archivo1” a “nuevoarchivo1”. Probemos como funciona el comando echo [BASH]# echo "HELLO LINUX" Ejecutemos ahora el mismo comando pero ahora redireccionando su salida al archivo vacio que creamos en el punto anterior. Es necesario comprender el uso de estas herramientas. que toma sus argumentos y los imprime en la salida est ́ ndar (standard output). para mover archivo1 a → /var/ escribira [BASH]# mv archivo1 /var/ Procesando cadenas de texto usando filtros En este capitulo cubriremos los temas referentes a las herramientas comunmente implementadas en los procesadores de textos disponibles para Linux Éstas incluyen diversas utilidades de filtrado. así como las herramientas de entrada y salida. Listando el contenido de un archivo En en capitulo 6. Esto podemos hacerlo mediante el comando echo .directory [BASH]# mkdir principal [BASH]# mkdir principal/secundario [BASH]# mkdir principal/secundario/ultimo  Sin embargo. Ej: --field-separator=. La sintaxis para usar este comando es la siguiente: [BASH]# cat nombreDelArchivo Ordenando lineas de un archivo con Sort Sort nos permite ordenar los registros o líneas de uno o más archivos. Podemos .field utilizar el parámetro --field-separator para indicar que vamos a usar otro delimitador -separator de campo cualquiera. mezclar. La opción abreviada de --field-separator es -t. y comparar líneas de archivos.-help Muestra la ayuda y salida . de mayor a menor. -u Nos permite suprimir todas las líneas repetidas después de realizar la ordenación. es decir. se usa como delimitador de campos el espacio en blanco.. Normalmente. Se usa para ordenar.45 - . Este comando sigue la siguiente sintaxis: [BASH]# sort opciones nombreDelArchivo  Opciones Descripcion -b Ignora espacios en blanco -c Revisa si el archivo esta ordenado -d Considera solo los caracteres alfanumericos y ordena por directorio de telefono -f Este parámetro nos sirve para indicar que las mayúsculas y las minúsculas se van a tratar de forma diferente y que por tanto se va a seguir un ordenamiento alfabético -m Une los archivos ya ordenados sin reordenarlos -M Compara archivos ordenado -n Este parámetro nos sirve para ordenar los campos numéricos por su valor numérico -o FILE Escribe en un archivo específico de salida en lugar de la salida estándar -r Nos permite realizar una ordenación inversa.comando muy usado para listar los contenidos de archivos de configuracion.-version Muestra versión y salida Ejemplo: Creémos un archivo de texto llamado lista con el siguiente contenido: [BASH]# vi lista ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ 3 centos 7 Red Hat debian 13 Novell Inc edubuntu 27 . -k numero De este modo especificaremos por qué columna o campo vamos a realizar la ordenación en las versiones más recientes de Linux. . ejecute la siguiente orden: [BASH]# sort lista  Observe el resultado. se ordena la lista por orden numérico seguido de orden alfabético. el símbolo + precede al numero de campo con cada archivo separado por espacios. con mayúsculas antes que las minúsculas. Segmentando un texto con Cut La utilidad cut se usa para escribir partes seleccionadas de un archivo en la salida estándar o . Los campos se pueden separar por espacios o tabuladores y son numerados empezando por cero. Genere el archivo llamado lista con el siguiente contenido [BASH]# vi lista ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ – ­ ­ ­ ­ iliana castillo zaira munive alethya zamano pilar diaz mayra rodriguez mariana rivera  Ordenaremos esta lista por el apellido de estas personas de la siguiente manera: [BASH]# sort +1 +0 lista ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ – ­ ­ ­ ­ iliana castillo  pilar diaz  zaira munive  mariana rivera  mayra rodriguez  alethya zamano  El uso de estos campos permite mucha flexibilidad en ordenar listas en archivos. dos archivos se fusionan y se ordenan.46 - . Cuando se ordenan campos.Canonical fedora 32 Al terminal. por defecto. También es posible ordenar listas de nombres por campos. ejecute la siguiente orden: [BASH]# sort archivo1 archivo2 ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ – ­ ­ ­ ­ centos  debian  fedora  ubuntu  En este otro ejemplo. Es importante recordar que la utilidad sort no cambia el archivo original. 13  27  3  32  7  Canonical  centos  debian  edubuntu  fedora  Novell Inc  Red Hat  Genere los siguientes archivos Al terminal. La salida se envía a la salida estándar donde se puede visualizar o redireccionar hacia otro comando o archivo. 47 - . La siguiente tabla muestra la gama de opciones que pueden ser integradas al comando cut: Opciones Descripcion -s Pega líneas desde un archivo a la vez -d delimit-list Usa los caracteres especificados en delimit-list consecutivamente en vez del carácter tab cuando separa archivos mezclados. Es posible tambien seleccionar un trozo de una línea específica. varios trozos..version Muestra informacion sobre la version A continuación un ejemplo del uso de estos rangos para escribir en la salida solo los primeros 5 caracteres de cada línea del archivo que dimos de alta al final de la seccion 6. La utilidad cut también se puede usar para seleccionar columnas o campos desde archivos específicos.. [BASH]# paste listas apodos Nos daría como resultado los nombres de la lista seguidos de los apodos. delimitados por tabuladores .2 llamado listas.help Muestra la ayuda .BASH.2 llamado listas.6. o un rango especifico. Las líneas correspondientes del archivo específico se escriben en la salida estándar con cada línea separada por un carácter tabulador .6. Genere el archivo llamado apodos con el siguiente contenido [BASH]# vi apodos ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ – ­ ­ ­ ­ hackhat gaymarc bigbuitre javarambo rufodog  Ahora veremos un ejemplo del comando paste aplicandolo al archivo que acabamos de generar en conjunto con el archivo de la seccion 6. La siguiente tabla muestra la gama de opciones que pueden ser integradas al comando cut: Opciones Descripcion -b Escribe en la salida el rango de bytes especificos -c Escribe en la salida solo los caracteres especificados -f Escribe en la salida solo los campos especificados. [BASH]# cut ­c 1­5 listas ilian  zaira  aleth  pilar  mayra  maria  Pegando texto con Paste La utilidad paste permite juntar texto desde múltiples archivos. [BASH]# paste lista apodos ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ – ­ ­ ­ ­ iliana castillo hackhat  . La anchura por defecto que utiliza fmt para una línea es de 75 caracteres. pero se prefiere que todo el documento esté en minúsculas. intenta romper la línea después de la primera palabra o antes de la última palabra de la sentencia. considerando la segunda línea como un párrafo de una línea -s -u -NUMERO o -wNumero -p PREFIX Especifica que las líneas van a ser divididas y no juntadas Especifica que espacio uniforme se va a utilizar. Y aplique el comando fmt de la siguiente forma: [BASH]# fmt ­40 fedora  Podra verificar que el texto se formateo correctamente. Un ejemplo sería un documento que utiliza mayúsculas y minúsculas. modifique o distribuya. tambien puede juntar o separa líneas en un esfuerzo para que estas tengan la misma longitud. Este comando es utilizado para especificar la anchura de las líneas. esto reduce la separación entre todas las palabras a un espacio y a dos espacios entre las sentencias Establece la largura de la línea al NUMERO indicado Especifica que las líneas que empiecen por PREFIX serán modificadas Genere el archivo llamado apodos con el siguiente contenido [BASH]# vi fedora ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ – ­ ­ ­ ­ Fedora es un sistema operativo basado en Linux que incluye lo último en software libre  y de código abierto. Otra de las funciones de fmt es la de intentar separar las líneas al final de cada sentencia.zaira munive           gaymarc  alethya zamano  bigbuitre  pilar diaz             javarambo  mayra rodriguez rufodog  mariana rivera  Formateando parrafos El comando fmt formatea cada párrafo en un archivo y la envía a la salida estandar. el comando tr se encarga de llevar a cabo esta area Este comando sigue la siguiente sintaxis: . para ello. Lo construye gente alrededor del mundo que trabajan juntos como una comunidad: El Proyecto Fedora es abierto y todos son bienvenidos. El ancho por defecto puede ser modificado usando la opción adecuada en el comando fmt.48 - . Cuando esto no es posible. Borrando o sustituyendo caracteres. Fedora es siempre gratis para que cualquiera lo use. Hay veces en las que se quiere buscar en un documento caracteres específicos y luego borrarlos o reemplazarlos por otros. La siguiente tabla muestra la gama de opciones que pueden ser integradas al comando fmt. Opciones -c Descripcion Mantiene igual los espacios de principio de párrafo y alinea el párrafo con margen izquierda en la segunda línea Trabaja como -c excepto que los espacios de comienzo de la segunda línea -t sean igual que la primera. . Opciones -d -s Descripcion Borra un carácter especificado.49 - .help Muestra la ayuda ..[BASH]# tr opciones  La siguiente tabla muestra la gama de opciones que pueden ser integradas al comando tr. . -q No muestra las cabeceras. .. -n NUMERO Muestra el NUMERO de líneas especificado. La siguiente tabla muestra la gama de opciones que pueden ser integradas al comando head. Este comando sigue la siguiente sintaxis: [BASH]# head opciones nombreDelArchivo . Opciones -c NUMERO Descripcion Especifica el número de bytes a ser mostrados.version Muestra la versión. Por defecto nos muestra las 10 primeras líneas. Remplaza una secuencia de caracteres por un carácter. -v Muestra las cabeceras.version Muestra la version Genere un archivo llamado semana con el siguiente contenido [BASH]# vi semana ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ – ­ ­ ­ ­ Lunes Martes Miercoles Jueves Viernes Sabado Domingo  Y aplique el comando fmt de la siguiente forma: [BASH]# tr ­d aeiou Dicha accion borrara todas las vocales del archivo “semana” [BASH]# cat semana | tr ­d  ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ – ­ ­ ­ ­ Lns  Mrts  Mrcls  Jvs  Vrns  Sbd  Dmng  Ver el inicio de un archivo El comando head nos permite ver el comienzo de un archivo..help Muestra la ayuda . el comando tail muestra las últimas 10 lineas de un archivo por defecto . Antes de usar el comando join. Así. Como head. si tu estás utilizando dos archivos que contienen el nombre y el primer apellido y quieres juntar los archivos utilizando el apellido. el archivo debe de comenzar con los campos de unión. -q No muestra las cabeceras. . Las entradas encontradas en los dos archivos son mostradas en la salida estandar donde pueden ser redireccionadas a un archivo. Muestra las líneas y va mostrando líneas según se escriben en el archivo.-help Muestra la ayuda .50 - . Este comando sigue la siguiente sintaxis: [BASH]# tail opciones nombreDelArchivo Uniendo multiples archivos El comando join en realidad busca en dos archivos entradas comunes.retry esté inaccesible. Especifica el número de líneas desde el comienzo a partir de donde empieza a +NUMERO mostrar. Puedes combinar archivos usando campos. Esto se consigue muchas veces con el comando sort basado en los campos que van a ser juntados. -f Este comando puede venir bien para archivos que crecen como por ejemplo los archivos LOG. -1 FIELD Especifica el campo en el archivo 1 -2 FIELD Especifica el campo del archivo 2 -t char Especifica el carácter separador del archivo de entrada y de salida. -v Muestra las cabeceras.Ver el final de un archivo Tail nos permite ver el final de un archivo. Indica a las instrucción que se mantenga intentando abrir un archivo cuando este . La siguiente tabla muestra la gama de opciones que pueden ser integradas al comando join. . Opciones -NUMERO Descripcion Especifica el número de líneas a ser mostrado. La siguiente tabla muestra la gama de opciones que pueden ser integradas al comando tail. entonces los dos archivos deben ser ordenados previamente utilizando el campo apellido. -c NUMERO Especifica el número de bytes a ser mostrados. El comando join usa campos de unión para combinar líneas de múltiples archivos. Opciones Descripcion -I Especifica que caso es ignorado cuando se combinan los archivos... -n NUMERO Muestra el NUMERO de líneas especificado.version Muestra la versión. Opciones -l LiNEAS Descripcion Especifica que caso es ignorado cuando se combinan los archivos.. cuyo valor por defecto es de 1000 líneas. de valor “x” por defecto. -b BYTES Especifica el campo en el archivo 1 -c BYTES Especifica el campo del archivo 2 . . Genere un archivo llamado arreglo con el siguiente contenido [BASH]# vi arreglo ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ – ­ ­ ­ ­ primero segundo tercero cuarto quinto sexto septimo octavo novedo decimo Y aplique el comando split de la siguiente forma: [BASH]# split ­l2 arreglo arreglosegmentado El archivo “arreglo” se divide en varios archivos nombrados “arreglosegmentado”.version Muestra la versión.version Muestra la versión. la sintaxis será “zaa”... Este comando sigue la siguiente sintaxis: [BASH]# join opciones nombreDelArchivo Segmentando un archivo La utilidad SPLIT se usa para dividir un archivo grande en varios segmentos mas pequeños.-v FILE# . Esta utilidad crea archivos de una cierta longitud. etc. “zab”. “ab”. .verbose Especifica el carácter separador del archivo de entrada y de salida. Si se deben crear más de 676 archivos.help Se imprime una línea por cada línea no “pareada” encontrada en el archivo FILE# Muestra la ayuda .. seguido por una combinación de letras que sigue el patrón de “aa”. y los nombra de forma secuencial. la entrada de datos estándar se utilizará por defecto. Los nombres de los archivos están formados por un prefijo.help Muestra la ayuda . cada uno de los cuales contiene cinco líneas. etc. La sintaxis correcta para el comando split es la siguiente: [BASH]# split opciones nombreDelArchivo archivoSalida La siguiente tabla muestra la gama de opciones que pueden ser integradas al comando split. “ac”.. Cuando no se especifica ningún archivo de entrada para la utilidad SPLIT.51 - . Adicionalmente. una línea con la fecha. en cada página se escribe un encabezado de cinco líneas: dos líneas en blanco. -N NUMERO Empieza contando por NÚMERO en la primera línea de la primera página impresa. -d Inserta un doble espacio en la salida -f -h TEXTO Utiliza saltos de página en lugar de caracteres de nueva línea para separar páginas.Eliminando lineas repetidas en un archivo El comando uniq es una herramienta que nos ayuda a eliminar los datos repetidos en un archivo Este comando sigue la siguiente sintaxis: [BASH]# uniq opciones nombreDelArchivo La siguiente tabla muestra la gama de opciones que pueden ser integradas al comando uniq. paginándolos y opcionalmente escribiéndolos en un formato de multicolumna. Hay numerosas opciones para especificar el formato producido con la utilidad PR. imprimiéndolos en paralelo. La sintaxis correcta para el comando pr es la siguiente [BASH]# pr opciones nombreDelArchivo Por defecto. uno por columna. Solamente se utiliza para formatos de salida multicolumna . escribiéndolos en la salida estándar. Igualmente. Establece el ancho de página a un número de caracteres igual a CARACTERES -w CARACTERES (el valor por defecto es 72).52 - . el nombre del archivo y el contador de página. -a Imprime las columnas en horizontal en lugar de en vertical. Opciones Descripcion -c Enumera el número de ocurrencias (líneas que se repiten) -d Solo conserva las líneas que se repiten -u Solo conserva las líneas que son únicas Convirtiendo archivos para imprimir La utilidad pr formatea y prepara archivos para imprimir. Utiliza el texto especificado en TEXTO en lugar del nombre del archivo dentro del encabezado -l LINEAS Establece el número de líneas por página -m Imprime todos los archivos en paralelo. también puede unir archivos. uno por columna . algunas de las cuales se muestran en la siguiente tabla : Opciones -COLUMNAS Descripcion Produce tantas columnas como el número COLUMNAS y equilibra el número de líneas en cada columna dentro de cada página. también se escribe un pie de página de cinco líneas. y dos líneas más en blanco. -W Establece el ancho de página a un número de caracteres igual a CARACTERES CARACTERES siempre. El valor por defecto es 72. Mostrando estadisticas de un archivo La utilidad WC cuenta el número de bytes, palabras separadas por espacios en blanco y saltos de línea para cada uno de los archivos indicados. Se muestra una línea de resultados para cada uno de los archivos, y si el archivo fue indicado como un argumento, muestra su nombre a continuación. Si se indica más de un archivo, la utilidad muestra una línea final indicando los resultados acumulativos con el texto “total”. El orden en el que se muestran los resultados es el siguiente: en primer lugar los saltos de línea, luego las palabras y finalmente los bytes. Por defecto, cada resultado se muestra justificado a la derecha en un campo de siete bytes con un espacio en blanco entre cada uno de los resultados, de manera que los números y los nombres de los archivos se alinean correctamente en columnas, algunas de las cuales se muestran en la siguiente tabla : Opciones Descripcion -c Muestra únicamente el número de bytes -w Muestra únicamente el número de palabras -l Muestra únicamente el número de líneas -L Muestra la longitud de la línea más larga - - help Muestra información de ayuda y termina - - version Muestra información sobre la versión y termina La sintaxis correcta para el comando wc es la siguiente [BASH]# wc opciones nombreDelArchivo Añadiendo numeros de linea a un archivo. La utilidad nl es útil para mostrar los números de línea de un archivo. Se organiza el archivo de entrada en páginas lógicas y por defecto, el número de línea se inicializa a 1 al principio de cada una de ellas. Se tratan todos los archivos de entrada como un único documento y no se inicializan los números de línea ni las páginas lógicas entre archivos. Una página lógica consiste en tres secciones separadas por una línea en blanco: encabezado, cuerpo y pie de página. Cualquier de ellas puede estar vacía y puede estar numerada de una forma distinta a las otras dos. El texto que preceda el primer separador de sección en el archivo de entrada se considerará parte del cuerpo, de manera que la utilidad nl tratará un archivo sin delimitadores de sección como una única sección de cuerpo , algunas de las cuales se muestran en la siguiente tabla : Opciones Descripcion -a Numera todas las líneas -t Numera únicamente las líneas no vacías -n No numera las líneas. Es el valor por defecto de los encabezados y los pies de página. - 53 - -i NUMERO Incrementa el número de línea en una cantidad igual a NÚMERO. El valorpor defecto es uno. -p No inicializa los números de línea al principio de cada página lógica. -s CADENA Añade la cadena de caracteres CADENA después de cada número de línea. -v NUMERO Establece el NÚMERO inicial de cada página lógica. -w NUMERO Especifica el NÚMERO de espacios que se reservan para los números de línea. El valor por defecto es seis La sintaxis correcta para el comando nl es la siguiente [BASH]# nl opciones nombreDelArchivo Administracion de Archivos Listando el contenido de un directorio Anteriormente estuvimos trabajando un poco con el comando ls (list), el cual como explicamos en el capitulo anterior, es un comando para listar el contenido de un directorio A continuacion indagaremos un poco mas en el uso de este comando. El comando ls puede aceptar opciones como argumento. Hay un gran número de opciones para éste comando que permiten un gran control sobre el resultado. En la tabla siguiente se muestran las opciones más usadas: Opciones Descripcion -a Lista todos los contenidos del directorio. -A Trabaja como el -a excepto que no lista “.” y el “..” -B No se lista los archivos que finalizan con | -d Muestra el nombre del directorio en el listado -L Muestra la información para los archivos enlaces o referenciales -R Muestra los directorios recursivamente. Una variedad de opciones pueden ser usadas para especificar la información mostrada en un listado de archivos, algunas de estas opciones se muestran en la siguiente tabla : Opciones Descripcion -G Especifica que grupo de informacion no se muestra -I Muestra el numero inode -l Muestra el tipo de archivo, permisos, contador de enlaces permanentes, propietario, grupo propietario y fecha de la última modificación -o Muestra la misma información que -l menos la información de grupo que es excluida -s Muestra el tamaño del archivo en bloques de 1024 Kb El comando ls utiliza a veces opciones para ordenar la salida, las cuales se muestran en la siguiente tabla. - 54 - Opciones Descripcion Muestra el resultado acorde con la fecha de modificación o la fecha de modificación de -c inode -f Muestra el resultado con el orden en que han sido salvados en el directorio -r Muestra el listado en orden inverso -S Muestra el listado de acuerdo al tamaño, del más grande al más pequeño Muestra el listado de acuerdo a la fecha de modificación, mostrando primero el más -t reciente. -u Muestra el listado de acuerdo al último acceso, empezando por el más reciente. La salida producida por el comando ls puede ser también controlada con otra serie de opciones. Estas opciones se muestran en la siguiente tabla Opciones Descripcion -l La salida se muestra una fila por linea -C La salida se muestra en columnas -F Muestra el nombre del archivo con una letra para especificar el tipo de archivo -k Muestra el tamaño del archivo en Kb -m Muestra los nombres de archivos separados por comas -n Muestra el usuario y el número de grupo -p Muestra los nombres de archivos con un carácter para especificar el tipo -x Muestra el nombre de archivo en columnas ordenadas horizontalmente Asume que cada parada de tabulación está a cols columnas de ancho; el valor -T COLTS predeterminado es 8. ls emplea tabuladores donde es posible en la salida, por eficiencia. Si cols es cero, no usa tabuladores para nada. Asume que la pantalla tiene cols columnas de ancho. El valor predeterminado se toma -W COLTS del controlador de terminal si es posible; si no, se emplea la variable de ambiente COLUMNS si está definida; de otro modo el valor predeterminado es 80 Todas éstas opciones se pueden combinar para crear una salida muy especifica Determinando el tipo de archivo El comando ls provee de mucha información cuando se examinan archivos, pero no muestra información sobre el tipo de contenido de los mismos. El comando file puede ser usado para aprender más sobre el tipo contenido de los archivos en un sistema Linux. La salida del comando file incluye una de las siguientes palabras: • text • executable • data o directory - 55 - Linux incluye dos comandos para copiar archivos. -d Especifica que los enlaces se deben mantener cuando se copia. Esta opción no podrá ser usada con algunos archivos especiales. Muestra el resultado después del chequeo.Este comando acepta argumentos para especificar que archivos examina Este comando acepta argumentos para especificar que archivos examina. Este comando se usa para crear una copia nueva e independiente del archivo o directorio original. Mantiene el propietario. Copia directorios y sus contenidos de forma recursiva. manteniendo los directorios. -l -p -r -R Especifica que se creen enlaces fuertes (ver más adelante en este capítulo) en lugar de copias del archivo. -f Sobreescribe cualquier archivo de destino existente. Esto puede ser útil cuando -n trabajamos con una serie de archivos que van a ser enviados a otro comando. generalmente se necesita copiar archivos. Copia directorios y sus contenidos de forma recursiva mientras copia cada archivo como archivo estándar. -v Muestra la versión -z Intenta examinar el contenido de los archivos comprimidos. Cuando se quiere copiar archivos de un formato de archivo a otro. Se pueden usar muchas opciones con el comando cp para modificar las copias creadas. Las opciones se resumen en la siguiente tabla Opciones -a Descripcion Especifica que los enlaces y atributos del archivo original deben ser transferidos a la nueva copia. permisos y timestamp del archivo original. como se muestran en la siguiente tabla. -i Pregunta antes de sobreescribir cualquier archivo de destino existente.56 - . se hará uso el comando dd. grupo. El comando cp se utiliza para la copia estándar de archivos en sistemas Linux. . El comando cp se usa para copiar archivos y directorios y es el comando estándar para copiar archivos de una localización del sistema a otra. Se pueden usar una serie de opciones con este comando. Opciones Descripcion -b Especifica que el nombre de archivo no se muestre en la salida -f Especifica que el archivo <nombrearchivo> contiene los nombres de los [nombreDelArchivo] archivos a examinar. La sintaxis para aplicar de manera correcta el comando es la siguiente: [BASH]# file [opciones] nombreDelArchivo Copiando Archivos Cuando se trabaja con archivos en cualquier sistema. Las opciones se utilizan para cambiar estos valores por defecto. Moviendo Archivos Se puede mover un archivo manualmente copiándolo a la nueva localización y borrando luego el archivo original. Estas opciones se pueden combinar cuando se copian archivos. Este comando tiene diferentes opciones y diferente sintaxis que el comando cp . por defecto.bkp. -v Muestra todos los nombres de los archivos según se van copiando. ibs=FILE Especifica el número de bytes leídos de cada vez. La sintaxis para aplicar de manera correcta el comando es la siguiente: [BASH]# cp [opciones] origenDelArchivo destinoDelArchivo Copiando y convirtiendo archivos con diferente formato El comando dd (abreviatura de Direct Dump) se usa para copiar y convertir archivos de un formato a otro simultáneamente. Éste es el archivo de destino. count=FILE Especifica los bloques a copiar del archivo de origen en lugar de copiar el archivo completo. El comando dd.-s Crea enlaces simbólicos (ver más adelante) de los archivos que no sean directorios. skips=FILE Especifica los bloques a saltar en el archivo de origen antes de empezar a copiar. Linux incluye un comando para mover archivos que automatiza esta tarea. bs=FILE Especifica el número de bytes a escribir y leer de cada vez. cbs=FILE Especifica el número de bytes a convertir de cada vez.bkp  bs=512 count=1 Esto significa que se copiara bit a bit los primeros 512 bytes del dispositivo ubicado en /dev/dispositivo a un archivo de nombre respaldombr. Este comando funciona como el comando cp. escribe datos desde la entrada estándar hacia la salida estándar. obs=FILe Especifica el número de bytes escritos de cada vez. Por ejemplo: [BASH]# dd if=/dev/dispositivo of=respaldombr. Las opciones para el . Éste es el archivo de origen. utilizando la misma sintaxis. seek=FILE Especifica los bloques a saltar en el archivo de destino antes de empezar a escribir. Especifica la localización del archivo de destino para ser utilizado en lugar de la salida estándar. Sin embargo. Las opciones para el comando dd se muestran en la siguiente tabla : Opciones if=FILE of=FILE Descripcion Especifica la localización del archivo de origen para ser utilizado en lugar de la entrada estándar.57 - .La sintaxis utilizada para el comando dd es la siguiente: [BASH]# cp [opciones] origenDelArchivo  destinoDelArchivo  El comando dd se puede utilizar para variedad de tareas especiales. Junto con las opciones. también se usan argumentos con el comando cp . El comando mv (abreviatura de move) permite mover y renombrar archivos en sistemas Linux. incluso si los archivos especificados no existen. los valores de los registros de la CPU para dicho programa. La sintaxis para aplicar de manera correcta el comando es la siguiente: [BASH]# rm [opciones] nombreDelArchivo Creando. Se pueden utilizar muchas opciones con el comando rm. pero lo hace a petición de otros procesos. • Su memoria de trabajo. Ejecuta el comando sin pedir confirmación. monitorizando y matando procesos Sobre procesos Un proceso es un concepto manejado por el sistema operativo que consiste en el conjunto formado por: • Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador. -v Elimina archivos y muestra por pantalla los nombres de los archivos eliminados. -i Pide confirmación al usuario para eliminar los archivos. La sintaxis para aplicar de manera correcta el comando es la siguiente: [BASH]# mv [opciones] origenDelArchivo destinoDelArchivo Eliminando Archivos Otra tarea frecuentemente necesaria cuando trabajamos con archivos y directorios es la eliminación de los mismos. Las utilizadas más frecuentemente son las que se muestran en la tabla siguiente Opciones -d -f Descripcion Utilizada por el superusuario. Cada hilo consta de instrucciones y estado de ejecución. Elimina directorios sin tener en cuenta si están vacíos. El comando rm se utiliza para borrar archivos y directorios en sistemas Linux .58 - . • Su estado de ejecución en un momento dado. -r Elimina el contenido del directorio de forma recursiva. la memoria de trabajo (compartida por todos los hilos) y la información de planificación.comando mv son algo diferentes y se resumen en la tabla siguiente: Opciones Descripcion -f Borra los archivos existentes sin pedir confirmación. El mecanismo por el cual un proceso crea . así como también este se debe hacer cargo de la comunicación entre procesos. v Muestra por pantalla los archivos movidos. la memoria que ha reservado y sus contenidos. • Otra información que permite al sistema operativo su planificación. Los procesos son creados y destruidos por el sistema operativo. es decir. Especifica que los archivos no serán movidos al destino si tienen fecha de modificación -u igual o más reciente. -i Pide confirmación al usuario antes de sobreescribir archivos. donde un proceso consta de uno o más hilos. Esta definición varía ligeramente en el caso de sistemas operativos multihilo. esto es. Cuando se crea un nuevo proceso. conociendo su estado y el lugar que ocupa en memoria. los procesos utilizan datos para operar con ellos. Para que un programa pueda ser ejecutado. como una operación de Entrada/Salida. Es por esto que se necesita un estado donde los procesos permanezcan esperando la realización de la operación de Entrada Salida por parte del Sistema Operativo hasta que puedan proseguir. Se divide entonces al estado No ejecución en dos estados: Listo y Espera. Los nuevos procesos pueden ser independientes y no compartir el espacio de memoria con el proceso que los ha creado o ser creados en el mismo espacio de memoria. se pone en estado de No ejecución. y el procesador ejecuta una tras otra las instrucciones del mismo. que después se colocan en la imagen del proceso dentro de la memoria RAM y posteriormente también se dan de alta dentro de la tabla de procesos. si los procesos estuvieran siempre listos para ejecutar. Se agregan además un estado Nuevo y otro Terminado. En un entorno de multiprogramación. el procesador intercalará la ejecución de instrucciones de varios programas que se encuentran en memoria. El sistema operativo es el responsable de determinar las pautas de intercalado y asignación de recursos a cada proceso. el sistema operativo crea un nuevo proceso. En los sistemas operativos multihilo es posible crear tanto hilos como procesos. Diagrama de formacion de un proceso Se trata de la utilización de dos archivos.otro proceso se denomina bifurcación o fork.59 - . La diferencia estriba en que un proceso solamente puede crear hilos para sí mismo y en que dichos hilos comparten toda la memoria reservada para el proceso. Estados de un proceso El principal trabajo del procesador es ejecutar las instrucciones de máquina que se encuentran en memoria principal. Modelo de cinco estados El modelo anterior de 2 estados funcionaría bien con una cola FIFO y planificación por turno rotatorio para los procesos que no están en ejecución. . un objeto ejecutable y una biblioteca del sistema. un proceso puede estar ejecutándose o no. • Listo: el proceso está listo para ser ejecutado. Además los procesos que no se están ejecutando deben guardarse en algún tipo de cola mientras esperan su turno para ejecutar. Los cinco estados de este diagrama son los siguientes según Osëliyo: • Ejecución: el proceso está actualmente en ejecución. De esta explicación se desprende que es necesario que el sistema operativo pueda seguirle la pista a los procesos. En algún momento el proceso que se está ejecutando pasará al estado No ejecución y otro proceso se elegirá de la lista de procesos listos para ejecutar para ponerlo en estado Ejecución. o que se deba esperar algún suceso antes de continuar. sólo está esperando que el planificador de corto plazo así lo disponga. • Espera: el proceso no puede ejecutar hasta que no se produzca cierto suceso. y puede suceder que no se encuentren listos. como la finalización de una operación de Entrada/Salida solicitada por una llamada al sistema operativo. Estas instrucciones se encuentran en forma de programas. Bloque de control del proceso. En la realidad. Modelo de dos estados El modelo de estados más simple es el de dos estados. En este modelo. ya sea porque terminó o por algún fallo. Cuando se da un suceso se pasan a la cola de listos los procesos que esperaban por ese suceso. una para cada nivel de prioridad. El intercambio se lleva a cabo moviendo una parte de un proceso o un proceso completo desde la memoria principal al disco. se encuentra en la antigua Grecia. Sólo convendría traerlo cuando ya está listo para ejecutar. es un tipo especial de proceso informático que se ejecuta en segundo plano en vez de ser controlado directamente por el usuario (es un proceso no interactivo). por ejemplo una Entrada/Salida. • Terminado: El proceso fue expulsado del grupo de procesos ejecutables. como un error de protección. En otros sistemas existen procesos similares como los TSRs de MS-DOS o los servicios de Windows. Los nuevos estados Nuevo y Terminado son útiles para la gestión de procesos. A falta de un esquema de prioridades ésta puede ser una cola FIFO. como mínimo una por cada periférico. quedando en el estado Suspendido. Para tener esta diferenciación entre procesos suspendidos. esto implica que ya aconteció el suceso que estaba esperando. En este modelo los estados Espera y Listo tienen ambos colas de espera. equivalente a un "ángel protector" que guiaba y protegía a los hombres. Este tipo de programas se ejecutan de forma continua (infinita). daemon o dæmon (de sus siglas en inglés Disk And Execution MONitor). puede suceder que en nuestro modelo de cinco estados todos los procesos en memoria estén esperando en el estado Espera y que no haya más memoria disponible para nuevos procesos. Espera. Otra solución es el intercambio. Además hay un costo asociado a la memoria y de cualquier forma es probable que se llegaría al mismo estado con el tiempo.• Nuevo: El proceso recién fue creado y todavía no fue admitido por el sistema operativo. El problema que se presenta ahora es que puede ser que si se decide traer a memoria un proceso que está en el estado Suspendido. Cuando un nuevo proceso es admitido por el sistema operativo. se puede aceptar un nuevo proceso o traer a memoria un proceso suspendido anteriormente. el mismo todavía se encuentre en espera. se utilizan cuatro estados: Listo. El origen de la palabra daemon (demonio). este continuará en ejecución o se reiniciará automáticamente. Podría conseguirse más memoria. aunque es probable que esto sólo permita procesos más grandes y no necesariamente nuevos procesos. . Si existe un esquema con diferentes niveles de prioridad de procesos es conveniente mantener varias colas de procesos listos. ya sean listos como en espera. Asimismo. Todo esto sin intervención de terceros y sin dependencia de consola alguna. Sobre demonios Un demonio. lo que ayuda a determinar cuál es el proceso que más conviene ejecutar a continuación. Sin embargo. Una de las razones para implementar el estado Espera era poder hacer que los procesos se puedan mantener esperando algún suceso. y la figura del daimon. se sitúa en la cola de listos. al ser mucho más lentas estas operaciones. existen varias colas en estado de espera. Espera y suspendido y Listo y suspendido. etc. Después del intercambio. que aunque se intente cerrar o matar el proceso. un espíritu interior. aritmético. Los programas demonios reciben este nombre en los sistemas UNIX.60 - . vale decir. En general los procesos que se encuentran en este estado todavía no fueron cargados en la memoria principal. padre del proceso U o UID User ID. dependiendo de las opciones indicadas. donde las opciones van precedidas por un guión • Estilo BSD. ya sea gráfica o textual. incluso estas opciones varían dependiendo del estilo en que se use el comando. estas columnas pueden ser entre muchas otras. una máquina que alberga un servidor web utilizará un demonio httpd (HTTP Daemon) para ofrecer el servicio y que los visitantes a dicha web puedan acceder. • No hacen uso de la entradas y salidas estándar para comunicar errores o registrar su funcionamiento. un número positivo significa menos tiempo de procesador y negativo más tiempo (-19 a 19) Porcentaje de cpu utilizado por el proceso . lee directamente la información de los archivos que se encuentran en este directorio. que realizan tareas programadas como mantenimiento del sistema en segundo plano.Caracteristicas Los demonios suelen tener las siguientes características: • No disponen de una interfaz directa con el usuario. tamaño de la parte residente en memoria en kilobytes SZ o SIZE Tamaño virtual de la imagen del proceso NI C o PCPU Nice. si no hay terminal aparece entonces un '?' T o TIME Tiempo de uso de cpu acumulado por el proceso c o CMD El nombre del programa o camndo que inició el proceso RSS Resident Sise. valor nice (prioridad) del proceso. usuario propietario del proceso t o TT o TTY Terminal asociada al proceso. donde las opciones no llevan guión • Estilo GNU. las siguientes: Opciones Descripcion p o PID Process ID. es decir. Estas variaciones sobre el uso de ps son las siguientes: • Estilo UNIX. número único o de identificación del proceso. Otro ejemplo son los demonios "cronológicos" como cron. P o PPID Parent Process ID. varias columnas se mostrarán en el listado de procesos que resulte. Tiene una gran cantidad de opciones. Por ejemplo. Comando ps (process state) El comando ps es el que permite informar sobre el estado de los procesos.61 - . sino que usan archivos del sistema en zonas especiales (/var/log/ en los UNIX más modernos) o utilizan otros demonios especializados en dicho registro como el syslogd. ps esta basado en el sistema de archivos /proc. donde se utilizan nombres de opciones largas y van precedidas por doble guión -Sea cual sea el estilo utilizado. ser corriendo los o siguientes: ejecutándose *S sleeping.62 - .STIME Starting Time. para cada proceso. en estos pueden ejecución. que ofrece una visualización gráfica de las relaciones que existen entre los procesos: La sintaxis para aplicar de manera correcta el comando es la siguiente: [BASH]# pstree Como se ve a continuacion [BASH]# pstree . proceso en ejecución pero sin actividad por el momento. proceso terminado pero que sigue apareciendo. igual que los Z no deberían verse nunca Las opciones para el comando dd se muestran en la siguiente tabla : Opciones -a -x -u -m Descripcion El comando ps también muestra los procesos iniciados por los otros usuarios. son procesos generalmente asociados a acciones de IO del sistema * X dead. proceso que por alguna razón no terminó de manera correcta. hora de inicio del proceso Status * del R proceso. Muestra. El primero de ellos es pstree. evento proceso para detenido totalmente. el nombre del usuario que lo inició y la hora a la cual fue iniciado. pero continuar puede ser reiniciado * Z zombie. También muestra los procesos sin terminal de control alguna o con una terminal de control diferente a la que se está utilizando. Opción del comando ps para mostrar información de memoria (combinese con p para obtener el número de páginas) -j Formato de trabajo (jobs) pgid sid -r Sólo procesos que se estan ejecutando La sintaxis para aplicar de manera correcta el comando es la siguiente: [BASH]# ps [opciones] nombreDelArchivo Podemos obtener mas informacion sobre este comando tecleando en una terminal lo siguiente: [BASH]# man ps O tambien [BASH]# ps ­­help  Comando pstree y top Existen dos comandos relacionados con el comando ps que ofrecen una vista de los procesos ligeramente diferente a como lo hace ps. difunto. muerto. o esperando por algún *T S o STAT sTopped. no debe haber procesos zombies * D uninterruptible sleep. runnable. terminar su ejecución. quedando el proceso padre (y el o los hijos 'colgados') en un estado conocido como 'zombie'. el número de usuarios.init─┬─acpid       ├─auditd─┬─audispd───{audispd}       │        └─{auditd}       ├─avahi­daemon       ├─beagled───12*[{beagled}]       ├─beagled­helper───7*[{beagled­helper}]       ├─bluetoothd       ├─bonobo­activati───{bonobo­activati}       ├─console­kit­dae───63*[{console­kit­dae}]       ├─cron       ├─cupsd       ├─2*[dbus­daemon]       ├─2*[dbus­launch]       ├─dhcpcd       ├─evince───{evince}       ├─2*[evolution­data­───2*[{evolution­data­}]]       ├─firefox───firefox───5*[{firefox}]       ├─gconfd­2  El segundo comando relacionado con ps es top. así que ejecuta otro proceso (B). a su vez. 5 segundos) espacio Actualizar ahora en lugar de esperar al siguiente intervalo de actualización u Muestra un único usuario Finalizando un proceso Bajo circunstancias normales. y aunque no sea necesario que se sigan ejecutando. Pueden suceder entonces varias cosas: Bajo condiciones normales. notifica los . los procesos se convierten en procesos 'fugitivos'. cuando un proceso hijo no puede finalizar correctamente su ejecución. y que no pueda. no sólo muestra los procesos actuales. que a su vez ejecuta otro proceso (C). cuando el proceso C termina su ejecución. sino que automáticamente se va actualizando para mostrar los cambios acontecidos. desaparece. y desaparece (C). Éste comando. se pueden usar las siguientes teclas para interactuar con él: Opciones Descripcion h Ayuda q Salir s Cambia el tiempo entre actualizaciones (por defecto. haciendo uso de recursos innecesarios del sistema. Mientras el comando top está en marcha.63 - . la memoria. Un ejemplo para entender todo esto: el shell de un usuario ejecuta un proceso (A). origina que el proceso padre se quede en un estado inconsistente. un proceso hijo actúa bajo el padre que lo ha creado. Adicionalmente. etc. se lo notifica al proceso B. que no puede hacer todo por si mismo. Cuando el proceso hijo ya no es necesario. Algunas veces. El proceso B trata la información. Teniendo ésto en cuenta. Un proceso padre no puede (y no debe) finalizar su ejecución mientras tenga procesos hijos asociados a él que estén en funcionamiento. estadísticas de la memoria de intercambio. sin embargo. continúan su ejecución consumiendo recursos innecesarios. en la parte superior se muestra información sobre el número de días que ha estado la maquina en marcha. datos al proceso A. por defecto se ejecuta en primer plano. y no finaliza su ejecución. se puede usar el comando kill. El proceso B trata la información y la reporta hacia el proceso padre (A). incluyendo FAT32. Así pues. que a su vez. cuando un usuario ejecuta el comando ls -l. Para resolver los problemas que pueden ocasionar estos procesos extraños. se queda únicamente el proceso C en marcha (en estado inestable).64 - . El proceso A. no muere. [BASH]# fdisk /dev/sd[a|b|c|d][1. después de pasar la información al proceso padre (el proceso B). un error en el proceso C. Tanto el proceso A como el proceso B. el proceso B. La sintaxis del comando kill es la siguiente: [BASH]# kill [opciones] PID  Procesos en segundo y primer plano Cuando se ejecuta un proceso. esta nos . ha finalizado. lo que impide que el proceso B finalice. acaba su ejecución y desaparece. origina que haya tres procesos en marcha en el sistema. El proceso A. siendo denominado este nuevo espacio como partición. consumiendo recursos de forma innecesaria. La descripción de las particiones se guarda en la tabla de particiones que se localiza en el sector 0 de cada disco. Ext3. devuelve la información hacia el shell que lo originó. la interacción se basa entonces. simplemente se ha de añadir al final del comando el signo ampersand (&). Otro tipo de problema. y muere (B). no se podrá ejecutar ningún otro comando.particion o unidad USB Al lanzar la aplicación . Esta versión de Fdisk cuenta con un menú de texto de ayuda en línea para realizar las operaciones. se convierte en el único trabajo en el que puede trabajar el usuario. Aun así. y entonces muere (A) En condiciones anormales. pero ahora. Por ejemplo. entra en un estado inestable. en que se acabe éste trabajo.3. Utilizando fdisk La forma de comenzar a utilizar fdisk sera de la siguiente manera. Así pues. dado que tiene un proceso hijo (C) en marcha.2. supongamos que el proceso C. La versión Fdisk de Linux permite crear particiones en 94 sistemas de archivos distintos. Para ejecutar un proceso en segundo plano. esta opción permitirá ejecutar más de un comando a la vez: La sintaxis del comando kill es la siguiente: [BASH]# proceso& Creando particiones y sistemas de archivos Sobre fdisk Fdisk es una aplicacion disponible para varios sistemas operativos. podría darse de la siguiente manera: el proceso C. no tiene procesos padre a los que reportar.4] Donde sd [a|b|c|d] [1|2|3|4] Hace referencia a una unidad de disco duro. no pueden finalizar su ejecución dado que tienen procesos hijos en marcha. también finaliza dado que su hijo. Continua ejecutándose. como antes. Cuando un proceso se ejecuta en primer plano. el proceso B. hace lo propio con los datos recibidos. y retorna la información al shell del usuario. que hace que se quede en ejecución cuando no debería. el cual permite dividir en forma lógica un disco duro. Solaris y QNX. y hasta que no acabe el comando. se mostrará por pantalla el resultado. se nos presenta el siguiente mensaje: Command (m for help):  Si usted presiona la tecla 'm' se imprimira el menu con las herramientas propias del comando fdisk. 17849 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Una vez que la aplicación esta iniciada. con la opción "m" podemos imprimir nuevamente este menu. 63 sectors/track.65 - .arrojara informacion referente a numero de cabezas.8 GB. 146815737856 bytes 255 heads. Otro ejemplo. particiones o tamaño del dispositivo. cilindros. sectores . Estas herramientas son: Opciones Descripcion a Conmuta el indicador de iniciable b Modifica la etiqueta de disco bsd c Conmuta el indicador de compatibilidad con DOS d Suprime una partición a Conmuta el indicador de iniciable b Modifica la etiqueta de disco bsd c Conmuta el indicador de compatibilidad con DOS d Suprime una partición l Lista los tipos de particiones conocidos m Imprime este menú n Añade una nueva partición o Crea una nueva tabla de particiones DOS vacía p Imprime la tabla de particiones q Sale sin guardar los cambios s Crea una nueva etiqueta de disco Sun t Cambia el identificador de sistema de una partición u Cambia las unidades de visualización/entrada v Verifica la tabla de particiones w Escribe la tabla en el disco y sale x Funciones adicionales (sólo para usuarios avanzados) Como podemos notar. Ejemplo: [BASH]# fdisk /dev/sda Command (m for help):  Disk /dev/sda: 146. con "p" obtendremos la tabla de particiones actual del disco duro en cuestión: Ejemplo: . Vamos a volver a crearla.66 - . 17849 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes    Device Boot      Start         End      Blocks   Id  System /dev/sda1   *           1          25      200781   83  Linux /dev/sda2              26        2575    20482875   83  Linux /dev/sda4            2707        4000    10394055   8e  Linux LVM  En el ejemplo hemos borrado la partición correspondiente a la memoria extendida (swap). 17849 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot         Start         End      Blocks   Id  System /dev/sda1   *           1          25      200781   83  Linux /dev/sda2              26        2575    20482875   83  Linux /dev/sda3            2576        2706     1052257+  82  Linux swap / Solaris /dev/sda4            2707        4000    10394055   8e  Linux LVM  Si lo que queremos es borrar una partición (digamos la 3): Command (m for help): d Partition number (1­4): 3 Command (m for help)  Veamos como quedó nuestra tabla de particiones: Command (m for help): p Disk /dev/sda: 146. En el caso del ejemplo tomé de nuevo la opción por default pues de este modo aprovecho todo el espacio libre. 146815737856 bytes 255 heads. • Selección de la partición.Command (m for help): p Disk /dev/sda: 146. Si requerimos de más particiones podemos crear una extendida y ahí seguir particionando (hasta un total de 60 particiones lógicas). éste admite hasta 15 particiones primarias. Es el cilindro en el que comienza la partición. Aquí escribimos en número de la partición que estamos creando. 63 sectors/track. • Último cilindro o tamaño de la partición. para ello usamos "n": Command (m for help): n Command action e extended p primary partition (1­4) p Selected partition 3 First cylinder (2576­17849. 146815737856 bytes 255 heads. "3" en nuestro ejemplo.8 GB. En el caso de un disco SCSI. default 2706):  Using default value 2706  Pongamos atención en las preguntas que se nos hicieron: • Tipo de partición: Aquí se nos pide elegir entre partición primaria y partición extendida. Si requerimos más. • Primer cilindro. no queda otra que utilizar un segundo disco duro.8 GB. 63 sectors/track.Generalmente resulta más . En un disco IDE o SATA podemos crear únicamente hasta 3 particiones primaria en el disco duro. default 2576):  Using default value 2576 Last cylinder or +size or +sizeM or +sizeK (2576­2706. Normalmente elegimos el que el sistema nos marca por default. x          87  NTFS volume set db  CP/M / CTOS / . Con "l" podemos obtener la lista completa de opciones: Command (m for help): l  0  Empty           1e  Hidden W95 FAT1 80  Old Minix       be  Solaris boot     1  FAT12           24  NEC DOS         81  Minix / old Lin bf  Solaris          2  XENIX root      39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT­  3  XENIX usr       3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT­  4  FAT16 <32M      40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT­  5  Extended        41  PPC PReP Boot   85  Linux extended  c7  Syrinx           6  FAT16           42  SFS             86  NTFS volume set da  Non­FS data      7  HPFS/NTFS       4d  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility    . Ésto lo hacemos con: Command (m for help): t Partition number (1­4): 3 Hex code (type L to list codes): 82 Changed system type of partition 3 to 82 (Linux swap / Solaris) Es decir. La quinta nos dice cuantos blocks ocupa ésta. La tercera y cuarta columna nos dan información acerca del cilindro en el cual comienza y termina la partición respectivamente. 146815737856 bytes 255 heads. checar el estado de nuestra tabla de particiones actual: Command (m for help): p Disk /dev/sda: 146.8 GB. Checamos: Command (m for help): p Disk /dev/sda: 146. En la primera columna se encuentra el dispositivo resultado de la partición de disco sda. 17849 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes    Device Boot      Start         End      Blocks   Id  System /dev/sda1   *           1          25      200781   83  Linux /dev/sda2              26        2575    20482875   83  Linux /dev/sda3            2576        2706     1052257+  83  Linux /dev/sda4            2707        4000    10394055   8e  Linux LVM  Analicemos en este punto las siete columnas que la impresión de la tabla de particiones nos da. Así. Si pensamos utilizar la partición recién creada como memoria extendida. 17849 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes    Device Boot      Start         End      Blocks   Id  System /dev/sda1   *           1          25      200781   83  Linux /dev/sda2              26        2575    20482875   83  Linux /dev/sda3            2576        2706     1052257+  82  Linux swap / Solaris /dev/sda4            2707        4000    10394055   8e  Linux LVM Con fdisk podemos asignar muchos otros tipos de sistema. sabemos que contamos con 3 particiones "Linux" (Id 83) y una "Linux LVM" (ide 8e). 63 sectors/track. Por último.  8  AIX             4e  QNX4. La segunda columna nos informa que es la primera partición del disco la que contiene la parte booteable. 63 sectors/track. podemos observar que en este momento contamos con 4 particiones: sda1.67 - . sda3 ysda4. es el momento de asignar el tipo de partición. 146815737856 bytes 255 heads. con la sexta y séptima columna sabemos el tipo de partición (Identificador y sistema respectivamente).cómodo proporcionar el tamaño en megas (o en K's).8 GB. De nuestro ejemplo. sda2. nuevamente con "p". Una opción sería entonces dar: +2048M Podemos. asignamos el sistema "Linux swap / Solaris" (con id=82). las cuales se pueden ver en la siguiente tabla Opciones -t fstype fs -options Descripcion Especifica el tipo de sistema de archivos a crear.msdos o mkdosfs Crea un sistema de archivos MS-DOS mkswap Crea un sistema de archivos de Linux swap . 9  AIX bootable    4f  QNX4. -l archivo Lee los bloques defectuosos del archivo. el código de salida de 0 (cero) indicará que se ha llevado a cabo con éxito mientras que el código de salida 1 (uno) indicará fallo. La utilidad mkfs se utiliza con muchas opciones distintas.68 - . Ésto es realmente sólo útil para comprobaciones. Las opciones usadas por mkfs están seguidas por un argumento especificando la partición que debe ser formateada. el sistema de archivos debe ser añadido para que Linux pueda hacer uso de este espacio. Por defecto se usa ext2 Opciones específicas de sistema de archivos para ser pasados al sistema real de archivos que vamos a crear. Produce una salida con más información.x 3rd part 8e  Linux LVM       df  BootIt           a  OS/2 Boot Manag 50  OnTrack DM      93  Amoeba          e1  DOS access       b  W95 FAT32       51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O          c  W95 FAT32 (LBA) 52  CP/M            9f  BSD/OS          e4  SpeedStor        e  W95 FAT16 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs          f  W95 Ext'd (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  EFI GPT         10  OPUS            55  EZ­Drive        a6  OpenBSD         ef  EFI (FAT­12/16/ 11  Hidden FAT12    56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA­RISC b 12  Compaq diagnost 5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor       14  Hidden FAT16 <3 61  SpeedStor       a9  NetBSD          f4  SpeedStor       16  Hidden FAT16    63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary   17  Hidden HPFS/NTF 64  Novell Netware  b7  BSDI fs         fd  Linux raid auto 18  AST SmartSleep  65  Novell Netware  b8  BSDI swap       fe  LANstep         1b  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid ff  BBT             1c  Hidden W95 FAT3 75  PC/IX           inalmente. La utilidad mkfs se usa para crear sistemas de archivos en particiones vacías. guardamos los cambios: Command (m for help): w y salimos Utilizando mkfs Una vez se ha creado la partición. La sintaxis correcta para este comando es la siguiente [BASH]# mkfs [opciones] unidadAFormatear → /dev/sd[abcd][1234] Algunas otras utilidades del comando mkfs son las siguientes: Opciones mkfs. incluyendo todas las órdenes específicas del -v sistema de archivos concreto que se ejecutan. Comprueba el dispositivo en busca de bloques defectuosos antes de crear el sistema de -c archivos.ext2 o mke2f Descripcion Crea un sistema de archivos ext2 mkfs. Después de la ejecución del comando. incluyendo sufijos como . Este número es.minix Crea un sistema de archivos Minix mkfs. seguramente por un corte de alimentación o por una caída del sistema. Es muy importante prevenir la escasez de inodos libres en las particiones del sistema. se mostrará la información relativa a los sistemas de archivos montados en los dispositivos incluidos en / etc/fstab.bfs Crea un sistema de archivos SCO BFS Manteniendo la integridad de los sistemas de archivos El monitoreo periodico del sistema de archivos de sistema operativo resulta tema de suma importancia para los administradores de red.4] En la tabla siguiente se muestran las opciones más usadas: Opciones -h Descripcion Muestra los resultados en un formato legible para las personas. probablemente nunca crearás tantos archivos como para agotar este número.3. El comando df proporciona información necesaria tanto sobre la uso del espacio en disco como de los inodos libres.2. La forma correcta de utilizar el comando df sera de la siguiente manera. a su vez. Monitorizar y comprobar cuidadosa y regularmente los filesystems de Linux nos ayudará a prevenir o corregir estos problemas. Los inodos son las estructuras de datos dentro del sistema de archivos que describen los archivos (valga la redundancia) en el disco. en directorios indicamos archivos de dispositivos de particiones como / dev/hda1. El comando df nos muestra información general sobre el uso del disco en los sistemas de archivos montados en directorios. No obstante. causando que los aplicaciones o quizás. el sistema entero dejen de funcionar.69 - . Si omitimos directorios. Como los sistemas de archivos se crean con un número de inodos enorme. el máximo número de archivos que un sistema de archivos puede acomodar.mkraid Inicializa y actualiza cadenas de dispositivos RAID mkfs. [BASH]# df [opciones] /dev/sd[a|b|c|d][1. Cada sistema de archivos contiene un número finito de inodos que se establece en el momento de creación del sistema de fcheros. Esto podría ocurrir si nuestro sistea de archivos se llena o si se queda sin inodos libres. • El sistema de archivos se corrompe. Normalmente. Monitorizando el espacio y los inodos libres del disco Un sistema de lectura escritura no sirve de mucho si crece hasta el punto en que no pueda admitir nuevos archivos. • El sistema de archivos se queda sin inodos libres de tal forma que no se pueden crear nuevos objetos en el mismo. pero si indicamos otro tipo de nombre de archivo o directorio obtendremos información sobre la partición donde está ubicado dicho archivo o directorio. ya que durante el transcurso del tiempo estos sistemas de archivos pueden terminar presentando problemas como los siguientes: • El sistema de archivos se llena hasta el límite de su capacidad. es posible quedarse sin inodos libres en particiones que contengan muchos archivos pequeños. bloques y tamaños. asi mismo examina los directorios recursivamente y muestra información detallada o resumida sobre el espacio en disco consumido. no solo los directorios. [BASH]# du [opciones] [directorio] En la tabla siguiente se muestran las opciones más usadas: Opciones Descripcion -a Muestra todos los archivos. en lugar de los totales encontrados recursivamente en cada subdirectorio. -A Esta opción está pensada para utilizarse en tiempo de carga del sistema.M(megabytes) y G (gigabytes). 2. . fsck se ejecuta automáticamente al inicio del sistema ante alguna anomalía. pero muestra lo que debería hacerse. 3.Comprueba las referencias. -c Genera un gran total de todos los elementos listados -h -s -S Muestra los resultados en un formato legible para las personas. antes de montar los filesystems. limitándose a totalizar los directorios. Comprueba la estructura de directorios. Durante la comprobación del sistema de fsck se hace lo siguiente: 1. 4. -N No se ejecuta. incluyendo sufijos como M (megabytes) y G (gigabytes). mostrándonos directorio por directorio el uso del espacio en disco. como Linux y AIX que se utiliza ante alguna inconsistencia del sistema de archivos para corregir los posibles errores en el sistema. Comprueba la conectividad de directorios. Visualiza un sumario para cada uno de los directorios especificados. 5. Monitorizando el espacio y los inodos libres del disco El comando du nos puede ayudar.70 - . La sintaxis básica de esta utilidad es la siguiente: [BASH]# fsck [­opciones] /dev/hdXXX (o sdXXX) En la tabla siguiente se muestran las opciones más usadas: Opciones Descripcion Ejecuta comprobaciones en todos los sistemas de archivos incluidos en /etc/fstab. Excluye los subdirectorios de las sumas y los totales. Comprueba inodos. Comprobando la integridad del sistema de archivos El comando fsck (file system consistency check) es una utilidad de los sistemas Unix y similares. Muestra información sobre los inodos libres en lugar de la información por defecto sobre -i el espacio libre en disco. Comprueba el total de la información. La forma correcta de utilizar el comando du sera de la siguiente manera. pero también puede ser utilizada manualmente por el administrador del sistema para forzar un chequeo. Para verificar un sistema de archivos es muy aconsejable hacerlo mientras éste está desmontado. Administrando la tabla del sistema de archivos Para que las diferentes particiones estén disponibles desde un primer momento es necesario montarlas durante el arranque del sistema. Muestra el estado del proceso Montando y desmontando sistemas de archivos Controlando el montaje y desmontaje del sistema de archivos Como ya se vió anteriormente. utilizarás -b 8193 en el modo no interactivo. -y -v Responde automáticamente "yes" a todas las preguntas interactivas permitiendo la utilización no interactiva de e2fsck. Options        DF PN  /dev/sda1   /             ext2      defaults           1 1  /dev/sda5   /boot         ext2      defaults           1 2  /dev/sda9   /home         ext2      defaults           1 2  /dev/sda10  /tmp          ext2      defaults           1 2  /dev/sda11  swap          swap      defaults           0 0  /dev/fd0    /mnt/floppy   ext2      noauto. para restaurar un superbloque defectuoso. Sus entradas se consultan como fuente de información por defecto cuando los usuarios quieren montar dispositivos removibles. por ejemplo /dev/hda1.71 - . -c Comprobar bloques defectuosos. -b superbloque Utiliza una copia del superbloque alternativa. incluso si el sistema de archivos parece limpio. Los sistemas de archivos definidos en este archivo son revisados y montados durante el arranque del sistema. la estructura de los sistemas de archivos están generalmente divididos en particiones. type   M. En el siguiente ejemplo de /etc/fstab se puede ver que se trata de un archivo de texto con 6 campos en cada linea: Device      Mount point   F. unidas todas ellas en el punto de montaje raiz (/) o seapradas . . los dispositivos removibles también se usan frecuentemente y es aconsejable tenerlos preparados para usar los comandos de montaje. por defecto se asume ext2. puede darse el caso de que el directorio destinado a este fin contenga subdirectorios o archivos. En el modo interactivo.Especifica el tipo de sistema de archivos a comprobar.users    0 0  Device Este campo especifica la partición del sistema de archivos. e2fsck utiliza automáticamente superbloques alternativos. -f Fuerza una comprobación.ro. El -t tipo valor de tipo determina que verificador específico para el sistema de archivos es utilizado.users       0 0  /dev/hdc    /mnt/cdrom    iso966    noauto. En principio estos directorios destinados a los dispositivos están vacíos. Los sistemas de archivos de los dispositivos removibles como un USB o un Disco CD se unen a la raiz del sistema de la misma manera. en cuyo caso quedarán ocultos hasta que el dispositivo se desmonte. Normalmente. Toda este información se guarda en el archivo /etc/fstab . -p Repara automáticamente el sistema de archivos sin hacer preguntas. a la espera de su montaje. como directorios o puntos de montaje. Normalmente tiene el valor 1 para filesystems basados en ext2y ext3 y 0 para los demás. los sistemas de archivos que no contienen un 0 en el pass number son chequeados y luego montados.72 - . Luego se tiene la /dev/fd0 para diskettes y la /dev/hdc para el lector de CD Se pueden añadir/modificar estas entradas en cada caso y según las necesidades de cada uno.Debe ponerse para el filesystem root (/) y ordena al fsck a chequearlo primero 2 . se separan por comas. Durante el arranque. La sintaxis básica de esta utilidad es la siguiente: [BASH]# mount [opciones] [dispositivo|directorio] El comando mount admite dos tipos de opciones. ext2. iso9660 Se explican más adelante. ext3. La tercera opción es independiente del archivo /etc/fstab y monta el sistema de archivos en el directorio El comando mount admite dos tipos de opciones. unos para el comando en si. Pass number para el fsck normalmente 0 en - tiempo No de arranque. Montando el sistema de archivos Los sistemas de archivos son montados con el comando mount. y otros para especificar opciones del sistema de archivos. La primera y segunda entrada consultan al archivo /etc/fstab para montar los dispositivos y así tomar las opciones que se le especifiquen en el /etc/fstab. la partición 10 es la temporal. Este campo es usado por la utilidad fsck cuando la opción -A se especifica. donde está el sistema se montará en / Filesystem type Mount options En este campo se indica que tipo de partición se trata. y otros para especificar opciones del sistema de archivos: Opciones -a -h Descripcion Monta todos los fileystems especificados en el /etc/fstab menos los que tengan la opción noauto Ayuda del comando mount .Este campo no puede contenter el dispositivo entero (/dev/sda) Aquí se introduce el directorio donde se quiere que el dispositivo sea montado. la particion 11 para el sistema de swap.Hace el chequeo de la unidad. Por Mount point ejemplo si la partición /dev/hda1 tiene el sistema de archivos root. después del chequeo de los marcados con un 1 En el ejemplo se tiene un disco duro SATA La primera partición /dev/sda1 tiene el directorio root (/). la 9 para el directorio de los usuarios. la quinta contiene las imágenes del kernel para el arranque. El programa dump consulta la entrada del /etc/fstab para ver cada cuanto tiempo Dump frecuency debe hacer el backup. Después del arranque se pueden añadir más sistemas de archivos manualmente con el comando mount. ext4. swap. El comando mount se usa para montar sistemas de fichros dentro de la estructura del árbol del sistema. reiserfs. chequear Tiene el valores: sistema 1 . unos para el comando en si. nouser y async. nosuid nouser No permitir el efecto de los bits SUID ni SGID Prohibir a un usuario ordinario (esto es. suid. auto. Esto es lo predeterminado ro Montar el sistema de archivos en modo de sólo lectura.-o Especifica las opciones del mount en la linea de comandos -r Monta filesystems en modo de solo lectura -t fstype Especifica un tipo de fileystem -v Salida interactiva -w Monta fileystems de lectura/escritura Opciones del mount Estas opciones se especifican en el archivo /etc/fstab o bien en la linea de comandos con la opción -o. algunas de las opciones son: Opciones Descripcion async Toda la E/S al sistema de archivos debería hacerse asíncronamente. Esta noexec opción puede ser útil para un servidor que tiene sistemas de archivos que contienen binarios para otras arquitecturas distintas de la suya. exec. auto Puede montarse con la opción -a defaults Establece las opciones: rw. la opción -a no hará que el sistema de archivos se monte) No permitir la ejecución de ningún binario en el sistema de archivos montado. distinto de root) montar el sistema de archivos. no pudiendose usar el umount si el sistema de archivos que se quiere desmontar está en uso. user Permitir a un usuario ordinario montar el sistema de archivos users Permite a cualquier usuario el montaje/desmontaje de el sistema de archivos Desmontando el sistema de archivos Los sistemas de archivos pueden ser desmontados usando el comando umount. los contenidos del árbol principal se actualizan. dev. Estas opciones modifican el modo de montaje del comando mount. Esto puede ocurrir por ejemplo cuando tenemos . rw Montar el sistema de archivos de lectura y escritura suid Permitir el efecto de los bits SUID y SGID sync Toda la E/S al sistema de archivos debería hacerse síncronamente. Si el sistema de archivos está en uso el comando umount dará un error.73 - . Es la opcion por defecto en sistemas ext2 dev nterpretar dispositivos especiales de caracteres o bloques en el sistema de archivos exec Permitir la ejecución de binarios noauto Sólo puede montarse explícitamente (esto es. Cuando un sistema de archivos es desmontado. 74 - . Estas limitaciones se especifican en bloques de disco. advirtiendo al usuario que debe ir limpiando sus directorios pero. ya que los usuarios finales no pueden guardar archivos allí. Pueden configurarse cuotas para cada sistemas de archivos incluido en /etc/fstab. Éste límite actúa como una especie de zona de aviso. Una forma de prevenir que ésto ocurra es el establecimiento de cuotas de disco. aunque normalmente solo se aplican en aquellos sistemas de archivos donde los usuarios finales guardan sus archivos por ejemplo el /home/nombreDelUsuario No es necesario establecer una cuota en /usr. El espacio disponible es un recurso limitado que muy a menudo se consume a un ritmo alarmante provocando que un sistema de archivos bien proporcionado se vuelva insuficiente al cabo del tiempo. de esta forma podrán establecerse límites a la cantidad de espacio en disco consumido por usuarios independientes o por grupos de éstos. Cuotas de Limitacion Pueden establecerse hasta cinco tipos de cuotas de limitación por cada sistema de archivos. Pueden configurarse cuotas para los usuarios individuales incluidos en /etc/passwd y para los grupos en /etc/group. normalmente de 1024 bytes cada uno y estas son: Opciones Límite hard por usuario Límite soft por usuario Descripcion El límite hard es la máxima cantidad de espacio en disco que un usuario puede disponer en el sistema. Este archivo está mantenido por -a los comando mount y umount en tiempo real. por ejemplo. se usa normalmente cuando se apaga/reinicia el PC. Típicamente un tamaño de cuota es mucho menor que el espacio libre del sistema de fichers donde se configura. Otros errores pueden surgir si quitamos dispositivos removibles sin antes desmontarlos: La sintaxis básica de esta utilidad es la siguiente: [BASH]# umount [opciones] [dispositivo|directorio] El comando mount admite dos tipos de opciones. En los sistemas multiusuario no importa lo grande que sea el sistema de archivos los usuarios siempre terminarán llenándolo. unos para el comando en si. Una vez que el usuario alcanza este límite ya no se le permitirá realizar nuevas escrituras en el disco. y otros para especificar opciones del sistema de archivos. Cada usuario puede almacenar datos libremente en el sstema de archivos hasta que alcance el límite soft.abierto un archivo de un DVD o un proceso está haciendo uso del mismo. Y a nadie le interesa que un sistema de archivos se llene demasiado pronto. de esta forma se puede evitar que un usuario o un grupo consuma demasiado espacio. -t fstype Desmonta sólo los filesystems del tipo especificado Administrando cuotas de disco Establecer y consultar cuotas de disco La administración del espacio en disco duro del equipo puede ser una tarea problemática. Opciones Descripcion Desmonta todos los filesystems descritos en /etc/mtab. a diferencia del límite hard se le . ninguno de los miembros de dicho grupo podrán realizar escrituras en el disco. -v Establece el modo explícito que muestra las cuotas incluso cuando no se ha consumido . La sintaxis básica de esta utilidad es la siguiente: [BASH]# quota [­u] [opciones] usuario [BASH]# quota ­g [opciones] grupo  Se pueden utilizar muchas opciones con el comando quota. Una vez que se alcanza este límite. Solo root puede utilizar la opción -u y usuario para ver las limitaciones de otros usuarios. el límite soft se convierte en límite hard hasta que se hayan eliminado los archivos suficientes para que se resuelva el exceso de cuota. Una vez que se alcanza el límite soft comienza el periodo de gracia para el usuario o el Periodo de gracia grupo.permite seguir trabajando. El resto de los usuarios usuarios podrán usar la opción -g y grupo para ver solamente las limitaciones de los grupos de los que sean miembros. horas.75 - . días.group. inservible. incluso aunque no hayan excedido sus límites individuales. Un valor típico es el de siete días. Las utilizadas más frecuentemente son las que se muestran en la tabla siguiente: Opciones Descripcion -q Establece el modo “silencioso” que solo muestra las situaciones de exceso de cuota. solo se completará una parte de la operación de escritura dejando un archivo truncado y. quota Muestra las limitaciones de cuota en usuario o en grupo. El periodo de gracia puede ajustarse para cualquier número de meses. siempre y cuando tengan permiso de lectura en los archivos quota. Todos estos límites pueden establecerse utilizando el comando edquota. probablemente. soft Este límite se comporta de la misma forma que el de usuario pero se controla en base por grupo al espacio consumido por el grupo en lugar de por el usuario individual. Puede que el usuario no haya podido ver los mensajes de fin de cuota porque la aplicación haya ocultado la shell y los mensajes de dicha aplicación lo lleven a confusión al indicarle que el disco está lleno o protegido de escritura. Límite hard por grupo Límite Se trata del límite final asignado a un grupo por el sistema de cuotas. semanas. La opción -u está activada por defecto. Cuando una escritura en disco excede un límite hard o un límite soft con el periodo de gracia expirado. Cuando el espacio consumido por un usuario supera el límite soft pero no el límite hard se envían mensajes de aviso al terminal del usuario advirtiéndole que está excediendo su cuota pero las operaciones de escritura terminarán correctamente. minutos o segundos. que se detallará a continuación. Este proceso se explicará en la seccion → Habilitando Cuotas. Cuando expira éste periodo de gracia. Comandos de cuotas Linux proporciona una serie de comandos para gestión y consulta de las cuotas en los sistemas de archivos Parte de la configuración requerida para establecer las cuotas inicialmente ha de hacerse a mano y sin ninguno de los comandos específicos de cuotas. Ejemplo 2: Siendo el usuario mayra. No se muestran los valores correspondientes al periodo de gracia porque aun no se ha excedido el límite soft. esta es la opción por defecto. lo que quiere decir que ha pasado un día desde que se excedió el límite soft. Activa las cuotas de usuario. examina todas las cuotas del usuario mayra: [BASH]# quota ­uv mayra Disk quotas for user mayra (uid 512):  Filesystem    blks    quota limit   grace    files  quota   limit grace  /dev/sda9     9456    10000         10200    32     0       0  /dev/hda1     23      0             0        17     0       0  Este ejemplo muestra que el usuario mayra está cerca de consumir su límite soft de 10000 bloques. del que dicho usuario es miembro: [BASH]# quota ­gv contaduria Disk quotas for user mayra (uid 513):  Filesystem    blks    quota limit   grace    files  quota   limit grace  /dev/sda9     1000*   990   1000    6days    34     3980    4000  /dev/hda1     0       0             0        0      0       0  En este caso. y que no tiene cuota establecida en /dev/hda1. Establece el modo explícito de tal forma que se muestra un mensaje por cada sistema de archivos en el que se han activado las cuotas. Esta opción no es necesaria si se utiliza -a ya que ésta otra activa tanto las cuotas de usuario como las de grupo. El periodo de gracia original en este ejemplo se estableció en siete días de los cuales quedan seis días restantes. La línea correspondiente /dev/hda1 se muestra debido a la utilización de la opción -v. La sintaxis básica de esta utilidad es la siguiente: [BASH]# quotaon [opciones] puntoDeMontaje → ( Ejemplo:/home /var) [BASH]# quotaon [opciones] ­a  Se pueden utilizar muchas opciones con el comando quotaon. Normalmente se utiliza en el proceso de arranque para activar las cuotas.76 - .ningún espacio en disco o no se hayan definido. quotaon Activa las cuotas configuradas previamente en uno o más sistemas de archivos. Las utilizadas más frecuentemente son las que se muestran en la tabla siguiente: Opciones Descripcion Activa las cuotas en todos los sistemas de archivos incluidos en /etc/fstab y que estén -a marcados como de lectura-escritura y con cuotas. -g -u -v Activa las cuotas de grupo. el grupo contaduria ha excedido el escaso límite soft de 990 bloques y ha alcanzado su límite hard de 1000 bloques. Ejemplo 1: Siendo roo t. con un límite hard de 10200 bloques en /dev/sda9. Ejemplo 1: Activar todas las cuotas definidas en el archivo /etc/fstab [BASH]# quotaon ­av Ejemplo 2: Activar las cuotas de usuario sólo en el sistema de archivos /home [BASH]# quotaon ­av /home . examina las cuotas para el grupo contaduria. esta es la opción por defecto. Esta comando no está incluido específicamente en los objetivos del examen LPI 101. Esta opción indica que el programa está activo mediante un símbolo giratorio en el terminal. Establece el modo explícito que mostrará un mensaje para cada sistema de archivos en el que se desactiven las cuotas.quotaoff Desactiva las cuotas de disco en uno o más sistemas de archivos La sintaxis básica de esta utilidad es la siguiente: [BASH]# quotaoff [opciones] puntoDeMontaje → ( Ejemplo:/home /var) [BASH]# quotaoff [opciones] ­a  Se pueden utilizar muchas opciones con el comando quotaoff. Desactiva las cuotas de usuario. -g grupo Compila solamente la información de grupo. entonces habría que incluir esta si se desea que se procesen también las cuotas de usuario. pero es un componente importante en el sistema de cuotas de Linux. Las utilizadas más frecuentemente son las que se muestran en la tabla siguiente: Opciones Descripcion Comprueba todas las cuotas de los sistemas de archivos incluidos en /etc/fstab. La sintaxis básica de esta utilidad es la siguiente: [BASH]# quotacheck [opciones] puntoDeMontaje → ( Ejemplo:/home /var) [BASH]# quotacheck [opciones] ­a  Se pueden utilizar muchas opciones con el comando quotacheck. Se -a comprobarán tanto las cuotas de usuario como las de grupo según se indique en las opciones usrquota y grpquota. si se especificase la opción -g. Compila solamente la información de usuario. No -u usuario obstante. El comando quotacheck -a debería ser ejecutado de forma regular por medio de cron. Desactiva las cuotas de grupo. Ésto queda muy bonito pero podría ser un problema si estamos conectados mediante un módem lento. Esta opción no es necesaria si se utiliza la -a ya que ésta última incluye tanto las cuotas de usuario como las de grupo. Establece el modo explícito que mostrará toda la información de lo que el programa está -v haciendo. ésta es la opción por defecto. Ejemplo 1: Inicializa todos los archivos de cuotas . Ejemplo 1: Desactivar todas las cuotas mostrando todos los mensajes [BASH]# quotaoff ­av quotacheck Revisa los sistemas de archivos y compila las bases de datos de cuotas. Las utilizadas más frecuentemente son las que se muestran en la tabla siguiente: Opciones -a -g -u -v Descripcion Desactiva las cuotas en todos los sistemas de archivos en /etc/fstab.77 - . Este es el mecanismo mas habitualmente utilizado para inicializar al mismo tiempo las cuotas de varios usuarios o grupos. incluso si se especificase también -u. Este es un comando interactivo que utiliza un editor de texto para configurar los parámetros de cuotas para usuarios o grupos. . las cuotas de ese usuario o grupo se utilizarán para los nombres y no se lanzará ningún editor. No tiene ninguna limitación en /dev/hda1. actualizar las cuotas de usuario en memoria para el sistema de archivos /home [BASH]# quotacheck ­v /home edquota Modifica las cuotas de usuario o grupo. hard = 0)       inodes in use: 0. se modifica una lista de usuarios o grupos separados por espacios en blanco especificados en el apartado nombres. hard = 100000)       inodes in use: 84. hard = 0)  "/tmp/EdP. Cuando se envía el comando.000 bloques.[BASH]# quotaoff ­a [BASH]# quotacheck ­aguv [BASH]# quotaon ­a  Para actualizar los archivos de bases de datos de cuotas debemos desactivar primero las mismas.auHTZJ0" 5 lines. Si se incluye la opción -p y proto-usuario. limits (soft = 0. hard = 0)  /dev/hda1: blocks in use: 0.78 - . Es la opción por defecto. week (semanas). con la opción -t. Modifica las cuotas de usuario. Al guardar el archivo temporal. proto- Duplica las cuotas del usuario prototipo para cada grupo o usuario especificado. el editor finaliza y los cambios se guardan en las bases de datos de cuotas. pero se ignorará si se especificase la opción -g Ejemplo 1: Modifica las cuotas de usuario para mayra [BASH]# edquota ­u mayra Quotas for user mayra:  /dev/sda9: blocks in use: 87. Modifica los límites soft. En la primera forma del comando. se editarán interactivamente los límites soft para cada sistema de archivos La sintaxis básica de esta utilidad es la siguiente: [BASH]# edquota [­p proto­usuario] [opciones] nombres [BASH]# edquota [opciones] ­t  Se pueden utilizar muchas opciones con el comando edquota. Por defecto se utiliza el editor vi. y month (meses). Las utilizadas más frecuentemente son las que se muestran en la tabla siguiente: Opciones Modifica las cuotas de grupo. se ejecuta un editor con un archivo temporal que contiene las opciones de cuotas. Si se especifica -g. Ejemplo 2: Con las cuotas activas. 241 characters  En este ejemplo. hour (horas). a mayra se le ha definido en /dev/sda9 un límite soft de 99. day (días). Este comando interpreta unidades de sec (segundos). limits (soft = 99900. En la segunda forma del comando. limits (soft = 0. limits (soft = 0. min(minutos). un límite hard de 100.900 bloques. y ningún límite de archivos. se asumirá que todos los nombres -g -p usuario -t -u Descripcion son grupos y no usuarios.     file grace period: 3 days  "/tmp/EdP. En la línea que contiene el sistema de archivos /home. la opción -a hará que se muestre un sumario de todos los sistemas de archivos con cuotas. -g Muestra las cuotas de grupos. La sintaxis básica de esta utilidad es la siguiente: [BASH]# quotaoff [opciones] puntoDeMontaje → ( Ejemplo:/home /var) [BASH]# quotaoff ­a [opciones]  Se pueden utilizar muchas opciones con el comando repquota.). Se mostrarán tanto las cuotas de usuario como las de grupo según se indique en las opciones usrquota y grpquota. -u Muestra las cuotas de usuarios. Las utilizadas más frecuentemente son las que se muestran en la tabla siguiente: Opciones Descripcion Hace informes de todas las cuotas de todos los sistemas de archivo de lectura-escritura -a incluidos en /etc/fstab. repquota mostrará un informe por usuario o por grupo de las cuotas de los sistemas de archivos indicados. añadir las opciones usrquota y grpquota a la opción default. Este comando solo podrá ejecutarlo el usuario root. el cual añade una cabecera descriptiva a la salida del comando. hours. habría que recompilarlo con esta opción. Definir las opciones en /etc/fstab.usrquota. minutes. es la opción por defecto.grpquota   1  2 . 1. Ejemplo 1: Informe de las cuotas de usuario para el sistema de archivos /home [BASH]# repoquota ­v /home Habilitando las cuotas Para poder utilizar las cuotas. repquota Se utiliza para obtener un informe de la situación de las cuotas. tampoco es simple. a menos que los archivos de bases de datos de las cuotas tengan permisos de lectura universales.    file grace period: 3 days  /dev/hda1: block grace period: 7 days. -v Activa el modo explícito. Para aclarar un poco este proceso. En el caso improbable de que no fuese así. como en este ejemplo /dev/sda9  /home  ext3   defaults.79 - . Hay que tener en cuenta que pueden habilitarse cuotas solo de usuario. or seconds Grace period before enforcing soft limits for users:  /dev/sda9: block grace period: 7 days. en primer lugar hay que habilitarlas (El kernel debe estar compilado con soporte para cuotas. de grupo o ambas según sea necesario.aiTShJB" 5 lines.Ejemplo 2: Modificar los límites soft para usuarios en todos los sistemas de archivos [BASH]# edquota ­tu Time units may be: days. En la primera forma del comando. desgraciadamente. No es un proceso dificultoso pero. 249 characters  En este caso se han establecido unos periodos de gracia de siete días para bloques (espacio en disco) y de tres días para archivos (inodos). En la segunda forma. Para cada usuario se imprime el número de archivos y el espacio en disco utilizados en ese momento junto con las cuotas creadas con edquota. en esta sección se incluirá un breve tutorial explicando como habilitar las cuotas de usuario y de grupo en el filesystem /dev/sda9 montado bajo /home. el sistema de archivos /home está listo para aceptar cuotas de usuario o de grupo. para ello nos aseguramos que su tamaño no sea cero (en este ejemplo cada uno ocupa 16.group [BASH]# chmod 600 /home/quota. Cada sistema de archivos con cuotas utilizará sus propias bases de datos.user  /home/quota. El script del ejemplo puede ser válido: #!/bin/bash  /sbin/quotacheck ­avug  Alternativamente.user y quota.* ­rw­­­­­­­ 1 root root 16192 Dec 27 19:53 /home/quota. podría ponerse /sbin/quotacheck en el archivo crontab de root (utilizando el comando crontab -e) para su ejecución semanal.80 - .user   /home/quota.group en la raíz del sistema de archivos /home y dar permisos sólo para root: [BASH]# touch /home/quota.weekly) para que se ejecute quotacheck rutinariamente.Añadir un script al directorio crontab del sistema (por ejemplo /etc/crontab.group Estos dos archivos son las bases de datos de las cuotas de usuarios y grupos. 2. verificar que los archivos de bases de datos se han inicializado realmente.d/rc.Ejecutar quotacheck para inicializar las bases de datos: [BASH]# quotacheck ­avug 4. estos archivos contendrán datos binarios (no son archivos de texto).192): [BASH]# ls ­al /home/quota.group necesitará un permiso de 644 en lugar de 600. Puede ser algo similar al ejemplo siguiente aunque puede variar de sistema a sistema: if [ ­x /sbin/quotacheck ]  then     echo "Checking quotas. Al habilitar las cuotas.Estas opciones indican a las utilidades de configuración de cuotas que particiones deben ser tratadas por dichas utilidades cuando éstas busquen en /etc/fstab."     /sbin/quotacheck ­avug     echo " Done.Crear los archivos quota.Ejecutar quotaon para activar el sistema de cuotas: [BASH]# quotaon ­a 6. 3."  fi  if [ ­x /sbin/quotaon ]  then     echo "Turning on quotas. . como en este ejemplo: # ejecutar quotacheck semanalmente  0 3 * * 0 /sbin/quotacheck ­avug  En este momento. Si se quisiera que los usuarios puedan examinar las cuotas de los grupos a los que pertenecen. controlarlas y emitir informes sobre ellas."     /sbin/quotaon ­avug  fi  7.group  ­rw­­­­­­­ 1 root root 16192 Dec 27 19:53 /home/quota.Ahora.sysinit o similar) activará las cuotas cada vez que el sistema cargue. el archivo quota.Verificar que el script de inicialización del sistema ( /etc/rc.user  5. este campo y secciones son las siguientes: Estas 3 secciones estan compuestas por los siguientes elementos Opciones Descripcion Permite la lectura de un archivo. Éste es el único permiso necesario para copiar un r archivo.Usuario (no pertenece al grupo y al propietario) puede leer 7. otro) 2. modificar o sobreescribir los w contenidos del archivo. se pueden leer ó ver sus archivos. Aplicado a un directorio.El grupo puede leer 4.Usuario puede escribir 8.81 - .Permisos de archivos y directorios Administracion de Permisos Los comandos que usaremos para asignar permisos tanto a carpetas como a archivos seran los sigueintes: La forma es como deben ser usados estos comando sera de la siguiente manera: Permisos de archivos y directorios Los componentes informativos de un archivo estan compuestos por 1 campo y 3 secciones. Cuando se aplica en un directorio. este permite el acceso al mismo. Por ejemplo. .El propietario puede ejecutar 3.El grupo puede escribir 5. Cuando se aplica a un conjunto con permisos de lectura dentro de un escritorio.Usuario puede ejecutar Estos permisos tienen valores numéricos como se muestran en la siguiente tabla Permiso Valor Numerico r 4 w 2 x 1 .El propietario puede leer 1.Tipo de elementro (archivo. Cuando se aplica a un directorio. r-x indica que ese usuario puede leer y ejecutar. este permite borrar y mover archivos incluso si no se tiene el permiso de escritura específico sobre el archivo individual Permiso de ejecución: permite ejecutar el archivo si contiene los scripts necesarios o x puede ser ejecutado por el sistema. Por . Con él se pueden cambiar. pero no escribir El elemento llamado campo es un identificador que indica si un elemento es un directorio.El propietario puede escribir 2.(guion) 0 Los valores numéricos hacen posible añadir permisos a la vez y expresarlo de un modo sencillo.(guion) Indica la ausencia de permiso. directorio. Permite escribir en un archivo. este permite buscar dentro de dicho directorio. un documento o un enlace simbolico Por tanto.El grupo puede ejecutar 6. los 10 campos de permisos se resumen en: 1. ejemplo. si un archivo permite al usuario rwx. . el valor numérico sería 4(r)+2(w)+1(x)=7.82 - . La tabla siguiente muestra la conversión numérica de un conjunto de distintos permisos posibles: Permiso Valor Numerico 1 --------x 2 -------w- 3 -------wx 4 ------r-- 5 ------r-x 6 ------rw- 10 -----x--- 11 -----x--x 22 -----w--w- 33 ----wx-wx 55 ---r-xr-x 77 ---rwxrwx 100 --x------ 101 --x-----x 111 --x--x--x 222 -w--w--w- 311 -wx--x--x 322 -wx-w--w- 400 r-------- 444 r--r--r-- 511 r-x---x--x 544 r-xr--r-- 644 rw-r--r-- 666 rw-rw-rw 755 rwxr-xr-x 777 rwxrwxrwx Comando chmod Chmod ( change mode ) permite cambiar los permisos de acceso de un archivo o directorio. El formato del conjunto de los permisos de un archivo se muestra en la siguiente figura. algunas veces es necesario algo más para un archivo o directorio. escritura y ejecución. Esto cambia el x en el permiso del grupo a un s. .La sintaxis básica de esta utilidad es la siguiente: [BASH]# chmod [modificadores] [opciones] [archivo/directorio] Donde los modificadores son los antes vistos en la tabla anterior. Aparte de los siempre aplicables de lectura. incluso si no tiene el permiso de escritura de ese archivo. Antes y después del manuscrito. porque no se dispone del tiempo necesario para hacerlo personalmente. 4000. El permiso numerico de SUID. el permiso de la identificación de grupo del sistema se aplica cuando es necesario que la persona que ejecuta el archivo sea un miembro del grupo que posee el archivo (y no el propietario). Cuando está aplicado a un directorio. sus operaciones difieren cuando están aplicadas a un directorio o a un archivo. Las utilizadas más frecuentemente son las que se muestran en la tabla siguiente: Opciones Descripcion Lista los archivos y directorios a los que se les va aplicando el comando a medida que el -v mismo se ejecuta -R Aplica el comando chmod recursivamente a todos los archivos y subdirectorios.83 - . Permisos especiales Pueden ser utilizados 3 tipos de permisos en determinadas circunstancias. sólo el usuario root sería capaz de ejecutar la función funcion xyz (comenzar backups. Una vez aplicado este. Con un valor numérico de 1000. etc) a causa de las ramificaciones de seguridad. cambia la x en el campo del ejecutable para el propietario de los permisos a una s: SGID Similar en la naturaleza a SUID. Por defecto. Se puede crear este shell script como root y asignar el permiso SUID de modo que el usuario que ejecute el script sea root sólo dentro de ese script. Estos permisos especiales son los 3 siguientes: • Asignar ID de usuario (set user ID) (SUID) • Asignar ID de grupo (set group ID) (SGID) • Sticky bit SUID La asignación de ID de usuario se aplica cuando se desea que un determinado usuario ejecute un programa que de otro modo no podría. evita que los usuarios supriman archivos de las carpetas que les conceden el permiso de escritura. pero durante la ejecucion del script es como si fuera root. cualquier usuario que tenga permiso de escritura en un directorio puede suprimir archivos dentro de ese directorio. a menos que sean el propietario del archivo. Se pueden utilizar muchas opciones con el comando chmod. es únicamente un usuario. pero se necesita que los usuarios ejecuten un shell script para realizar esta acción. restaurar el sistema. y el valor numérico es 2000: Stiky Bit Este permiso no trabaja como los otros permisos especiales. Por ejemplo. es sumado al valor de otros permisos. entrar en otros recursos. Si el archivo es un archivo ejecutable. permanece cargado en memoria física (RAM) o espacio swap de modo que pueda funcionar más rápidamente que si se lee desde el disco. Si el archivo no es ejecutable. aparece t de todos modos (sea archivo o directorio). Las utilizadas más frecuentemente son las que se muestran en la tabla siguiente: Opciones -c Descripcion Muestra un mensaje donde menciona solamente aquellos archivos cuyo propietario cambia realmente. entonces ese usuario se convierte en el propietario de cada archivo dado. usuario o grupo.84 - . El comando busca en el archivo /etc/group para confirmar la existencia del grupo especificado antes de cambiar los permisos. -R Cambia recursivamente el propietario de directorios y sus contenidos. Disponible solamente si el sistema proporciona la primitiva lchown No muestra mensajes de error sobre archivos cuyo grupo no pueda cambiarse. el bit pasado se convierte en una t. -f No muestra mensajes de error sobre archivos cambiarse. sin espacios entre ellos. Administrando el propietario de los archivos Comando chown El comando chown cambia el propietario de cada archivo. Si al nombre de usuario sigue un signo de dos puntos y un nombre de grupo o GID numérico. si sólo se da un nombre de usuario (o UID numérico). Cuando se aplica el permiso chmod y las letras. o el permiso se aplica a un directorio. entonces también se cambia el grupo al que pertenece cada archivo.Cuando se aplica sobre un archivo. Actúa sobre enlaces simbólicos propiamente en vez de sobre lo que apunten. el archivo se convierte en “sticky” (bloqueado). se usa con la siguiente sintaxis: La sintaxis básica de esta utilidad es la siguiente: [BASH]# chown [opciones] usuario:grupo archivo Se pueden utilizar muchas opciones con el comando quotaon. La primera vez que se accede o se ejecuta el archivo y se carga en memoria. . -v Describe la acción efectuada (o no) para cada archivo de forma interactiva. Comando chgrp El comando chgrp se usa para cambiar el grupo propietario de un archivo o directorio. La sintaxis básica de esta utilidad es la siguiente: [BASH]# chgrp [opciones] grupo archivo Se pueden utilizar muchas opciones con el comando quotaon. el último bit de permiso ( para otra categoria) se convierte en T. y el grupo al que pertenece el archivo no cambia. Las utilizadas más frecuentemente son las que se muestran en la tabla siguiente: Opciones -c -h -f Descripcion Muestra un mensaje donde menciona solamente aquellos archivos cuyo propietario cambia realmente. -R -v Cambia recursivamente el grupo al que pertenecen directorios y sus contenidos. (Y continúa incluso si se encuentran errores.) Describe la acción efectuada (o no) para cada archivo de forma interactiva. El usuario root puede efectuar los cambios al grupo que desee; para que un usuario pueda hacerlo, debe ser el propietario del archivo y pertenecer al grupo donde está efectuando el cambio. Crear y cambiar enlaces de archivos Creando links a archivos A veces es útil o necesario tener un mismo archivo en varias localizaciones del sistema de archivos, por ejemplo, para acceder con diferentes permisos sobre un archivo dependiendo de su localización. En Linux existe una solución para eso: los enlaces o links. Estos son de dos tipos: 1. Los Duros o Hard Links, y 2. Los Suaves, Symbolic Links o Symlinks. Los Hard Links Estos enlaces comparten el inodo del archivo original. De hecho, un hard link es indistinguible del original y por eso los cambios en el link afectan al archivo original, excepto en el borrado. Borrar el link no elimina al original ni a la inversa. Este tipo de enlace conserva los permisos del original y marcas de tiempo. Por contra, no se pueden usar para hacer enlaces a directorios ni pueden extenderse a otros sistemas de archivos. Su sintaxis es como sigue: [BASH]# ln /ruta/completa/archivo nombre_enlace  Los Symlinks Estos enlaces si que pueden extenderse a otros sistemas de archivos. También pueden hacer referencia a directorios, de hecho, pueden referenciar hasta archivos inexistentes. La lectura y escritura, así como la copia del enlace, afectan al archivo objetivo, mientras que el borrado afecta al propio enlace. Borrar el archivo objetivo tampoco elimina el enlace automáticamente. Su sintaxis es como sigue: [BASH]# ln ­s /ruta/completa/archivo nombre_enlace  - 85 - 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/bash /bin/csh /bin/ksh Su shell de entrada sera el Shell Bourne Su shell de entrada sera el shell C 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. - 86 - 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. /inputrc Define las opciones de entrada del teclado. 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 - 87 - 88 - . MAILPATH Una lista de ficheros separada por comas. El sistema utiliza esta  información para determinar que el directorio cambie cuando escriba el comando cd sin  argumentos. (Estos archivos se encuentran en el directorio personal de cada usuario. /. PATH Una  lista  de   directorios.bash_profile . Por tanto son gestionados por root Como cada usuario tiene su propia copia de los archivos . Muchas de dichas variables pueden estar ya incluidas en su perfil de usuario. en los cuales el interprete de  comandos comprueba periodicamente de la llegada de correo.   en  los   cuales   el  interprete  de  comandos busca por comandos PS1 Prompt principal. bash informa al usuario de la llegada de correo al fichero especificado.bash_profile para los shell Bourne y Korn.   separados   por  comas.bash_login. HOME Define la ruta de acceso absoluta de su directorio raíz.bashrc y .bash_profile. Los archivos /etc/profile y /etc/bashrc afectan a todos los usuarios.cshrc para el shell C). Como ya se mencionó anteriormente en su archivo de perfil de usuario (.bash_profile. Sin embargo. puede almacenar variables de entorno “permanentes” en los archivos . CDPATH Especifica los directorios que se han de buscar cuando se escribe un único nombre  de directorio sin un nombre de ruta de acceso completo. o . El valor por defecto es “'\s­\v\$ ' PS2 El prompt secundario. MAIL Si   este   parametro   tiene   un   fichero   definido   y   la   variable   MAILPATH   no   esta  definida. Todas ellas tienen un significado especial para el mismo.   usado   cuando   el   interprete   de  comandos separa palabras como parte de una expansion.bashrc y /etc/profile. El valor por defecto es '> ' BASH La ruta de acceso completa usada para ejecutar la instancia actual de bash . Si desea modificar temporalmente su entorno para la sesión actual de trabajo puede escribir comandos directamente en su BASH.cshrc. Cada usuario tiene su propia copia de los archivos . . a otras se le asignan ciertos valores automaticamente y algunas pierden su significado si le cambiamos los valores que tienen por defecto. 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 . 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. si desea modificar su entorno de trabajo de un modo más permanente. /etc/bashrc Solo existe una sola copia de los archivos /etc/profile y /etc/bashrc. y . algunas de ellas solo se pueden leer.bash_profile. IFS Una   lista   de   caracteres   para   separar   campos.Diferencias entre /.   por  defecto 500 HOSTNAME El nombre de maquina actual HOSTTYPE Cadena describiendo la maquina que esta ejecutando Bash MACHTYPE Cadena describiendo el tipo de sistema que esta ejecutando Bash OLDPWD Directorio previo definido por el comando 'cd' OSTYPE Cadena describiendo el sistema operativo que esta ejecutando Bash PPID El numero de proceso del proceso padre del interprete de comandos PS3 El valor de esta variable se usa como 'prompt' PWD Directorio actual definido por el comando 'cd' SECONDS Numero de segundos desde que Bash fue arrancado SHELLOPTS Lista con opciones de Bash activadas UID 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. /usr/bin/cp. Al fijar PATH se crea un conjunto de directorios fijos que el sistema buscará siempre que un usuario. si no tiene establecida ninguna variable PATH y quiere copiar un archivo. Seguido a ello invocamos una segunda terminal y nuevamente imprimimos el contenido de la . Para los shell Bourne y Korn. la variable PATH se especifica en el 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.BASH_ENV Si   esta   variable   esta   definida   cuando   bash   es   llamado   para   ejecutar   un  script. si ha establecido la variable PATH para incluir el directorio /usr/bin. 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. Por ejemplo. 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.   su   valor   es   expandido   y   usado   como   el   nombre   del   fichero   leido   antes   de  ejecutar el script. tendrá que introducir el nombre de ruta de acceso completo para el comando. BASH_VERSION El numero de version de bash usada EUID El identificador numerico de usuario del usuario actual GROUPS Una matriz que contiene la lista de los grupos a que pertenece el usuario actual HISTFILESIZE El   numero   maximo   de   lineas   contenidas   en   la   historia   de   comandos. Sin embargo. escriba el nombre de un comando. podrá simplemente escribir cp y el sistema ejecutará siempre el comando.89 - . 90 - . la cual no es mostrada debido a que es una variable local y no global.}  .pdf El comando anterior tiene la funcion de listar el contenido de un directorio. Las funciones se construyen mediante la siguiente sintaxis Function nombreDeLafuncion() {listaDeComandos.pdf bin kernelfedora. Ejemplo: [BASH]# alias ls='ls ­l' [BASH]# ls drwx­­­­­­ 2 hack users 4096 jun 29 09:46 amsn_received drwxr­xr­x 2 hack  users 4096 jun 9 05:01 bin drwxr­xr­x 2 hack users 4096 jun 9 05:01 Documents ­rwxr­xr­ x  1  hack   users   64472   jun   1   17:23   Objetivos. para ello se implementan los alias de comandos. 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.variable “saludo”. Ejemplo: [BASH]# ls amsn_received Documents Objetivos.png   ­rwxr­xr­x  1   hack   users   78002   jun   5  15:25 RPM­Como. Para solucionar este problema se debe exportar la variable local lo cual hara que la variable se convierta en variable global. permisos de ejecucion. 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. suponga que usted quisiera implementar este comando para ademas de listar el contenido le arroje datos mas relevantes como por ejemplo. numero de enlaces.png RPM­Como.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.pdf ­rw­r­­r­­ 1 hack users 1439863 jun 16 10:38 kernelfedora. fecha de creacion y tamaño. notes. Antes de seguir viendo como estas construcciones se pueden utilizar. ls. La mayoria de condiciones utilizadas con estas construcciones son comparaciones de cadenas alfanumericas o numericas.}  Personalizar o escribir scripts simples En este capitulo estudiaremos la forma de crear sencillos scripts mediante la implementacion de sentencias de control. case: Ejecuta una o varias listas de comandos dependiendo del valor de una variable. Comparaciones de cadenas alfanumericas Operador Significado cadena1 = cadena2 cadena1 != cadena2 cadena1 < cadena2 cadena1 > cadena 2 cadena1 es igual a cadena2 cadena1 no es igual a cadena2 cadena1 es menor que cadena2 cadena1 es mayor que cadena 2 . ls }  [BASH]# function look() {pwd. > }  Ejemplos invalidos en la declaracion de funciones [BASH]# function look() pwd.Donde function Orden que invoca al comando function . vamos a ver como las condiciones se pueden definir. for: Ejecuta una serie de comandos un numero determinado de veces. 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. ls.}  [BASH]# look()  > { > pwd.}  [BASH]# function look { pwd. ls. > ls.91 - . ls. }  [BASH]# $ look() { pwd. until: Ejecuta una serie de comandos hasta que una determinada condicion se cumpla. select: Permite seleccionar al usuario una opcion de una lista de opciones en un menu. ls. ls.}  La funcion anteriormente definida se usa de la siguiente manera: [BASH]# function /home/valdo/lpic/general­linux­2/notes CVS _whizzy_gl2. es opcional nombreDeLaFuncion() El nombre de la funcion listaDeComandos El cuerpo de la funcion Ejemplo:Construyendo una funcion [BASH]# function listado() { pwd. while: Ejecuta una seria de comandos mientras que una determinada condicion sea cumpla. En Bash existen estas construcciones para controlar el flujo de ejecucion de un script: if/else: Ejecuta una serie de comandos dependiendo si una cierta condicion se cumple o  no.pag  Ejemplos validos en la declaracion de funciones [BASH]# function look() { pwd.fmt _whizzy_gl2. [BASH]# look() { pwd. valores de terminacion de comandos y comprobaciones de atributos de ficheros.notes. los comandos ejecutados serán los del bloque opcional elif el cual verifica los comandos del bloque del then (cmd3) los cuales seran ejecutados. el else (cmd3. Ejemplo #!/bin/bash  . cmd4 y cmdm). tal vez la hayas visto antes en algunos otros lenguajes de programacion.­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 Significado ­d fichero Fichero existe y es un directorio ­e fichero Fichero existe ­f fichero Fichero existe y es un fichero regular ­r fichero Tienes permiso de lectura en fichero ­s fichero Fichero existe y no esta vacio ­w fichero Tienes permiso de escritura en fichero ­x fichero Tienes permiso de ejecucion en fichero ­O fichero Eres el dueño del fichero ­G fichero El grupo del fichero es igual al tuyo fichero1 ­nt fichero2 fichero1 es mas reciente que fichero2 fichero1 ­ot fichero2 fichero1 es mas antiguo que fichero2 Sentencia if La sentencia if es un condicional simple. los comandos del bloque del then (cmd1. terminando con un fi. Su sintaxis es la siguiente: if cmd then cmd1 cmd2 cmdn elif cmd3 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. cmd2 y cmdn) serán ejecutados. en caso contrario sera pasado al siguiente bloque.92 - . en caso contrario. .. sino que se parece más al bucle for each de otros lenguajes.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. se recorre el contenido de $@. sino que se procesan las palabras de una frase una a una. Su sintaxis es la siguiente: for var [in lista]  do ∙∙∙∙∙ Sentencias que usan $var ∙∙∙∙∙ done  Si se omite in lista." 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. pero aunque vayamos a recorrer esta variable. 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 [ ].93 - . mientras que until se ejecuta hasta que el código de terminación sea exitoso. en este tutorial la indicaremos explícitamente por claridad. La única diferencia entre while y until es que while se ejecuta mientras que el código de terminación del comando sea exitoso. es decir 0. Ejemplo #!/bin/bash  Script que muestra los directorios de PATH path=$PATH while [ $path ]. ya que aquí no se repite un número fijo de veces. Por ejemplo. do echo ${path%%:} if [ ${path#:} = $path ]. 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. según esto until se puede interpretar como ejecutar varias veces un comando hasta que tenga exito.. then path=  else path=${path#:} fi done  . pcx) pcxtoppm $fichero > $fichero_ppm. .}.) hasta .jpg   pnmtojpeg   $fichero_ppm   >  $fichero_salida if ! [ $fichero = $fichero_ppm ]. se usa para abandonar un bucle..ppm) ..Sentencia case Mientras que esta sentencia en lenguajes como C o Java se usa para comprobar el valor de una variable simple.jpg for fichero in "$@" do fichero_ppm=${fichero%. tanto de select.. y se puede usar en el caso. 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. como un entero o un carácter.ppm case $fichero in . ) echo "Formato .. Su sintaxis es la siguiente: case cadena in  patron1) Sentencias . se ejecutan sus correspondientes sentencias (las cuales se separan por . La sentencia genera un menú con los elementos de lista. al igual que en C y Java. lo cual no es un prompt que suela gustar . sino que ésta se abandona usando los dos puntos comas . Pero a diferencia de C y Java no sirve para abandonar la sentencia case. y el número elegido en la variable REPLY.pnm|. Ejemplo: /bin/bash Script que convierte ficheros de imagen al formato .xpm) xpmtoppm $fichero > $fichero_ppm. excepto por la palabra select en vez de for. y es habitual cambiar este prompt antes de ejecutar select para que muestre al usuario un mensaje más descriptivo. . El valor elegido se almacena en variable.tga) tgatoppm $fichero > $fichero_ppm. Si cadena cumple alguno de los patrones.. patron2) Sentencias .94 - . . Aunque el bucle de select es infinito (lo cual nos permite volver a pedir una opción cuantas veces haga falta).ppm}. se ejecuta el cuerpo de la sentencia y el proceso se repite en un bucle infinito... donde asigna un número a cada elemento. . Por defecto el valor de PS3 es #?.jpg) exit 0.. como de los bucles for.${fichero##. El prompt que usa la función es el definido en la variable de entorno PS3.   esac   fichero_salida=${fichero_ppm%.tif) tifftopnm $fichero > $fichero_ppm.. ∙∙∙∙∙ esac Cada patrón puede estar formado por varios patrones separados por el carácter |. en Bash esta sentencia permite realizar una comparación de patrones con la cadena a examinar. then rm $fichero_ppm fidone  Sentencia select La sentencia select nos permite generar fácilmente un menú simple.. Una vez elegida una opción por parte del usuario.. .. while y until.gif) figtoppm $fichero > $fichero_ppm.. el bucle se puede abandonar usando la sentencia break. y pide al usuario que introduzca un número.. La sentencia break.} no soportado" exit   1. . En este punto es más importante aprender un poco más acerca de cómo realizar consultas que ir directamente a crear tablas. Esto en sí mismo no selecciona ninguna base de datos para trabajar. Commands end with . debe ingresarse cuando mysql muestra Enter password:. puede desconectarse en cualquier momento escribiendo QUIT (o \q) en el prompt mysql>: mysql> QUIT  Bye En Unix. Esta sección describe los principios básicos del ingreso de comandos. tal como se describe en la sección anterior. y recuperarlos.95 - . Consulte con su administrador para saber los parámetros de conexión (nombre de usuario.especialmente a los usuarios.9­beta­standard Type 'help. Si esto sucede en su caso. Los asteriscos (********) representan la contraseña. 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.0. Type '\c' to clear the buffer. generalmente se le porporcionará a mysql un nombre de usuario y una contraseña. contraseña y host) que debe emplear. 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. también se deberá especificar el nombre de host. cargar datos. La mayoría de los ejemplos en las secciones siguientes asumen que ya se ha conectado al servidor. Your MySQL  connection id is 25338 to server version: 5.' or '\h' for  help. Si todo funciona bien. Conectarse y desconectarse del servidor Cerciórese de haberse conectado al servidor. Una vez que conozca los parámetros apropiados. Algunas instalaciones de MySQL permiten conectarse como usuario anónimo (sin nombre) si el servidor se está ejecutando en el ordenador local. también puede desconectarse presionando Control-D. or \g. Por eso muestran el prompt mysql>. Reemplácelos por los valores apropiados para elcaso. mysql>  El prompt anuncia que mysql está listo para procesar comandos. deberia poder conectarse al servidor ejecutando mysql sin ningún parámetro: [BASH]# mysql Después de haberse conectado. empleando varias consultas que puede . Manejo de datos en MySQL Conectarse y desconectarse del servidor Para conectarse al servidor. en lugar del contenido de un campo o columna de una tabla (como en el ejemplo anterior).  +­­­­­­­­­­­­­­­­­­+­­­­­­­­­+ SIN(PI()/4)  (4+1)5 +­­­­­­­­­­­­­­­­­­+­­­­­­­­­+ 0.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. QUIT. es una de ellas. CURRENT_DATE. lo cual da una idea aproximada del rendimiento del servidor. (Hay excepciones donde el punto y coma puede omitirse. (4+1)*5. sentencias de una sola línea.96 - .) Las palabras clave pueden ingresarse en cualquier combinación de minúsculas y mayúsculas. A continuación muestra de nuevo el prompt mysql> para informarle que está listo para otro comando. current_DATE.  Aqui tiene otra consulta que demuestra que mysql puede usarse como calculadora: mysql> SELECT SIN(PI()/4). current_date.realizar para familiarizarse con la forma en que funciona mysql.0.70710678118655  25 +­­­­­­­­­­­­­­­­­­+­­­­­­­­­+ 1 row in set (0. Aquí tiene un comando simple que ordena al servidor que muestre su número de versión y la fecha actual. SELECT NOW(). Luego conocerá otras. mysql imprime los resultados de la consulta en forma tabulada (filas y columnas). mysql informa cuántas filas fueron devueltas y cuánto tiempo le tomó ejecutarse a la consulta. y además porque están afectados por factores como la carga del servidor o la latencia de red. mysql etiqueta la columna usando el texto de la expresión. Generalmente. Si está trayendo el valor de una expresión. Ingréselo a continuación del prompt mysql> y presione Enter: mysql> SELECT VERSION(). CURRENT_DATE.  mysql> select version(). mysql lo envía al servidor para ser ejecutado e imprime los resultados. mysql> SeLeCt vErSiOn().  +­­­­­­­­­­­­­­­­+ VERSION() .  +­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­+ VERSION()  CURRENT_DATE +­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­+ 5. Las filas siguientes son los resultados de la consulta.) Cuando ingresa un comando. La primera fila contiene etiquetas para las columnas. a partir de ahora no se mostrará la línea “rows in set”. Se puede inclusive ingresar múltiples sentencias en una misma línea.02 sec)  Las consultas mostradas hasta ahora han sido relativamente cortas. (Para simplificar los ejemplos de este capitulo. mencionado anteriormente. el nombre de cada columna es el nombre del campo que trae desde la base de datos. Estos valores son imprecisos porque representan tiempo de reloj corriente (no tiempo de CPU).7­beta­Max  2005­07­11 +­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­+ 1 row in set (0. Solamente deben separarse con punto y coma: mysql> SELECT VERSION(). Las siguientes consultas son equivalentes: mysql> SELECT VERSION(). cancélelo tipeando \c: mysql> SELECT  ­> USER() ­> \c mysql>  Una vez más observe el prompt.00 sec)  No es necesario que un comando sea ingresado en una sola línea. Esta es la forma en que mysql advierte que no se ha completado la sentencia y aún espera por el resto. mysql determina cuando una sentencia ha llegado a l final observando si termina en un punto y coma. comandos extensos que requieren varias lineas no son un problema. siempre se sabrá lo que mysql está esperando.+­­­­­­­­­­­­­­­­+ 5. de ese modo. 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 se emplea.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. no si se llegó al final de la línea física. (En otras palabras. → CURRENT_DATE.00 sec) +­­­­­­­­­­­­­­­­­­­­­+ NOW() +­­­­­­­­­­­­­­­­­­­­­+ 2005­07­11 17:59:36 +­­­­­­­­­­­­­­­­­­­­­+ 1 row in set (0.0. mysql acepta un formato libre para las entradas: recolecta lineas pero no las ejecuta hasta que encuentra el punto y coma. El prompt es un aliado. +­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­+ USER()  CURRENT_DATE +­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­+ jon@localhost  2005­07­11 +­­­­­­­­­­­­­­­+­­­­­­­­­­­­­­+ 1 row in set (0. Cambia a mysql> después de que ingresa \c.7­beta­Max +­­­­­­­­­­­­­­­­+  1 row in set (0. Si durante el ingreso de un comando decide que no quiere ejecutarlo. informándole que mysql está listo para un nuevo comando. ­> Esperando la siguiente línea en un comando de múltiples líneas . puesto que suministra información valiosa.) Aqui tiene una sentencia de múltiples líneas: mysql> SELECT ­> USER() ­> .97 - . la mayoría de las veces es porque mysql está esperando por el punto y coma. se encuentra abierta una cadena que comienza con  comillas dobles ('"'). y mysql la ejecutará: mysql> SELECT USER()  ­> . Si no advierte lo que el indicador trata de decirle. presiona ENTER y espera por el resultado. El prompt /> fue introducido en la serie 5.  +­­­­­­­­­­­­­­­­­­­­+ USER() +­­­­­­­­­­­­­­­­­­­­+ joesmith@localhost   +­­­­­­­­­­­­­­­­­­­­+ Los prompts '> y "> aparecen durante el ingreso de cadenas.) ¿Qué hacer llegado a este punto? Lo más simple es cancelar el comando. 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. 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.0. pero informa que está pendiente de completar un identificador delimitado por tildes. Puede escribir cadenas delimitadas por ''' o '"' (por ejemplo. No obstante. /> Esperando la siguiente línea.  '>  Si ingresa esta sentencia SELECT. informando que mysql está listo para un nuevo comando. `> Esperando la siguiente línea. ya que si por error se ingresa una cadena incompleta. ¡porque mysql interpretará que es parte de la cadena que está ingresando!. tipee el caracter de cierre que falta y entonces ingrese \c. Por ejemplo: mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30.>: mysql> SELECT * FROM my_table WHERE name = 'Smith AND age < 30.0 a partir de MySQL 5. note lo que el prompt '> le está diciendo. En lugar de eso. 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 ->).6. se encuentra abierta una cadena que comienza con  apostrofo ('''). Ingrese un punto y coma para completar la sentencia. se encuentra abierto un comentario que comienza con  /. podría demorar un buen tiempo en hacer lo que necesita. "> Esperando la siguiente línea. El prompt `> es similar a '> y "> . Es importante conocer el significado de estos indicadores. 'hola' o "adios"). nada ocurrirá. no puede simplemente tipear \c en este caso.'> Esperando la siguiente línea. Indica que mysql espera por el final de una cadena inconclusa.98 - . A menudo esto significa que inadvertidamente omitió este carácter. y mysql le permite ingresar cadenas divididas en múltiples líneas. (¿Ve el error en la sentencia? La cadena 'Smith no tiene el apóstrofo de cierre.  '> '\c mysql>  El prompt cambia de nuevo a mysql>. se encuentra abierta una cadena que comienza con  tilde ('`'). En ese caso. En lugar de asombrarse por el tiempo que consume la consulta. todo lo que se ingrese posteriormente será aparentemente ignorado por mysql — incluyendo el comando . Puede hacerlo si crea tablas para almacenar sus datos e introduce en ellas la información deseada.99 - . no podrá ver todas las bases de datos que hay en el servidor. es el momento de acceder a una base de datos. La base de datos mysql es necesaria porque es la que describe los privilegios de acceso de los usuarios. Por ejemplo. Esto puede ser sumamente desconcertante. Puede colocar los ejemplos siguientes en la base de datos test. 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 Emplear múltiples tablas La base de datos menagerie (en inglés significa "colección de animales") se ha hecho deliberadamente simple. pero es casi seguro que tendrá las bases de datos mysql y test.  +­­­­­­­­­­+ Database +­­­­­­­­­­+ mysql test tmp +­­­­­­­­­­+  Probablemente la lista obtenida sea distinta en su ordenador. USE no necesita que ponga un punto y coma al final (aunque puede hacerlo si lo desea). La base de datos test se provee para que los usuarios hagan pruebas. Entonces. intente acceder a ella: mysql> USE test  Database changed  Advierta que. Tenga en cuenta que si no tiene el privilegio SHOW DATABASES. pero no es difícil imaginar situaciones del mundo real donde podría usarse un tipo similar de base de datos. para un granjero que desee hacer el seguimiento de su hacienda. La sentencia USE tiene otra particularidad: debe escribirse en una sola linea. o para los registros de los pacientes de un veterinario. al igual que QUIT. Mediante la sentencia SHOW se encuentran las bases de datos que existen actualmente en el servidor: mysql> SHOW DATABASES. pero si trabaja en un . si tiene acceso a ella. Crear y utilizar una base de datos Una vez que se sabe la forma de ingresar comandos. Suponga que en su hogar posee varias mascotas y desea registrar distintos tipos de información sobre ellas.QUIT. en particular si no se conoce lo que debe hacer para terminar la línea y cancelar el comando. podrá responder una variedad de preguntas acerca de sus mascotas recuperando datos desde las tablas. 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. Si la base de datos test existe. colocar la contraseña en la linea de comandos no es recomendable porque lo expone a la vista de otros usuarios.00 sec)  La parte difícil es decidir cómo debería ser la estructura de su base de datos: qué tablas necesitará.* TO 'su_nombre_mysql'@'su_host_cliente'. y su_host_cliente es el host u ordenador desde donde se conectará. Simplemente debe indicar el nombre de la base de datos a continuación de los parámetros que necesite ingresar. Para convertir a menagerie en la base de datos actual. Al crear una base de datos. Querrá una tabla para contener un registro por cada mascota. debe hacerse sin dejar espacios en blanco (por ejemplo. Esta tabla puede .  Empty set (0. De todos modos. Si se quisiera suministrar la contraseña en la linea de comandos.Esta restricción no existe en Windows. no -p mypassword). Donde su_nombre_mysql es el nombre de usuario que se le asignó. de modo que siempre debe referirse a su base de datos como menagerie. o puede indicar la base de datos en la linea de comandos al ejecutar mysql. Esto también se aplica a los nombres de tablas. o una variante similar. Puede hacerse a través del comando USE como se muestra en el ejemplo. de lo contrario necesitará crearla: mysql> CREATE DATABASE menagerie. Crear una tabla La creación de la base de datos ha sido una tarea sencilla. use este comando: mysql> USE menagerie  Database changed  Las bases de datos sólo necesitan ser creadas una sola vez. pero hasta ahora permanece vacía. debería pedirle a su administrador permiso para usar una base de datos propia. En ambientes Unix. El administrador necesitará ejecutar un comando como este: mysql> GRANT ALL ON menagerie.100 - . Por ejemplo: shell> mysql ­h host ­u user ­p menagerie  Enter password:  Advierta en el comando anterior que menagerie no es la contraseña. -pmypassword. aunque puede utilizar el mismo esquema de mayúsculas cuando se refiera a bases de datos y tablas en una consulta dada. puede comenzar a utilizarla. ésta no se selecciona para su uso. y qué columnas habrá en cada tabla. los nombres de las bases de datos son case sensitive (al contrario que las palabras clave). Suponga que quiere llamarla menagerie. lo que deposite allí puede ser fácilmente borrado por alguien más que tenga el acceso. después de la opción -p.ambiente compartido. pero deben ser seleccionadas cada vez que se inicia una sesión de mysql. y no Menagerie. MENAGERIE. Por este motivo. Crear y utilizar una base de datos Si el administrador crea su base de datos en el mismo momento que le otorga privilegios. como le muestra SHOW TABLES: mysql> SHOW TABLES. debe hacerlo explicitamente.   El tipo de dato VARCHAR es una buena elección para las columnas name. pero no es un buen dato para almacenar en una base de datos. species (especie). 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. SHOW TABLES debería producir una salida: mysql> SHOW TABLES.  +­­­­­­­­­­­­­­­­­­­­­+ Tables in menagerie +­­­­­­­­­­­­­­­­­­­­­+ pet +­­­­­­­­­­­­­­­­­­­­­+  Para verificar que la tabla ha sido creada en la forma esperada. según lo que se crea más razonable. (Si piensa que este tipo de consultas no es importante. lo cual significa que debería actualizar la base de datos a menudo. para conseguir ese toque personal con la asistencia del ordenador). Es obvio el uso del tipo de dato DATE para las columnas birth y death. Y algunos otros datos descriptivos básicos. o 'male' (masculino) y 'female' (femenino).) Si en el futuro debiera aumentar la longitud de estos campos. De este modo. el límite de longitud era 255. 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. sex CHAR(1). utilice la sentencia DESCRIBE: mysql> DESCRIBE pet. En MySQL 5. owner VARCHAR(20). Dado que el nombre no es muy relevante por sí mismo. tendría que tener más información. como especie y sexo. (Nota: Anteriormente a MySQL 5. La edad cambia a medida que pasa el tiempo. 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). sex (sexo). Puede calcular edades en relación a otras fechas además de la actual. por lo que no es dificultoso. MySQL tiene la sentencia ALTER TABLE. almacenar la fecha de muerte de una mascota le posibilita calcular la edad que tenía a ese momento. como la fecha de nacimiento.3 y versiones posteriores. En lugar de esto. cada vez que requiera saber la edad. el nombre de cada animal.  ­> species VARCHAR(20). Luego de crear una tabla. y species porque los datos que allí se almacenan no son de longitud uniforme. tal como 'm' y 'f'. podrá calcularla como la diferencia entre la fecha de nacimiento y la fecha actual. normalmente se puede adoptar cualquier longitud entre 1 y 65535. MySQL provee funciones para realizar cálculos con fechas. es mejor almacenar un valor fijo.3.101 - . birth (nacimiento) y death (muerte).  . querrá listar también el dueño de cada animal.0. si más de una persona en su familia tendrá mascotas. owner (propietario). Por ejemplo. Lo más simple es usar los caracteres 'm' y 'f'.0. Hay varios tipos de datos que podrían usarse para representar el sexo en los registros de animales. En realidad no es necesario que todas estas columnas tengan la misma longitud ni que ésta sea 20.llamarse pet. ¿Qué hacer con la edad? Podría ser de interés. birth DATE. como mínimo. Debe usar la sentencia CREATE TABLE para especificar la estructura de una tabla: mysql> CREATE TABLE pet (name VARCHAR(20). y debería contener. owner. death DATE). Por ejemplo. por ejemplo. una forma fácil de completarla es creando un fichero de texto que contenga una línea por cada animal. Cargar datos a una tabla Luego de crear la tabla. debería usar: mysql> LOAD DATA LOCAL INFILE '/path/pet. debería crear un fichero de texto llamado pet. esto puede ser diferente a lo que acostumbra utilizar).txt' INTO TABLE pet  ­> LINES TERMINATED BY '\r\n'. si olvida los nombres o el tipo de dato de las columnas de la tabla. Para esto. utilice este comando: mysql> LOAD DATA LOCAL INFILE '/path/pet.txt. Por ejemplo. y dispuestos en el orden en el cual se especificaron las columnas en la sentencia CREATE TABLE. necesitará completarla con datos. name owner Fluffy Harold Claws Gwen Buffy Harold Fang Benny Bowser Diane Chirpy Gwen Whistler Slim Benny species cat f cat m dog f dog m dog m bird f Gwen bird snake m sex birth death 1993­02­04 1994­03­17 1989­05­13 1990­08­27 1979­08­31 1995­07­29 1998­09­11 1997­12­09 1996­04­29 Dado que está comenzando con una tabla vacía. con cada valor separado por un carácter de tabulación. Para representar estos valores en el archivo de texto. (Observe que MySQL espera que las fechas tengan el formato 'AAAA-MM-DD'.+­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­+­­­­­+­­­­­­­­­+­­­­­­­+ Field  Type  Null  Key  Default  Extra +­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­+­­­­­+­­­­­­­­­+­­­­­­­+ name  varchar(20)  YES  NULL owner  varchar(20)  YES  NULL species  varchar(20)  YES  NULL sex  char(1)  YES  NULL birth  date  YES  NULL death  date  YES  NULL +­­­­­­­­­+­­­­­­­­­­­­­+­­­­­­+­­­­­+­­­­­­­­­+­­­­­­­+  DESCRIBE puede ser utilizada en cualquier momento. Si trabaja en Windows. Para valores ausentes (como sexo desconocido o fechas de muerte de animales con vida). puede usar valores NULL. y luego insertando el contenido del fichero en la tabla mediante una sola sentencia.  . utilice \N (barra diagonal y N mayúscula). Para esto. con un editor que emplea \r\n (retorno de carro + nueva linea) como caracteres de fin de línea. 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 species Whistler Gwen bird sex \N birth death 1997­12­09 \N Para cargar el fichero pet.txt' INTO TABLE pet. Suponga que los registros de mascotas fueran como los mostrados a continuación. le serán de utilidad las sentencias LOAD DATA e INSERT. conteniendo un registro por linea.txt dentro de la tabla pet.102 - . es opcional. la sentencia INSERT resulta de utilidad. por ejemplo.(En un ordenador Apple bajo OS X. De esta sencilla manera. Puede ser una lista de columnas.NULL).  Observe que las cadenas alfanuméricas y las fechas son representados como cadenas delimitadas por apóstrofos. dispuestos en el orden en el cual se especificaron las columnas en la sentencia CREATE TABLE statement. Se podría agregar un nuevo registro. No se debe utilizar \N como se hace con LOAD DATA. con INSERT.'1999­03­30'.103 - . 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.'f'. se pueden insertar valores NULL directamente. Si está presente.'f'. La cláusula WHERE clause is optional.  +­­­­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+ name  owner  species  sex  birth  death +­­­­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+ Fluffy  Harold  cat  f  1993­02­04  NULL Claws  Gwen  cat  m  1994­03­17  NULL Buffy  Harold  dog  f  1989­05­13  NULL Fang  Benny  dog  m  1990­08­27  NULL Bowser  Diane  dog  m  1979­08­31  1995­07­29 Chirpy  Gwen  bird  f  1998­09­11  NULL Whistler  Gwen  bird  NULL  1997­12­09  NULL Slim  Benny  snake  m  1996­04­29  NULL Puffball  Diane  hamster  f  1999­03­30  NULL +­­­­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+  Esta forma de SELECT es útil si se quiere revisar la tabla completa. despues de haberla cargado .'Diane'.” desde_tabla indica la tabla donde están los datos a recuperar.'hamster'.) Opcionalmente puede especificar en la sentencia LOAD DATA los caracteres que actuarán como separador de campo y fin de línea. La sintaxis general de esta sentencia es: mysql> INSERT INTO pet  ­> VALUES ('Puffball'.'1999­03­30'. condiciones representa las condiciones que cada registro debe cumplir para retornar como resultado.txt Cuando lo que desea es agregar nuevos registros de a uno por vez. usando la sentencia INSERT de este modo: mysql> INSERT INTO pet  ­> VALUES ('Puffball'. para indicar un valor ausente. o para indicar “todas las columnas. Estos son suficientes para que la sentencia lea correctamente el fichero pet. pero los valores por defecto son tabulación y nueva línea. Seleccionar todos los datos La forma más simple de SELECT recupera todo lo que hay en la tabla: mysql> SELECT * FROM pet.  seleccionar_esto es lo que se quiere ver.NULL).'hamster'. probablemente quiera utilizar LINES TERMINATED BY '\r'.'Diane'. Extraer informacion de una tabla La sentencia SELECT es utilizada para traer información desde una tabla. También. se suministran valores para cada columna. Suponga que Diane obtiene un nuevo hamster llamado "Puffball". si quisiera saber qué animales han nacido luego de 1998. si opta por esto. Sólo debe omitir la cláusula WHERE en la sentencia SELECT. Para esto se usa la sentencia UPDATE: mysql> UPDATE pet SET birth = '1989­08­31' WHERE name = 'Bowser'. Se pueden indicar condiciones a cumplir por cualquier columna. Por ejemplo. si quisiera verificar los cambios realizados sobre la fecha de nacimiento de Bowser. Pero. puede ocurrir que la fecha de nacimiento de Bowser no parezca correcta. no solamente por name. Para esto se usan las sentencias DELETE y LOAD DATA: mysql> DELETE FROM pet. 'BOWSER'.txt' INTO TABLE pet. A continuación se verán algunas consultas que responden preguntas acerca de las mascotas. Normalmente. necesita evaluar la columna birth: mysql> SELECT * FROM pet WHERE birth > '1998­1­1'. las comparaciones de cadenas no son case sensitive. Existen al menos dos formas de solucionarlo: Editando el fichero pet. seleccione el registro de Bowser de esta manera: mysql> SELECT * FROM pet WHERE name = 'Bowser'. etc. no se desea ver la tabla completa. por eso puede escribir el nombre como 'bowser'.  +­­­­­­­­+­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+ name  owner  species  sex  birth  death +­­­­­­­­+­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+ Bowser  Diane  dog  m  1989­08­31  1995­07­29 +­­­­­­­­+­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+  salida confirma que el año fue correctamente registrado como 1989. Consultando los papeles de pedigri.txt para corregir el error.104 - . Se pueden seleccionar sólo algunos registros de la tabla. Por ejemplo. no 1979. generalmente.  No obstante.con un conjunto de datos inicial. es fácil recuperar una tabla en su totalidad. vaciando la tabla y volviendola a llenar con los datos. El resultado de la consulta será el mismo.  +­­­­­­­­­­+­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+ name  owner  species  sex  birth  death +­­­­­­­­­­+­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+ Chirpy  Gwen  bird  f  1998­09­11  NULL . en cuyo caso se especifican algunas restricciones para la información que se traerá. deberá volver a cargar el registro de Puffball. Seleccionar registros especificos Como se ha visto en la sección anterior. Corrigiendo únicamente el registro erróneo. usualmente.  mysql> LOAD DATA LOCAL INFILE 'pet. se tiene interés en obtener una respuesta para una consulta en particular. se descubre que el año correcto de nacimiento es 1989. especialmente cuando alcanza un gran tamaño. Por ejemplo. En cambio. ya no es 1979. UPDATE modifica solo el registro en cuestión y no requiere que se vuelva a llenar la tabla. si bien AND tiene mayor precedencia que OR. birth FROM pet.105 - . Si utiliza ambos operadores. separadas por comas.  +­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+ name  owner  species  sex  birth  death +­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+ Buffy  Harold  dog  f  1989­05­13  NULL +­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+  La consulta anterior emplea el operador lógico AND.  +­­­­­­­­­­+­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+ name  owner  species  sex  birth  death +­­­­­­­­­­+­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+ Chirpy  Gwen  bird  f  1998­09­11  NULL Whistler  Gwen  bird  NULL  1997­12­09  NULL Slim  Benny  snake  m  1996­04­29  NULL +­­­­­­­­­­+­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+  AND and OR pueden ser combinadas. seleccione las columnas name y birth: mysql> SELECT name. por ejemplo para localizar perros hembra: mysql> SELECT * FROM pet WHERE species = 'dog' AND sex = 'f'.  +­­­­­­­­­­+­­­­­­­­­­­­+ name  birth +­­­­­­­­­­+­­­­­­­­­­­­+ Fluffy  1993­02­04 Claws  1994­03­17 Buffy  1989­05­13 Fang  1990­08­27 Bowser  1989­08­31 Chirpy  1998­09­11 . +­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­ +­­­­­­­+ name  owner  species  sex  birth  death +­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+ Claws  Gwen  cat Buffy  Harold  m  dog  1994­03­17  NULL  f  1989­05­13  NULL   Seleccionar columnas concretas Si no se quieren ver filas completas. 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 desea saber cuándo nació cada animal. Por ejemplo. solo hace falta indicar las columnas en las que se está interesado.Puffball  Diane  hamster  f  1999­03­30  NULL +­­­­­­­­­­+­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+  Se pueden combinar condiciones. También existe el operador OR: mysql> SELECT * FROM pet WHERE species = 'snake' OR species = 'bird'. utilice esta consulta: mysql> SELECT owner FROM pet.  +­­­­­­­­+ owner +­­­­­­­­+ Harold Gwen Harold Benny Diane Gwen Gwen Benny Diane +­­­­­­­­+  Observe que esta sentencia retorna el campo owner de cada registro. y algunos de ellos aparecen más de una vez. birth FROM pet  ­> WHERE species = 'dog' OR species = 'cat'. agregando la palabra clave DISTINCT: mysql> SELECT DISTINCT owner FROM pet. Por ejemplo. species. +­­­­­­­­+­­­­­­­­­+­­­­­­­­­­­­+ name  species  birth +­­­­­­­­+­­­­­­­­­+­­­­­­­­­­­­+ Fluffy  cat  1993­02­04 Claws  cat  1994­03­17 Buffy  dog  1989­05­13 Fang  dog  1990­08­27 Bowser  dog  1989­08­31 +­­­­­­­­+­­­­­­­­­+­­­­­­­­­­­­+  . recupere solamente una vez cada registro repetido.Whistler  1997­12­09 Slim  1996­04­29 Puffball  1999­03­30 +­­­­­­­­­­+­­­­­­­­­­­­+  Para saber quien posee mascotas. Para reducir la salida.  +­­­­­­­­+ owner +­­­­­­­­+ Benny Diane Gwen Harold +­­­­­­­­+  Puede emplearse una clásula WHERE para combinar la selección de ciertas filas y de ciertas columnas. ejecute esta consulta: mysql> SELECT name.106 - . para obtener únicamente la fecha de nacimiento de perros y gatos. y cada columna en un sentido diferente. con los valores más pequeños primero. Por ejemplo. Para ordenar en sentido inverso (descendente). ordenadas por fecha: mysql> SELECT name. species. dentro de cada tipo.Ordenar registros Quizá advirtió. birth FROM pet ORDER BY birth. birth FROM pet ORDER BY birth DESC. Significa que el orden permanece indefinido para las columnas que son idénticas excepto por sus mayúsculas y minúsculas. birth DESC. birth FROM pet  ­> ORDER BY species. El sentido de ordenación. para ordenar por tipo de animal en sentido ascendente y. se usa la clásula ORDER BY.  +­­­­­­­­­­+­­­­­­­­­­­­+ name  birth +­­­­­­­­­­+­­­­­­­­­­­­+ Buffy  1989­05­13 Bowser  1989­08­31 Fang  1990­08­27 Fluffy  1993­02­04 Claws  1994­03­17 Slim  1996­04­29 Whistler  1997­12­09 Chirpy  1998­09­11 Puffball  1999­03­30 +­­­­­­­­­­+­­­­­­­­­­­­+  Por lo general. ordenar por nacimiento en sentido descendente (los animales más jóvenes primero) utilice la siguiente consulta: mysql> SELECT name. cuando se trata de columnas de tipo carácter. Para ordenar un resultado.107 - . que las filas resultantes se mostraron sin ningún orden en particular. — al igual que otras operaciones de comparación — no es case-sensitive. +­­­­­­­­­­+­­­­­­­­­+­­­­­­­­­­­­+ . agregue la palabra clave DESC luego del nombre de la columna por la que ordena: mysql> SELECT name. es ascendente. 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. A menudo es más fácil examinar la salida de una consulta cuando las filas se ordenan de algún modo significativo.  +­­­­­­­­­­+­­­­­­­­­­­­+ name  birth +­­­­­­­­­­+­­­­­­­­­­­­+ Puffball  1999­03­30 Chirpy  1998­09­11 Whistler  1997­12­09 Slim  1996­04­29 Claws  1994­03­17 Fluffy  1993­02­04 Fang  1990­08­27 Bowser  1989­08­31 Buffy  1989­05­13 +­­­­­­­­­­+­­­­­­­­­­­­+  Puede ordenar basándose en varias columnas. por defecto. la ordenación. en los ejemplos anteriores. La consulta funciona bien.name  species  birth +­­­­­­­­­­+­­­­­­­­­+­­­­­­­­­­­­+ Chirpy  bird  1998­09­11 Whistler  bird  1997­12­09 Claws  cat  1994­03­17 Fluffy  cat  1993­02­04 Fang  dog  1990­08­27 Bowser  dog  1989­08­31 Buffy  dog  1989­05­13 Puffball  hamster  1999­03­30 Slim  snake  1996­04­29 +­­­­­­­­­­+­­­­­­­­­+­­­­­­­­­­­­+  Advierta que la palabra clave DESC se aplica sobre la columna inmediatamente anterior (birth). la fecha actual. que representan la parte MM-DD de la fecha. para cada mascota. 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. Esto puede hacerse agregando la cláusula . CURDATE(). el nombre. para calcular edades u obtener partes de una fecha. La siguiente consulta devuelve. por ejemplo.5)<RIGHT(birth. YEAR() trae la parte correspondiente al año de una fecha.5)) ­> AS age ­> FROM pet. hay que calcular la diferencia entre el año de la fecha actual y el de la fecha de nacimiento. birth. pero los resultados podrían revisarse más fácilmente si las filas se presentaran en algún orden.  ­> (YEAR(CURDATE())­YEAR(birth)) ­> ­ (RIGHT(CURDATE(). La expresión completa es un tanto confusa para usar como encabezado. y RIGHT() trae los 5 primeros caracteres contando desde la derecha. Calculos sobre fechas MySQL provee varias funciones que se aplican a cálculos entre fechas. Para determinar cuántos años de edad tiene cada mascota. la fecha de nacimiento. por lo que se emplea un alias (age) para que el encabezado sea más comprensible.108 - . y la edad en años. mysql> SELECT name. La porción de la expresión que compara los valores MM-DD devuelve 1 o 0. no afecta el sentido de ordenación de la columna species. 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. +­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­+ name  birth  CURDATE()  age +­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­+ Fluffy  1993­02­04  2003­08­19 Claws  1994­03­17  2003­08­19 Buffy  1989­05­13  2003­08­19 Fang  1990­08­27  2003­08­19 Bowser  1989­08­31  2003­08­19 Chirpy  1998­09­11  2003­08­19 134 Curso (tutorial) de MySQL  10  9  14  12  13  4 Whistler  1997­12­09  2003­08­19  5 Slim  1996­04­29  2003­08­19  7 Puffball  1999­03­30  2003­08­19  4 +­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­+  En el ejemplo anterior.  birth.ORDER BY name para ordenar por nombre la salida: mysql> SELECT name.5)<RIGHT(birth. para todos los valores no NULL calcula la diferencia entre las fechas de muerte (death) y nacimiento (birth): mysql> SELECT name.  +­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­+ name  birth  CURDATE()  age +­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­+ Chirpy  1998­09­11  2003­08­19  4 Puffball  1999­03­30  2003­08­19  4 Whistler  1997­12­09  2003­08­19  5 Slim  1996­04­29  2003­08­19  7 Claws  1994­03­17  2003­08­19  9 Fluffy  1993­02­04  2003­08­19  10 Fang  1990­08­27  2003­08­19  12 Bowser  1989­08­31  2003­08­19  13 Buffy  1989­05­13  2003­08­19  14 +­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­+  Una consulta similar se utiliza para determinar la edad a la fecha de muerte de los animales. Entonces.5))  ­> AS age  ­> FROM pet ORDER BY age.5)) ­> AS age ­> FROM pet WHERE death IS NOT NULL ORDER BY age. birth. death. +­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­+ name  birth  CURDATE()  age +­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­+ Bowser  1989­08­31  2003­08­19  13 Buffy  1989­05­13  2003­08­19  14 Chirpy  1998­09­11  2003­08­19  4 Claws  1994­03­17  2003­08­19  9 Fang  1990­08­27  2003­08­19  12 Fluffy  1993­02­04  2003­08­19  10 Puffball  1999­03­30  2003­08­19  4 Slim  1996­04­29  2003­08­19  7 Whistler  1997­12­09  2003­08­19  5 +­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­+  Para ordenar la salida por edad (age) en lugar de por nombre (name). +­­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­+ name  birth  death  age +­­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­+ Bowser  1989­08­31  1995­07­29  5 +­­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­+  La consulta utiliza la expresión death IS NOT NULL en lugar de death <> NULL porque NULL es un valor . CURDATE(). CURDATE().  ­> (YEAR(CURDATE())­YEAR(birth)) ­> ­ (RIGHT(CURDATE(). Se determinan los animales que han muerto verificando si el valor de la columna death es NULL.5)<RIGHT(birth.5)<RIGHT(birth.  ­> (YEAR(death)­YEAR(birth)) – (RIGHT(death.  ­> (YEAR(CURDATE())­YEAR(birth))  ­> ­ (RIGHT(CURDATE(). birth. solo hay que utilizar una cláusula ORDER BY diferente: mysql> SELECT name.5)) ­> AS age ­>  FROM pet ORDER BY name.109 - . el resultado será el mes en el que se buscarán cumpleaños: mysql> SELECT name. La suma debe ser realizada luego de MOD(). MySQL cuenta con varias funciones para extraer partes de fechas. De modo que su número es 4. como YEAR(). de esta forma: mysql> SELECT name. 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.especial. Se puede incluso escribir la consulta de forma que funcione sin importar cual es el mes actual.110 - . Si se adiciona un mes al valor de CURDATE(). birth FROM pet -> WHERE MONTH(birth) = MONTH(DATE_ADD(CURDATE(). birth FROM pet -> WHERE MONTH(birth) = MOD(MONTH(CURDATE()). Y MOD(algun_valor. ¿Qué tal si se quisiera saber qué animales cumplen años el próximo mes? Para esta clase de cálculos. 12) + 1. simplemente se desea extraer de la columna birth la parte correspondiente al mes. birth FROM pet WHERE MONTH(birth) = 5. no se necesitará indicar un mes en particular en la consulta. Para verla en funcionamiento. DATE_ADD() sirve para sumar un intervalo de tiempo a una fecha dada. Advierta que MONTH devuelve un número entre 1 and 12. se debe buscar por animales nacidos en Enero (mes 1). en otro caso se estaría pasando de Noviembre (11) to . MONTH(). que no puede ser comparado mediante los operadores lógicos habituales . el año y el día son irrelevantes. Suponga que el mes actual es abril. y se extrae el mes mediante MONTH(). No se puede simplemente sumarle 1 al número del mes (12) y buscar animales nacidos en el mes 13.  +­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­­­+ name  birth  MONTH(birth) +­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­­­+ Fluffy  1993­02­04  2 Claws  1994­03­17  3 Buffy  1989­05­13  5 Fang  1990­08­27  8 Bowser  1989­08­31  8 Chirpy  1998­09­11  9 Whistler  1997­12­09  12 Slim  1996­04­29  4 Puffball  1999­03­30  3 +­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­­­+  Encontrar los animales que cumplen años el mes siguiente es también sencillo. y DAYOFMONTH(). ejecute una consulta que muestra tanto el valor de birth como el de MONTH(birth): mysql> SELECT name.12) devuelve un número entre 0 y 11. En lugar de eso.INTERVAL 1 MONTH)). MONTH(birth) FROM pet. y se buscan los animales nacidos en Mayo (mes 5). MONTH() es la función apropiada para este caso. porque no existe tal mes.  +­­­­­­­+­­­­­­­­­­­­+ name  birth +­­­­­­­+­­­­­­­­­­­­+ Buffy  1989­05­13 +­­­­­­­+­­­­­­­­­­­­+  Esto se complica ligeramente cuando el mes actual es Diciembre. Así. birth. Para comprobar esto. '' IS NULL. Este tratamiento especial de NULL es debido a que. El valor por defecto para una operación booleana es 1. pero no es así. Dos valores NULL son considerados iguales por la cláusula GROUP BY. Trabajar con valores NULL El valor NULL puede resultar un poco desconcertante hasta que se comienza a utilizar.111 - . <. '' IS NOT NULL. no se pueden emplear operadores de comparación aritmética como =. 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. intente la siguiente consulta: mysql> SELECT 1 = NULL. NULL significa valor inexistente o desconocido. 1 > NULL. 0 o NULL se intepretan como falso.. Cuando se realiza un ORDER BY. 1 <> NULL.. los valores NULL se presentan en primer lugar si se emplea ORDER BY . es totalmente posible insertar cadenas vacias o ceros en columnas marcadas como NOT NULL. y cualquier otro valor. ASC. Conceptualmente. y es tratado de forma diferente a otros valores. Use en su lugar los operadores IS NULL y IS NOT NULL: mysql> SELECT 1 IS NULL. Los mencionados son efectivamente valores. como verdadero.  +­­­­­­­­­­+­­­­­­­­­­­+­­­­­­­­­­+­­­­­­­­­­+ 1 = NULL  1 <> NULL  1 < NULL  1 > NULL +­­­­­­­­­­+­­­­­­­­­­­+­­­­­­­­­­+­­­­­­­­­­+ NULL  NULL  NULL  NULL +­­­­­­­­­­+­­­­­­­­­­­+­­­­­­­­­­+­­­­­­­­­­+  Claramente.  +­­­­­­­­­­­+­­­­­­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­­­­­+ 0 IS NULL  0 IS NOT NULL  '' IS NULL  '' IS NOT NULL +­­­­­­­­­­­+­­­­­­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­­­­­+ 0  1  0  1 +­­­­­­­­­­­+­­­­­­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­­­­­+  Por lo tanto. DESC.. mientras que NULL significa "no hay un valor". 1 IS NOT NULL. o <>. y al final si se ordena con ORDER BY . 0 IS NOT NULL. Para verificar que un valor es NULL. 1 < NULL. ya que son valores NOT NULL . Puede comprobar esto fácilmente empleando IS [NOT] NULL como se muestra aquí: mysql> SELECT 0 IS NULL. en la sección anterior. no se obtienen valores significativos a partir de estas comparaciones. fue necesario determinar qué animales ya no estaban vivos utilizando death IS NOT NULL en lugar de death <> NULL..Enero (1).  +­­­­­­­­­­­+­­­­­­­­­­­­­­­+ 1 IS NULL  1 IS NOT NULL +­­­­­­­­­­­+­­­­­­­­­­­­­­­+ 0  1 +­­­­­­­­­­­+­­­­­­­­­­­­­­­+  Observe que en MySQL. grep.112 - . use 5 veces el caracter patrón '_': mysql> SELECT * FROM pet WHERE name LIKE '_____'. Advierta que no se emplean los operadores = o <> para trabajar con patrones SQL.  +­­­­­­­­­­+­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+ name  owner  species  sex  birth  death +­­­­­­­­­­+­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+ Claws  Gwen  cat  m  1994­03­17  NULL Bowser  Diane  dog  m  1989­08­31  1995­07­29 Whistler  Gwen  bird  NULL  1997­12­09  NULL +­­­­­­­­­­+­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+  Para encontrar nombres que contengan exactamente 5 caracteres.  +­­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+ name  owner  species  sex  birth  death +­­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+ Fluffy  Harold  cat  f  1993­02­04  NULL Buffy  Harold  dog  f  1989­05­13  NULL +­­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+  Para encontrar nombres que contengan 'w': mysql> SELECT * FROM pet WHERE name LIKE '%w%'. y sed.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. los patrones SQL no son case-sensitive. Los patrones SQL permiten emplear el caracter '_' para representar coincidencia con un carácter individual y '%' En MySQL. Para encontrar nombres que comiencen con 'b': mysql> SELECT * FROM pet WHERE name LIKE 'b%'. Abajo se muestran algunos ejemplos.  +­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+ name  owner  species  sex  birth  death +­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+ Claws  Gwen  cat  m  1994­03­17  NULL Buffy  Harold  dog  f  1989­05­13  NULL +­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+  . en lugar de eso se usan los operadores de comparación LIKE o NOT LIKE. como ser vi. por defecto.  +­­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+ name  owner  species  sex  birth  death +­­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+ Buffy  Harold  dog  f  1989­05­13  NULL Bowser  Diane  dog  m  1989­08­31  1995­07­29 +­­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+  Para encontrar nombres que terminen con 'fy': mysql> SELECT * FROM pet WHERE name LIKE '%fy'. Para hallar nombres que comiencen con 'b'. utilice la palabra clave BINARY para convertir a una de las cadenas en una cadena binaria..' coincidirá con cualquier número de cualquier carácter. Cuando busque coincidencias con este tipo de patrones. si realmente quiere forzar a que la comparación realizada por REGEXP sea case sensitive.. Esta consulta solamente encontrará coincidencia con 'b' minúsculas al comienzo de un nombre: mysql> SELECT * FROM pet WHERE name REGEXP BINARY '^b'. utilice '^' al principio o '$' al final del patrón. Para hacer referencia a un rango de caracteres.113 - . 'b'.Los otros patrones que pueden emplearse con MySQL usan expresiones regulares extendidas. Para lograr que un patrón detecte coincidencias solamente al principio o al final del valor examinado. Para hallar nombres finalizados en 'fy'. Algunas características de las expresiones regulares extendidas: '. Para demostrar el funcionamiento de las expresiones regulares extendidas. 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).  +­­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+ name  owner  species  sex  birth  death +­­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+ Fluffy  Harold  cat  f  1993­02­04  NULL Buffy  Harold  dog  f  1989­05­13  NULL +­­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+  . use los operadores REGEXP y NOT REGEXP (o bien los sinónimos RLIKE y NOT RLIKE).  +­­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+ name  owner  species  sex  birth  death +­­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+ Buffy  Harold  dog  f  1989­05­13  NULL Bowser  Diane  dog  m  1989­08­31  1995­07­29 +­­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+  En MySQL 5.0. y '. use '^' para buscar coincidencia al principio del valor: mysql> SELECT * FROM pet WHERE name REGEXP '^b'. 'x' detecta cualquier número de caracteres 'x'. use un guión. '[0-9]' detecta cualquier cantidad de dígitos. las consultas con LIKE expuestas anteriormente se han reescrito utilizando REGEXP. '*' detecta coincidencia con cero o más apariciones de los caracteres que lo preceden. Una clase de carácter '[. o 'c'.' detecta coincidencia con cualquier carácter individual. Por ejemplo. Por ejemplo.]' detecta coincidencia con cualquier caracter entre los corchetes. mientras que '[0-9]' lo hace con cualquier dígito. '[abc]' coincidirá con 'a'. emplee '$' para buscar la coincidencia en el final del nombre: mysql> SELECT * FROM pet WHERE name REGEXP 'fy$'. '[a-z]' detecta coincidencia con cualquier letra.   +­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+ name  owner  species  sex  birth  death +­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+ Claws  Gwen  cat  m  1994­03­17  NULL Buffy  Harold  dog  f  1989­05­13  NULL +­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+  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..$'. use '^' y '$' para obligar a que la coincidencia deba estar al principio y al final del nombre. por ello. ya que hay un registro por mascota. COUNT() cuenta el número de filas.{5}$'.' entre ellas.. y cinco instancias de '. se podría querer averiguar la cantidad de mascotas de que se dispone.114 - . la consulta para contar animales luce así: mysql> SELECT COUNT(*) FROM pet.  +­­­­­­­­­­+ COUNT() +­­­­­­­­­­+ 9 . o varios otros recuentos sobre los animales.  +­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+ name  owner  species  sex  birth  death +­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+ Claws  Gwen  cat  m  1994­03­17  NULL Buffy  Harold  dog  f  1989­05­13  NULL +­­­­­­­+­­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­+  La consulta anterior también se podría haber escrito empleando el operador '{n}' “repetir-n-veces”: mysql> SELECT * FROM pet WHERE name REGEXP '^. como hubiera sucedido de utilizar un patrón SQL Para hallar nombres conteniendo exactamente cinco caracteres.Para encontrar nombres conteniendo una 'w'.  +­­­­­­­­­­+­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+ name  owner  species  sex  birth  death +­­­­­­­­­­+­­­­­­­+­­­­­­­­­+­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­+ Claws  Gwen  cat  m  1994­03­17  NULL Bowser  Diane  dog  m  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.. 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. utilice esta consulta: mysql> SELECT * FROM pet WHERE name REGEXP 'w'. mysql> SELECT * FROM pet WHERE name REGEXP '^. o cuantas mascotas tiene cada propietario.. Contar la cantidad total de animales es la misma pregunta que “¿cuántos registros hay en la tabla pet?”. .  +­­­­­­­­­+­­­­­­+­­­­­­­­­­+ species  sex  COUNT() . todo lo que se hubiera obtenido sería un mensaje de error: mysql> SELECT owner. Sin dicha cláusula.  +­­­­­­+­­­­­­­­­­+ sex  COUNT() +­­­­­­+­­­­­­­­­­+ NULL  1 f  4 m  4 +­­­­­­+­­­­­­­­­­+  (En esta salida.  ERROR   1140   (42000):   Mixing   of   GROUP   columns   (MIN(). COUNT(*) FROM pet GROUP BY species.MAX(). Los siguientes ejemplos muestran diferentes operaciones: Cantidad de animales por especies: mysql> SELECT species. NULL indica "sexo desconocido") Cantidad de animales por combinación de especies y sexo: mysql> SELECT species. sex. COUNT(*) FROM pet. COUNT(*) FROM pet GROUP BY sex.  +­­­­­­­­+­­­­­­­­­­+ owner  COUNT() +­­­­­­­­+­­­­­­­­­­+ Benny  2 Diane  2 Gwen  3 Harold  2 +­­­­­­­­+­­­­­­­­­­+  Observe el uso de GROUP BY para agrupar todos los registros de cada propietario. COUNT(*) FROM pet GROUP BY species.115 - .COUNT(). sex.+­­­­­­­­­­+  Anteriormente se recuperaban los nombres de la gente que poseía mascotas. Se puede usar COUNT() para hallar cuantas mascotas tiene cada propietario: mysql> SELECT owner. COUNT(*) FROM pet GROUP BY owner.  +­­­­­­­­­+­­­­­­­­­­+ species  COUNT() +­­­­­­­­­+­­­­­­­­­­+ bird  2 cat  2 dog  3 hamster  1 snake  1 +­­­­­­­­­+­­­­­­­­­­+  Cantidad de animales por sexo: mysql> SELECT 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. +­­­­­­­­­+­­­­­­+­­­­­­­­­­+ bird  NULL  1 bird  f  1 cat  f  1 cat  m  1 dog  f  1 dog  m  2 hamster  f  1 snake  m  1 +­­­­­­­­­+­­­­­­+­­­­­­­­­­+  y gatos de esta manera: mysql> SELECT species. La fecha en que ocurrió el evento. sex. COUNT(*) FROM pet  ­> WHERE species = 'dog' OR species = 'cat' ­> GROUP BY species. sex. Un campo con la descripción del evento. ¿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. Un campo con el tipo de evento. COUNT(*) FROM pet  ­> WHERE sex IS NOT NULL  ­> GROUP BY species. necesitaría otra tabla. +­­­­­­­­­+­­­­­­+­­­­­­­­­­+ species  sex  COUNT() +­­­­­­­­­+­­­­­­+­­­­­­­­­­+ bird  f  1 cat  f  1 cat  m  1 dog  f  1 dog  m  2 hamster  f  1 snake  m  1 +­­­­­­­­­+­­­­­­+­­­­­­­­­­+  Utilizar mas de una tabla La tabla pet mantiene el registro de las mascotas que se poseen. como eventos de su vida tales como visitas al veterinario o nacimiento de crías.116 - . +­­­­­­­­­+­­­­­­+­­­­­­­­­­+ species  sex  COUNT() +­­­­­­­­­+­­­­­­+­­­­­­­­­­+ cat  f  1 cat  m  1 dog  f  1 dog  m  2 +­­­­­­­­­+­­­­­­+­­­­­­­­­­+  O si desea la cantidad de animales de cada sexo contando solamente los que tienen sexo conocido: mysql> SELECT species. Si quisiera registrar otros datos acerca de ellas. a fin de poder clasificarlo. sex. sex. .  3 female Chirpy 1999­03­21 vet needed beak straightened Slim 1997­08­03 vet broken rib Bowser 1991­10­12 kernnel Fang 1991­10­12 kernnel Fang 28/08/98 birthday Gave him a new chew toy Claws 1998­03­17 birthday Gave him a new flea collar Whistler 1998­12­09 birthday First birthday Los registros se cargan así: mysql> LOAD DATA LOCAL INFILE 'event. 3 female. }}} Como se hizo con la tabla pet.  ­> type VARCHAR(15). se debería poder recuperar registros de la tabla event.  ­> (YEAR(date)­YEAR(birth)) ­ (RIGHT(date. se necesita indicar qué registro de una tabla se combinará con qué registro de la otra.type = 'litter'. Esto significa que la consulta requiere ambas tablas: mysql> SELECT pet. 2 female. en inglés) podría ser así: mysql> CREATE TABLE event (name VARCHAR(20). Pero en un momento dado la tabla event por sí sola es insuficiente para responder las preguntas que pueden formularse. la cual está localizada en la tabla pet. Dado que la columna name aparece en ambas tablas. 1 male Buffy  4  5 puppies.name = event. en inglés-) información desde múltiples tablas. se necesita su fecha de nacimiento.txt' INTO TABLE event.name. La consulta emplea la cláusula WHERE para hacer coincidir registros de las dos tablas basándose en el valor de name. ­> remark ­> FROM pet. date DATE. 2 female.5)<RIGHT(birth. 3 male Buffy  5  3 puppies.117 - . 1 male Buffy 1993­06­23 litter 5 puppies. 3 female. Con base en lo que se ha aprendido a partir de las consultas efectuadas sobre la tabla pet. 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 date type remark Fluffy 15/05/95 litter 4 kittens. la sentencia CREATE TABLE para la tabla event ("eventos".name AND event. pero para calcular su edad.5)) AS age. Suponga que se desea saber a qué edad tuvo sus crías cada mascota. +­­­­­­­­+­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+ name  age  remark +­­­­­­­­+­­­­­­+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+ Fluffy  2  4 kittens. event ­> WHERE pet. La fecha en que la mascota tuvo sus crias está en la tabla event.Teniendo en cuenta estas consideraciones. Anteriormente se aprendió a calcular edades a partir de dos fechas. se debe especificar a cuál tabla pertenece la columna al hacer referencia a ella. remark VARCHAR(255)). Esto es sencillo porque ambas tablas tienen una columna name. los principios son los mismos. . 3 male Buffy 1994­06­19 litter 3 puppies. 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. Esto se hace anteponiendo el nombre de la tabla al nombre de la columna.  +­­­­­­­­+­­­­­­+­­­­­­­­+­­­­­­+­­­­­­­­­+ name  sex  name  sex  species +­­­­­­­­+­­­­­­+­­­­­­­­+­­­­­­+­­­­­­­­­+ Fluffy  f Buffy  f Buffy  f  Claws  m  Fang  m  Bowser  cat  dog  m  dog   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. 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. los aspectos de decoración de ventana y manejos de ventanas no están definidos en esta biblioteca. lo que hace que el código sea muy portable. el que está en uso actualmente. e incluso tener varios instalados eligiendo el más apropiado a la hora de acceder a X. X NO ES UN gestor de ventanas. si se desea comparar entre sí registros de una misma tabla. El hecho que exista un estándar definido para X permite que se desarrollen servidores X para distintos sistemas operativos y plataformas. Esto trae la ventaja de que permite al usuario instalar el administrador de ventanas que más le agrade. A veces es útil combinar una tabla consigo misma.118 - . p1. se puede decir que X se comporta como una terminal gráfica virtual. de tal modo que un cliente X podría estar enviando un gráfico a una pantalla. podría unir la tabla pet consigo misma para generar pares de animales macho y hembra de la misma especie: mysql> SELECT p1. mientras que los clientes son las aplicaciones que utilizan estos recursos para interacción con el usuario. que evita al programador de clientes X tener que lidiar con el código binario del Xprotocol.name. p1. necesita de uno para controlar el manejo de ventanas.species  ­> FROM pet AS p1. Por ejemplo. X es el encargado de mostrar la información gráfica y es totalmente independiente del sistema operativo. teclado y ratón.sex = 'f' AND  p2. 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. También trae la ventaja de que hace de X estrictamente un sistema gráfico. posicionarlas.sex. para formar parejas de mascotas para reproducción.No es necesario tener dos tablas diferentes para establecer una unión. Por ejemplo. Instalar y configurar X Window System Sobre X Window System 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. a una impresora . proporcionando así el concepto de transparencia de red. El servidor provee servicios para acceder a la pantalla. que consiste en una serie de bytes interpretados como comandos básicos para generar ventanas. o controlar eventos. Sin embargo. las aplicaciones pueden ejecutarse remotamente desde otras máquinas.sex = 'm'.sex.name. pet  AS  p2  ­>  WHERE p1. De este modo mientras el servidor se ejecuta de manera local. p2.species  AND p1. Generalmente se refiere a la versión 11 de este protocolo. X11. Los clientes X acceden al Xprotocol mediante el uso de una biblioteca llamada Xlib. Debido a este esquema cliente-servidor. 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). p2. El sistema de ventanas X distribuye el procesamiento de aplicaciones especificando enlaces cliente-servidor.species = p2. 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. Chip y cantidad de memoria de la tarjeta grafica . 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.119 - . Con esta información sabemos como hemos de configurar nuestro monitor para no dañarlo o quemarlo. 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. 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 Configurando el entorno X Window System Lo primero que tenemos que hacer es recopilar la información necesaria. Por otro lado.o a cualquier otro hardware sin darse cuenta. Dichas especificaciones vienen en la documentación del monitor. Las bibliotecas de los gestores de ventanas se conocen como "Toolkits". 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. o bien la obtenemos desde la web del fabricante. flexibilizando la salida gráfica. barras de deslizamientos. Necesitamos tres rangos muy importantes: Frecuencia de refresco horizontal Frecuencia de refresco vertical Resolución máxima. AZERTY. El numero de teclas: 101. Especificaciones del mouse Las especificaciones del ratón son muy fáciles. con observar dicho teclado conocemos la información: El tipo de conector: USB o PS2 Que mapa de caracteres que usa: QWERTY. 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. 102. Seccion “Files” . en la siguiente ruta: /etc/X11 Y se encuentra dividido en las siguientes secciones: Section "Files" Ruta o path de los archivos Section "Modules" Carga módulos dinámicos Section "InputDevice" Descripción de los dispositivos periféricos Section "Device" Descripción de los dispositivos gráficos Section "Monitor" Descripción del monitor Section "Screen" Configuración de la pantalla Section "ServerLayout" Esquema global Cada sección comienza con la instrucción Section seguido del nombre de la "sección entre comillas" las opciones. etc. 105 o microsoft Fichero xorg.. El numero de botones: 1. 3.El chip de la tarjeta gráfica también llamada tarjeta de vídeo. etc.120 - . 2 Especificaciones del teclado Las especificaciones del teclado al igual que las del ratón. etc. define que controlador utilizaremos para que funcione correctamente.conf. 2. driver. PS2.. Serial.. basta con observar dicho ratón para saber: El tipo de conector: USB. 104.. Si tiene rueda y cuantas tiene: 1.. etc. y terminada con EndSection. 4.conf La configuración del servidor gráfico xorg se encuentra en el fichero xorg.. 121 - . Section “Module” Load “dbe” Load “extmod” Load “type1” Load “freetype” Load “glx” EndSection Seccion “InputDevice” Cada sección InputDevice configura un dispositivo de entrada para el servidor X. "mouse": soporta cuatro tipos de mouse: Serial Bus PS/2 USB Option: Especifica las opciones necesarias pertinentes al dispositivo Para un mouse. las opciones son las siguientes: Protocol: Indica el protocolo define el tipo de mouse que tenemos . 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 “/usr/lib/X11/rgb” EndSection Seccion “Modules” La sección Module especifica que módulos cargará el servidor gráfico X. Los sistemas Xorg tienen mínimo dos secciones InputDevice: Un Mouse Un Teclado Configuracion tipica de un mouse Ejemplo: Section “InputDevice” Identifier   “Mouse0”   Driver   “mouse”   Option   “Protocol”   “Auto”   Option   “Device”  “/dev/psaux” Option “Emulate3Buttons” “no” Option “ZaxisMapping” “4 5” EndSection Identifier: Especifica un nombre para esta sección Driver: Especifica el controlador que debe cargar para el correcto funcionamiento del ratón.Esta sección define la ruta de archivos necesarios para levantar el servidor X. dichos módulos añaden funcionalidad adicional al servidor X. CorePointer: Indica que el ratón definido es el mouse principal Device: Indica la ubicación del dispositivo físico (donde se encuentra conectado). Option: Especifica las opciones necesarias pertinentes al dispositivo Para un teclado las opciones son las siguientes: . Driver: Especifica el controlador que debe cargar para el correcto funcionamiento del teclado. Configuracion tipica de un teclado Ejemplo: Section “InputDevice” Identifier   “Generic   Keyboard”   Driver   “kbd”   Option   “CoreKeyboard”   Option   “XkbRules”  “xorg” Option “XkbModel” “pc105” Option “XkbLayout” “es” EndSection Identifier: Especifica un nombre para esta sección. ZAxisMapping: Especifica que funcione la rueda que incorpora el mouse. cuando se presionen ambos botones simultáneamente."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. las opciones son las siguientes: /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.122 - . Los valores mas comunes son: "pc101" "pc102" "pc104" "pc105" "microsoft" XkbLayout: Especifica el lenguaje que usaremos. especifica que conector del monitor en la tarjeta gráfica configura la sección Device. "es" (español). Driver: Especifica el controlador que debe cargar para el correcto funcionamiento del vídeo. El primer conector de la tarjeta de vídeo tiene el valor 0. BusID: Este parámetro es opcional.CoreKeyboard: Especifica que es el teclado principal XkbModel: Especifica el tipo de teclado.conf secciones Device separadas y cada una de estas secciones debe tener un valor Screen diferente. Si dos monitores o mas son conectados en diferentes conectores en la misma tarjeta gráfica.123 - . Screen: Este parámetro es opcional.conf Una de las opciones mas habituales es "dpms" (Display Power Management Signalling). especifica el fabricante de la tarjeta de vídeo. . se usa para activar el estado de ahorro de energía del monitor. Esta opción únicamente es necesaria para sistema con múltiples tarjetas gráficas. deben existir en xorg. Esta opción en muy útil solamente para tarjetas con múltiples conectores. Reemplace "nombre_opción" con una de las opciones listadas para esta sección en la pagina man de xorg. especifica el bus en el que se encuentra conectada la tarjeta gráfica. "us" (ingles) Seccion “Device” Esta sección es la que define y configura la tarjeta gráfica (vídeo) Ejemplo: Section “Device” Identifier   “Device0”   Driver   “nvidia”   VendorName   “NVIDIA   Corporation”   Option  “RenderAccel” “true” Option “AllowGLXWithCompisite” “true” Option “dpms” EndSection Identifier: Especifica un nombre para esta sección. Los valores para la entrada Screen debe ser enteros. El valor para cada conector adicional incrementa este valor en uno. Option "nombre_opción": Este parámetro es opcional. VendorName: Este parámetro es opcional. expresado en kHz. 35. DefaultDepth: Especifica la profundidad de color por defecto en bits.conf. SubSection "Display": Especifica los modos disponibles de la pantalla para una profundidad de color en particular. vinculando una tarjeta gráfica (Device) con la sección "Monitor" Ejemplo: Section “Screen” Identifier   “Default   Screen”   Device   “nvidia   geforce   mx400”   Monitor   “AcerX203W”  DefaultDepth 24 Options “AddARGBGLXvVisuals” “True” Subseccion “Display” Depth 1 Modes  “1600x1050”   ”1200x1024”   ”1024x768”   ”800x600”   “640X400”   Subseccion   “Display”   Depth   4  Modes “1600x1050” ”1200x1024” ”1024x768” ”800x600” “640X400” Subseccion “Display” Depth  8   Modes   “1600x1050”   ”1200x1024”   ”1024x768”   ”800x600”   “640X400”   Subseccion   “Display”  Depth   15   Modes   “1600x1050”   ”1200x1024”   ”1024x768”   ”800x600”   “640X400”   Subseccion  “Display”   Depth   16   Modes   “1600x1050”   ”1200x1024”   ”1024x768”   ”800x600”   “640X400”  Subseccion   “Display”   Depth   24   Modes   “1600x1050”   ”1200x1024”   ”1024x768”   ”800x600”  “640X400” EndSection Identifier: Especifica un nombre unico para esta sección Device: Especifica el nombre de una sección "Device" existente en el fichero xorg. cada una con diferente identificación (Identifier). multiples frecuencias fijas (30.5. o varios rangos (15-25.Seccion “Monitor” Esta sección es la que define y configura los parámetro del monitor Ejemplo: Section “Monitor” Identifier “Acer X203W” Option “DPMS” HorizSync 30­83 VertRefresh “55­75” EndSection Identifier:   Especifica   un   nombre   para   esta   sección. De esta manera se entrelazan las configuraciones de las diferentes secciones. expresado en Hz.124 - . . Seccion “Screen” Esta sección es la que va a definir la pantalla.8).conf Observación: las entradas "Device y Monitor" tienen que tener el mismo valor que la entrada "Identifier" de las secciones "Device" y "Monitor". un rango (30-110).   Puede   existir   varias   secciones  "Monitor" en el archivo xorg. 3064) VertRefresh: Especifica la frecuencia de barrido vertical del monitor.  esto es causado porque disponemos de dos o mas monitores conectados al ordenador. los valores son iguales a la opción HorizSync. Puede ser una frecuencia fija (30.5). HorizSync: Especifica la frecuencia de barrido horizontal del monitor.conf Monitor: Especifica el nombre único de una sección "Monitor" existente en fichero xorg. 15. Section “ServerLayout” Identifier   “Default   Layout”   Screen   “Default   Screen”   InputDevice   “Generic   Layout”  InputDevice “Configured Mouse” EndSection Identifier: Especifica un nombre para esta sección. 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. Por defecto se usa la primera en la lista. o un listado de estas: "1680x1050" "1280x1024" "1024x768" "800x600" "640x480". tambien aprenderemos a crear y eliminar grupos. 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.Observación: Una sección "Screen" puede tener múltiples subsecciones "Display". y asi hasta la ultima resolución que tengamos listada. 4. 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.125 - . siempre que este soportada por nuestro monitor.conf Seccion “ServerLayaout” Esta sección es la que vincula los dispositivos de entrada y salida que controla el servidor xorg. 16 y 24 bits Modes: Especifica las resoluciones que podremos visualizar según nuestro monitor. Reemplace "nombre de opción" con una opción valida listada para esta sección en la pagina man de xorg. Pueden estar presente más de una opción "Screen" Tareas Administrativas Administrando cuentas de usuario. Screen: Especifica el nombre de la sección "Screen" a ser usado por el servidor xorg. suspencion y cambio en las cuentas de usuario del sistema. si no se usa la siguiente. Puede especificarse una sola resolución "1680x1050" (si sabemos que nuestro monitor la soporta). Como mínimo. los valores posibles son: 1. y por ultimo estudiaremos la manera . grupos y ficheros del sistema En este capitulo abodaremos temas como son la creacion. 8. eliminacion. Este campo puede adoptar 3 parametros posibles. de las cuales cada una corresponde a un usuario. Fichero /etc/passwd Este fichero almancena datos sobre las cuentas de usuario del sistema. estos datos se encuentran . -Identificador que indica a cual grupo pertenece el usuario Informacion Adicional. -Interprete de comandos asignado al usuario Fichero /etc/shadow Este este fichero almacena las contraseñas cifradas de cada usuario del sistema. -Directorio de trabajo del usuario Shell. -Contraseña asignada al usuario UID. dichos datos se encuentran organizados linea a linea. -Informacion detallada del usuario Home del Usuario.-Identificador del Usuario GID. esta opcion es comunmente asignada a usuarios que hacen uso de servicios como FTP o correo vacio Si 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. Tambien puede encontrar en este fichero algunos servicios del sistema como son .de cambiar el grupo al cual pertenece un usuario y anexarlo a otro. Comenzaremos hablando de los ficheros directamente relacionados con las cuentas de los usuarios y la funcion que estos desempeñan. el servidor web o el de correo. estos parametros son: x La letra 'x' indica que el password del usuario se encuentra cifrado y ligado directamente al fichero /etc/shadow * o! Los parametros o ! indican que el usuario no podra loearse en el sistema. 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 1 X 2 UserID 3 GroupID 4 UserInfo 5 HomeDir 6 Shell 7 El segundo campo es comunmente conocido como el campo de password y se encuentra directamente ligado a la contraseña del usuario.126 - . -Nombre de la cuenta con la que el usuario se logeara para acceder al sistema Password. Ejemplos a) -e 20100506 b) -e 20081224 c) -e 20090214 -f Numero de dias antes de que la contraseña expire.   A   partir   de   este   dato   se   obtiene   la   fecha   de   expiración   de   la   contraseña. 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 Opciones Descripcion -b El nombre de usuario sera añadido a la ruta donde sera ubicada su carpeta de trabajo -d El nombre de usuario no sera añadido a la ruta donde sera ubicada su carpeta de trabajo -e Se usa para especificar la fecha en la cual expira la cuenta. Debe especificarse en el siguiente formato Año-Mes-Dia.organizados linea a linea. de las cuales cada una corresponde a un usuario. Normalmente son 10000 dias 6 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 Vacio=Sin advertencia 7 Días después de la expiración en que la contraseña se inhabilitara. las contraseñas cifradas de los usuarios son asignadas al fichero /etc/shadow. 0= Siempre permite cambio 5 Número   de   días   tras   los   cuales   hay   que   cambiar   la   contraseña. vacio=Nunca inactivo 8 Fecha   de   caducidad   de   la   cuenta. 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. antes de que la cuenta sea deshabilitada -g El nombre del grupo o gid asignado a un nuevo usuario -G Grupo secundario al cual puede ser asignado un usuario Ejemplos . Cada una de estas lineas se encuentra formada por 9 campos los cuales se encuentran separados por el operador : Estos 9 campos se encuentran conformados por los siguientes parametros Campo Descripcion Comentario 1 Login del Usuario 2 Contraseña cifrada Vacio= Sin password o ! = No permite logeo en sistema 3 Días transcurridos desde el 1/ene/1970 hasta la fecha en que la contraseña fue  cambiada por última vez.   (­1   significa  nunca).   Se   expresa   en   días   transcurridos   desde   el  1/Enero/1970 vacio=Nunca sera deshabilitado 9 Reservado para uso futuro Administración de cuentas de usuario Las cuentas de usuario estan localizadas en el fichero /etc/passwd.127 - . Nunca vacio 4 Número de días que deben transcurrir hasta que la contraseña se pueda volver a  cambiar. si es que no  se cambio. Sintaxis: [BASH]# useradd nombreDelUsuario [-c comment] [-d home_dir [ -m]] [-e expire_date] [-f inactive_time] [-g initial_group] [-G group[. formato AAAA-MM-DD. -s Interperete de comandos SHELL que sera asignado al usuario. -i Cambia el login o nombre del usuario. solo lo deshabilita. campo 5 de /etc/passwd -d Modifica el directorio de trabajo o home del usuario. campo 1 de /etc/passwd y de /etc/shadow -L Bloque la cuenta del usuario. -U Desbloquea una cuenta previamente bloqueada con la opción -L. 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. . campo 4 de /etc/passwd -G Establece otros grupos a los que puede pertenecer el 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. separados por comas. campo 6 de /etc/passwd -e Cambia o establece la fecha de expiración de la cuenta. No borra ni cambia nada del usuario.]] [-l login_name] [-p passwd] [-s shell] [-u uid [ -o]] [-L|-U] Opciones Descripcion -c Añade o modifica el comentario. -s Cambia el shell por defecto del usuario cuando ingrese al sistema. por defecto Linux asignara UID's a partir del numero 500 -m Copia el contenido de la carpeta /etc/skel a la carpeta del usuario recien creado. pero si no fuera así.a) -G desarrolloJava b) -G ventasMedicas c) -G soportePHP -u Identificador o uid que sera asignado al usuario. entre las opciones disponibles estan: usermod El comando usermod modifica los parametros de acceso asignados a una cuenta existente del sistema. 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 8 de /etc/shadow -g Cambia el número de grupo principal del usuario (GID)..128 - .. no permitiendolé que ingrese al sistema. -u Cambia el UID del usuario.. entonces root puede cambiar la contraseña para ese usuario. directorios y archivos del usuario. el administrador del sistema puede inhabilitar la cuenta de algun usuario especifico -u Con esta opcion.129 - . además de que podría causar inestabilidad en el sistema. passwd El comando passwd se utiliza para cambiar contraseñas. asi que hay que usarla solo en casos muy extremos. se cambia la contraseña del usuario que lo invocó.. Si se usara el comando userdel sin el parametro -r solo eliminara al usuario del sistema -f La opción -f es igual que la opción -r. cuenta. Si se utiliza sólo el parámetro usuario cuando se hace uso de este comando. Con el comando passwd primero se exigirá la contraseña vigente y luego se pedirá dos veces la nueva para prevenir cualquier error.userdel El comando userdel remueve un usuario del sistema. pero además lo hace sin importar si el usuario esta actualmente en el sistema trabajando. luego pide cambiar -f Cambia el nombre completo del usuario -s Cambia el SHELL del usuario chage Se usa para listar o cambiar el tiempo en el que expira una contraseña de usuario Sintaxis: .:_-+!$%&/|?{[()]} Sintaxis: [BASH]# passwd [Opciones] nombreDelUsuario Opciones: Opciones Descripcion -e Esta opcion forzara al usuario a cambiar su contraseña en su siguiente login al sistema -l Con esta opcion. Cuando se emplea el comando passwd sin opciones. La utilización del comando passwd con los parámetros usuario y contraseña sólo es posible para root. Es una opción muy radical. Los caracteres admitidos para las contraseñas son los siguientes: #*. Sintaxis: [BASH]# userdel ­r nombreDelUsuario  Opciones -r Descripcion Este parametro indica al sistema que sera eliminada la carpeta de trabajo del usuario. el administrador del sistema puede deshabilitar la cuenta de algun usuario especifico -n Mínimo número de días antes de poder cambiar -x Máximo número de días de validez.. elimina todo lo del usuario. 130 - . Ahora editamos el archivo [BASH]# vim /root/batch­nuevos­usuarios.txt [BASH]# chmod 0600 /root/batch­nuevos­usuarios. 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. 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. (muy util para hacer un reset de password masivo).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. Para hacer uso de este comando haremos lo siguiente: Primero creamos el archivo de texto con los usuarios: [BASH]# touch /root/batch­nuevos­usuarios. Por último ejecutamos el comando: [BASH]# newusers /root/batch­nuevos­usuarios.txt . así mismo si no existe la carpeta /home/nobreDelUsuario la creará por nosotros. 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. para esto podemos utilizar el comando newusers. Pasados los días. el usuario deberá de modificarla -m [dias] Modifica el número mínimo de días entre cambio de contraseña -W [dias] Modifica el número de días que se avisará al usuario antes de cambiar la contraseña 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.txt Y ahora agregamos la lista de usuarios. igualmente pueden agregar los usuarios que quieran actualizar.[BASH]# change [opciones] nombreDelUsuario Opciones Opciones Descripcion -d [dias]Cuenta el número de días (desde 01-01-1970) transcurridos desde que cambió la contraseña por última vez -E [fecha] Modifica la fecha en que la cuenta del usuario expirará y será bloqueada -l [dias] Modifica cuantos días puede permanecer una cuenta con una contraseña expirada antes de ser bloqueada -M [dias] Modifica el número máximo de días durante los que es válida la contraseña de usuario.  La  lista  incluye  inicios.  apagados y logeos Administración de grupos groupadd 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: Opciones Descripcion -g Define mediante un valor numerico el ID del grupo.Fichero /etc/login. Recúerdese que se usaran principalmente al momento de crear o modificar usuarios con los comandos useradd y usermod.defs En el archivo de configuración /etc/login. -o Asigna un ID existente a un grupo .131 - .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. 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. groups[usuario] Muestra todos los grupos al cual pertenece el usuario id ­nu[usuario] Muestra el nombre del usuario logeado echo $user Muestra el usuario actual id ­u Muestra el ID del usuario actual users Muestra los usuarios logeados localmente en el sistema who Muestra los usuarios logeados localmente en el sistema w Muestra los usuarios logeados localmente en el sistema finger ­l [usuario] Muestra los usuarios logeados local o remotamente en el sistema lastlog Muestra   los  ultimos   accesos  al  sistema. este numero no puede ser uno negativo -r Define un grupo del sistema. Otros comandos de inicio de sesión del usuario Opciones Descripcion id ­ng[usuario] Muestra el grupo actual al cual pertenece el usuario. 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. 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..132 - . señalar un administrador e indicar una contrasela para el grupo..] [grupo] Se añade permanentemente un usuario a un grupo -d [usuario..se puede utilizar para añadir y eliminar usuarios. Sintaxis: [BASH]# groupmod [-g nuevo-gid] [-n nuevoNombre] nombreDelGrupo Opciones: Opciones Descripcion -g Esta opcion cambia el GID de un grupo existente en el sistema -n Esta opcion sirve para cambiar el nombre de un grupo existente por otro groupdel El comando groupdel elimina un grupo del sistema Sintaxis: [BASH]# groupdel nombreDelGrupo gpasswd Permite administrar los grupos.groupmod El comando groupmod permite modificar el nombre o GID de un grupo.. 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 -A [usuario.] [grupo] Se borra permanentemente a un usuario del grupo -r [grupo] Elimina la contraseña del grupo grpck El comando grpck revisa un grupo de sistema Sintaxis: .] [grupo] Señala como administrador de un grupo particular a un usuario del grupo -M [usuario.] [grupo] Añade miembros a un grupo -r [grupo] Elimina la contraseña del grupo Opciones para el administrador del grupo Opciones Descripcion -a [usuario. los administradores de cada grupo y los usuarios que pertenecen a cada grupo. 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. con el mismo nombre del usuario. que no existe. contiene una línea para cada usuario con tres o cuatro campos por usuario: Ejemplo: El campo 1 indica el usuario. si se añade el usuario ’paola’ también se crea el /etc/group el grupo ’paola’. 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. Fichero /etc/gshadow Este fichero almacena las contraseñas cifradas de los grupos. 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.133 - .[BASH]# grpck nombreDelGrupo Fichero /etc/group Este archivo guarda la relación de los grupos a los que pertenecen los usuarios del sistema. Es decir. El campo 2 ‘x’ indica la contraseña del grupo. El campo 3 es el Group ID (GID) o identificación del grupo. contiene una linea para cada grupo con cuatros campos por grupo: Ejemplo: NombreDelGrupo Contraseña o ! listaDeAdministradores listaDeMiembros Cada uno de estos campos separado por el identificador : La lista de administradores y miembros de un grupo deben estar separados mediante el identificador . si hubiera se mostraría  un ‘hash’ encriptado. [BASH]# more /etc/shadow root:ghy675gjuXCc12r5gt78uuu6R:10568:0:99999:7:7:­1::  . de semana o mes). o una exportacion semanal de la base de datos. cada minuto. grpconv y grpunconv Estos comandos funcionan de la misma manera que pwconv y pwunconv. una copia de seguridad diaria. 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. a intervalos regulares programados. Concretamente utilizaremos la orden crontab -e . diarias.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­­ 1 root root 1106 2007­07­08 01:07 /etc/passwd ­r­­­­­­­­ 1 root root 699 2009­07­08 01:07 /etc/shadow Se vuelve a crear el archivo shadow. En el sistema operativo Unix. En este modulo veremos como: Añadir tareas al crontab de root Añadir tareas enlazadas cada hora. haciendo sumamente difícil que cualquier usuario que no sea root lo lea. pero nunca editaremos los ficheros de cron directamente. Los procesos que deben ejecutarse y la hora en la que deben hacerlo se especifican en el archivo crontab correspondiente. Por ejemplo podemos instruirlo para ejecutar un script cada cinco minutos. además nótese los permisos tan restrictivos (400) que tiene este archivo.134 - . utilizaremos siempre la utilidad crontab. Es un demonio que ejecuta procesos. programas o scripts. Para editar el crontab (fichero donde se guardan las tareas programadas) de root. Las horas a las que deben ejecutarse dichos procesos se indican en el fichero crontab correspondiente al usuario. 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. cron es un administrador regular de procesos en segundo plano (demonio) que ejecuta procesos o scripts a intervalos regulares (por ejemplo. Listando el crontab Para obtener un listado de las tareas programadas de root. es decir: # minutos horas diaDelMes mes1-12 diaDeLaSemana1-7 comandoAEjecutar No obstante añadiremos unas lineas al principio. primero los minutos. dandole algunas variables de entorno de nuestro interes. y evitaremos problemas de concurrencia con otros administradores.log  Si quisieramos que se ejecutase a las 19:30h pero solo los lunes pondriamos: . el mes y el dia de la semana.[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. Programando tareas Para programar una tarea utilizaremos la orden crontab -e. MAILTO Definiremos a que correo iran los avisos en caso de algo vaya mal al ejecutar una de las tareas. luego la hora. Como se puede ver nos esta indicando el formato. el dia del mes." >> /var/log/mi­cron. 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. ejecute lo siguiente: [BASH]# crontab ­l Evidentemente no saldran tareas si todavia no hemos programado ninguna. solo son para ajustarlas si queremos.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. 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: SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin/:/bin/:/usr/sbin:/usr/bin  MAILITO=sistemas@factor. Por ejemplo para programar una tarea que a las 19h genere un mensaje en un log.135 - . Estas variables no son estrictamente necesarias. # m h dom mon dow command  30 19 1 echo "Son las 19:30h. y cron hara una suplantacion previa a la ejecucion.sh [BASH]# ln ­s /root/bin/miScript. ." >> /var/log/mi­cron. sin argumentos. 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. salvo que en este podemos especificar con que usuario se ejecuta cada cosa. Por ejemplo.daily /etc/cron.20." >> /var/log/mi­cron.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. Si ponemos tareas en dicho archivo seran ejecutadas igualmente." >> /var/log/mi­cron. le damos permisos de ejecucion." >> /var/log/mi­cron.log  ¿Y para ejecutarlo cada 5 minutos? Se podria poner “5. del lunes. y lo enlazamos en /etc/cron. pero no es recomendable. These files also have username fields. del 1 de diciembre.15.hourly.sh /etc/cron.weekly /etc/cron. cron lo ejecutar ́ cada hora: [BASH]# chmod +x /root/bin/miScript.hourly/ Crontab del sistema El archivo de cron de sistema es /etc/crontab. No estoy seguro. si creamos un guion de bash y lo guardamos en /root/bin.10.hourly /etc/cron.log  Directorios predefinidos: hourly.d.monthly Dichos directorios se suelen utilizar para enlazar guiones que deban ser llamados en el intervalo correspondiente al directorio.30 19 echo "Son las 19 o las 19:30h. Este crontab se deja para que lo maneje la distribucion y sus programas.25” pero hay una abreviatura.136 - . Es igual que el crontab de root.log  ¿Que pasa si queremos que se ejecute a las 19 y 19:30? Se puede poner mas de un valor en cada campo. asi “/min” # m h dom mon dow command  /5 echo "Han pasado cinco minutos. separandolos por comas: # m h dom mon dow command  0. 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. daily. monthly ) Log de cron En Debian 5 Lenny el log de cron viene desactivado por defecto. 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. Esa batería asegura que el reloj continúe trabajando aún cuando la computadora se encuentre sin suministro eléctrico. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin m h dom mon dow user command 17 root cd / && run­parts ­­report /etc/cron. Durante el . El reloj de hardware puede ser modificado (o definido) desde la pantalla de configuración de la BIOS o desde cualquier sistema operativo.that none of the other crontabs do. asi: [BASH]# tail ­f /var/log/syslog Administrando la hora del equipo En este capitulo aprenderemos a configuar la hora del sistema mediante el uso de servidores de tiempo NTP.weekly   )   52   6   1   root   test   ­x  /usr/sbin/anacron || ( cd / && run­parts ­­report /etc/cron.137 - . see cron(8) For example.daily ) 47 6 7 root test ­x /usr/sbin/anacron  ||   (   cd   /   &&   run­parts   ­­report   /etc/cron. El kernel Linux mantiene la fecha y hora de manera independiente al reloj de hardware. 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. por ejemplo. READ_ENV="yes" Extra options for 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. 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.hourly 25 6 root test ­x /usr/sbin/anacron  || ( cd / && run­parts ­­report /etc/cron. Linux mantiene su propio reloj debido a que leer el reloj de hardware constantemente es lento y complicado. porque de esta manera no será necesario modificar la hora del reloj cuando el horario de verano empiece o finalice. 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. por lo que no necesita conocer como utilizar usos horarios. Luego. ambos relojes trabajan independientemente. en español. El reloj de hardware puede estar en formato de hora local u hora universal. o UTC. el kernel configura su propio reloj de software accediendo a la fecha y hora mantenida por el reloj de hardware. Usualmente es mejor que el reloj de hardware mantenga la hora universal. Cada proceso realiza las conversiones de zona horaria de manera independiente.138 - . estas herramientas son: hwclock Controla 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 localtime UTC Por ubicacion geografica El tiempo universal coordinado. también conocido como tiempo civil. El reloj del kernel siempre muestra la hora universal.inicio de un sistema Linux. La simplicidad de este modo de trabajar proporciona alta confiabilidad y facilita actualizar la información de la zona horaria. 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. para ello teclee lo siguiente: [BASH]# hwclock ­­utc ­­hctosys . Saturday) %b Localización del nombre abreviado del nombre del mes . 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. Ésta es una buena opción para poner en uno de los guiones de arranque del sistema. --utc Indica que el reloj del hardware se mantiene en el tiempo universal coordinado (UTC). Así que con esta opción es como le da esa información a hwclock. Vea la discusión al respecto más adelante. Sintaxis: [BASH]# hwclock [opciones] Opciones: Opciones Descripcion --show Lee el reloj del hardware y muestra la hora en la salida estándar. pero nada en el reloj le dice qué es lo que ha escogido.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. Es cosa suya si mantiene su reloj en hora local o UTC.Sat) %A Localización del nombre completo del día de la semana (Sunday.139 - . --set Pone el reloj del hardware a la hora dada por la opción --date --hctosys Pone el tiempo del sistema a partir del reloj del hardware. --adjust 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ó. Comando date Este programa se utiliza para mostrar o establecer la hora del sistema Sintaxis: [BASH]# date [opciones] [+FORMATO] Formato: Opciones Descripcion %% Una literal % %a Localización del nombre abreviado del día de la semana (Sun. --systohc Pone el reloj del hardware a la hora del sistema actual. .).60).31) Fecha (mm/dd/yy) Dia del mes (1.31.. a diferencia de %d este suprime el espacio en blanco %F Lo mismo que %Y-%m-%d %h Lo mismo que %b %H Hora (00.7) el dia 1 representa el lunes %U Número de semana del año con el domingo como primer día de la semana (00..12) %M Minutos (00......59) %n Una nueva linea %N Nanosegundos (000000000.....366) %k Hora (0. 24 horas (hh:mm:ss) %u Dia de la semana (1.999999999) %p Indicacion de PM o AM en mayusculas %P Indicacion de pm o am en minusculas %r Tiempo en 12 horas ( hh:mm:ss AP %R Tiempo en 24 horas ( hh:mm ) %s Segundos desde `00:00:00 1970-01-01 UTC' (una extesion de GNU ) %S Segundos (00..53) %V Número de semana del año con el lunes como primer día de la semana (00...53) %w Dia de la samana (0.6)...%c Localizacion de fecha y hora (Sat Nov 04 12:02:33 EST 1989) %C Siglo (año dividido por 100 y truncado a un entero) [00-99] %d %D %e Dia del mes (01. %t Un tabulador horizontal %T Tiempo .) M) Servicios Esenciales del Sistema Mail Transfer Agent Basico Protocolo SMTP .12) %j Dia del año (001.53) %x Representacion de la fecha local (mm/dd/yy) %X Representacion de la hora local (%H:%M:%S) %y Los ultimos dos digitos del año (00.140 - .99) %Y Año (1970..12) %m Mes (01.23) %I Hora (01. 0 representa el Domingo %W Numero de la semana del año con Lunes como primer dia de la semana (00.23) %l Hola (1. un cliente que utilice POP3 se conecta. La mayoría de los clientes de correo electrónico soportan POP3 ó IMAP. En el protocolo SMTP todas las órdenes. es posible especificar en IMAP carpetas del lado servidor. Protocolo IMAP Internet Message Access Protocol. Todas las réplicas tienen un código numérico al comienzo de la línea. los almacena en la computadora del usuario como mensajes nuevos. los clientes permanecen conectados el tiempo que su interfaz permanezca activa y descargan los mensajes bajo demanda. Por ejemplo. Esta manera de trabajar de IMAP puede . 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. La comunicación entre el cliente y el servidor consiste enteramente en líneas de texto compuestas por caracteres ASCII. que es el otro protocolo empleado para obtener correo desde un servidor. mientras que el texto permite que un humano interprete la respuesta. sin embargo. delimitadas por el carácter <CRLF>. Ventajas sobre POP3 Respaldo para los modos de operación conetado y desconectado Al utilizar POP3. seguido de un texto explicativo. descargar su correo electrónico mientras tienen conexión y revisarlo posteriormente incluso estando desconectados. es un protocolo de la capa de aplicación. los elimina del servidor y finalmente se desconecta. IMAP tiene varias ventajas sobre POP. Esto y otros factores hacen que la operación de IMAP permita a múltiples clientes acceder al mismo buzón de correo. no para enviarlo. Las respuestas del servidor constan de un código numérico de tres digitos. Cabe mencionar que la mayoría de los clientes de correo incluyen la opción de dejar los mensajes en el servidor. 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. el SMTP va por encima del TCP. obtiene todos los mensajes.Simple Mail Transfer Protocol (SMTP) Protocolo Simple de Transferencia de Correo. el protocolo IMAP permite los modos de operación conectado y desconectado. Mediante IMAP se puede tener acceso al correo electrónico desde cualquier equipo que tenga una conexión a Internet. El tamaño máximo permitido para estas líneas es de 1000 caracteres. Al utilizar IMAP. solamente el tiempo que les tome descargar los nuevos mensajes. los clientes se conectan brevemente al servidor de correo. En el conjunto de protocolos TCP/IP. En contraste. de manera tal que. solo unos cuantos proveedores de internet ofrecen IMAP como valor agregado de sus servicios. Por otro lado.141 - . réplicas o datos son líneas de texto. le permite a los usuarios con conexiones intermitentes ó muy lentas (tales como las conexiones por módem). es más complejo que POP ya que permite visualizar los mensajes de manera remota y no descargando los mensajes como lo hace POP. donde un cliente envía un mensaje a uno o varios receptores. usando normalmente el puerto 25 en el servidor para establecer la conexión. o su acrónimo IMAP. El número va dirigido a un procesado automático de la respuesta por autómata. Protocolo POP3 POP3 está diseñado para recibir correo. es un protocolo de red de acceso a mensajes electrónicos almacenados en un servidor. una década antes de que naciese ARPANET. se puede vigilar el estado del mensaje. el precursor de Internet. Sin embargo. SMTP.142 - . muy pronto se convirtió en estándar a medida que Internet comenzaba a expandirse y a utilizarse más ampliamente. las búsquedas. Este método de comunicación más sencillo muy pronto se hizo popular. El unico punto debil que preseta sendmail es que este este posee el mayor numero de errores los cuales son reparados casi de inmediato.3 % de los encuestados respondieron que tenian implementado a Sendmail como servidor de correo. 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. el segundo lugar fue para Postfix con un 8. 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. Por entonces. Sendmail en la actualidad Algunos analisis y encuentas nos expresan comentarios muy buenos sobre Sendmail.dar tiempos de respuesta más rápidos para usuarios que tienen una gran cantidad de mensajes o mensajes grandes. La primera transferencia real de un fichero de mensaje de correo entre dos equipos tuvo lugar hasta el año de 1972. permitieron que se materializasen los agentes MTA con funciones completas. incluso hasta el punto de representar la mayor parte del tráfico de ARPANET en menos de un año. Un nuevo protocolo. por ejemplo.5% . año en el que el correo electrónico empezó a transferirse por FTP a través de un protocolo de red NCP. de esta manera. de los cuales el 12. Estos avances. Sendmail. agilizando. Sobre Sendmail Las raíces de Sendmail se remontan al nacimiento del correo electrónico. 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.6 % y en tercer lugar tenemos a Postini con el 8. 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. si el mensaje ha sido o no leído. respondido o eliminado. que se materializaba en el transporte de mensajes. que creció a partir de un precedente sistema de entrega de correo electrónico denominado Delivermail. en combinación con la sustitución de los ficheros host por dns. 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. de manera que varios clientes conectados al mismo correo en diferente tiempo pueden detectar los cambios hechos por otros clientes. Estas señales se almacenan en el servidor. esto de acuerdo a una encuesta realizada por la editorial O'Reilly. 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. Este mecanismo evita que los clientes descarguen todos los mensajes de su buzón de correo. Exim es el MTA por defecto en las distribuciones Debian GNU/Linux. Watson Research Center de IBM.143 - . Si bien puede compilarse en sistemas operativos Windows. fácil de administrar y segura al ampliamente utilizado Sendmail. además. virus.txt haremos: . para imprimir investigacion.Escribir directamente en la impresora: la forma más sencilla de imprimir un archivo en Linux es enviarlo directamente a la impresora. usualmente MTA) desarrollado por la Universidad de Cambridge y puede ser utilizado en la mayoría de los sistemas Unix (entre ellos GNU/Linux). Qmail es distribuido como código fuente (sourcecode). Postfix es el agente de transporte por omisión en diversas distribuciones de Linux y en las últimas versiones del Mac OS X. Por ejemplo. fue originalmente escrito por Wietse Venema durante su estancia en el Thomas J. escrito en lenguaje C. Tiene una gran flexibilidad en los caminos que pueden seguir los mensajes según su origen y por presentar funcionalidades para control de spam. se recomienda que sea utilizado en producción sobre sistemas operativos de la familia Unix. listas de bloqueo basados en DNS (DNSBL). Sobre Exim Exim (EXperimental Internet Mailer) es un agente de transporte de correo (Mail Transport Agent. Utiliza el formato maildir para almacenar mensajes (un archivo por mensaje). un programa informático para el enrutamiento y envío de correo electrónico. Se distribuye sin costo bajo la licencia GNU GPL por lo que es. El proyecto cuenta con buena documentación. que se configuran y mantienen en forma más o menos sencilla. software libre. Formalmente conocido como VMailer e IBM Secure Mailer. 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. Sobre Qmail Qmail es un servidor de correo electrónico (SMTP) hecho para Unix. control de relay. Administrar impresoras e impresiones Como imprimir en Linux En Linux podemos imprimir de tres maneras: 1. y continúa siendo desarrollado activamente. eliminando varios problemas asociados al manejo del formato mbox. usuarios y dominios virtuales y otros. ejemplos y recetas claras de “como hacer” determinadas tareas.Sobre Postfix Postfix es un Agente de Transporte de Correo (MTA) de software libre / código abierto. creado con la intención de que sea una alternativa más rápida. Los comandos lpr/lpd para manejar la cola de impresión: el sistema lpr/lpd es uno de los estándares de UNIX. resoluciones disponibles. donde se almacenan los trabajos a imprimir. En el entorno gráfico. Si la impresora entiende el lenguaje PostScript puede imprimir el documento directamente. 3. colores.Los comandos CUPS para administrar las impresoras: . como tamaños de papel. De esto se encarga Foomatic (paquete foomatic-db-engine): proporciona el archivo PPD y los filtros necesarios para traducir los documentos (trabaja sobre GhostScript). y las aplicaciones asumen que tendrán los comandos de este sistema de impresión disponibles. Por este motivo CUPS proporciona su propia versión de esos comandos.org) y se debe guardar en el directorio /usr/share/cups/model. Hasta que apareció CUPS era el sistema estándar de imprimir en Linux. trabajarán sobre él y obtendrán automáticamente las propiedades de la impresora.los drivers PPD de las impresoras PostScript: en Linux. Su sintaxis es: [BASH]# lpr <archivo> lpq: consultar los trabajos pendientes en la cola de impresión. Este comando copia el archivo a imprimir en el directorio de spool.txt > /dev/lp0 2.El sistema lpr/lpd es la versión para Linux del sistema lp (Line Printer) de UNIX. 5. lpc: configurar las impresoras. Sólo tenemos que decirle a CUPS cuáles son las características de la impresora. 3. lprm: eliminar trabajos de la cola de impresión. el archivo PPD de la impresora se puede descargar desde LinuxPrinting (linuxprinting. cupsd lanza una copia de sí mismo que imprimirá el archivo en la impresora apropiada.La cola de impresión (spool): ubicada en el directorio /var/spool/cups. 2.[BASH]#cat investigacion. es el sistema que se instala por defecto. por lo que necesitamos un filtro. 4. donde permanece hasta que el demonio cupsd lo imprime. las aplicaciones que pueden imprimir son compatibles tanto con lpr/lpd como con CUPS: utilizarán el sistema que esté instalado. Incluso ahora. cuando una aplicación envía un documento a la impresora genera un archivo PostScript. que son: lpr (o lp): enviar trabajos a la cola de impresión. 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.El sistema CUPS (Common UNIX Printing System): actualmente es el sistema estándar de impresión en Linux.org) o desde la web de CUPS (cups. Si la impresora no entiende PostScript debemos traducir los documentos que generan las aplicaciones (PostScript) a un lenguaje que entienda la impresora. Cuando aparece alguno. 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. y eso lo hace el archivo PPD (Postscript Printer Description): contiene todas las características de la impresora. En ambos casos. etc.144 - .El demonio de impresión cupsd (print spooler daemon): vigila los directorios spool buscando trabajos a imprimir. lpinfo lpadmin enable disable accept reject lpoptions lpstat 6. Compartir nuestra impresora  Tenemos dos posibilidades para compartir nuestra impresora: 1. Para que puedan acceder las máquinas de la LAN añadiremos la línea: Allow 192. en el archivo de configuración de CUPS.  Desde   aquí  podemos  monitorizar   los   trabajos   de   impresión. para   terminar. /etc/cups/cupsd.conf especificaremos qué máquinas tienen acceso a CUPS.que CUPS escuche conexiones de máquinas remotas Los equipos que dispongan de un cliente IPP (Linux.   ya   que   para   administrar   impresoras   hay   que   tener  permisos de root (la contraseña se envía en texto plano. en la siguiente pantalla nos preguntará Tipo de conexión: seleccionamos el modelo. nos   pedirá   Usuario   y   Contraseña. 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.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. reiniciamos el demonio de CUPS: [BASH]# /etc/init.0.  Ubicación: Oficina: HP Laser.Allow Deny All Allow 127. y ya tenemos la impresora instalada.1).   cambiar   las   opciones   de   configuración   y  seleccionarla como impresora predeterminada.0 .0/255. instalamos Foomatic si la impresora no es PostScript. Instalar una impresora local con CUPS Veamos cómo instalar una impresora local con CUPS utilizando su interfaz web: conectamos la impresora. Para ello. pulsando  en  Impresoras  iremos  a  la  página  de  la  nueva  impresora. e imprimir en nuestra impresora. Buscaremos las líneas: <Location /> Order Deny.0.145 - . una vez que les permitamos acceder.255. conseguimos e instalamos el archivo PPD de nuestra impresora.168.1 </Location> Vemos que por defecto sólo puede acceder a CUPS la propia máquina (127.   comprobamos   que   realmente   funciona   lanzando   una   página   de   prueba   con  Imprimir página de prueba. puerto 631 TCP).0. sin encriptar).La interfaz web de CUPS: es la mejor opción para administrar CUPS.0.0. Unix.255. 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. Modelo.168. ipp://192. por lo que cambiaremos /etc/samba/smb. pulsamos Conectar. Usuario y Contraseña y la impresora ya está instalada.d/cups restart Una vez compartida la impresora. Primero crearemos en nuestro sistema un usuario específico (smbprint) para que acceda a la impresora mediante Samba.d/samba restart Una vez compartida la impresora. Vamos a configurar el servidor Samba para compartir nuestra impresora.Para terminar reiniciamos el demonio de CUPS: [BASH]# /etc/init. editaremos el archivo /etc/samba/smb. URL de la conexión. 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.2:631/printers/Canon.conf para que quede: [global] printcap name = cups printing = cups  Grabamos los cambios y reiniciamos Samba: [BASH]# /etc/init. Añadir impresora Introducimos Nombre de la impresora. es muy sencillo imprimir desde Windows: localizamos nuestra máquina en el Explorador de archivos. Veremos que tiene una impresora compartida. e instalamos los drivers desde el CD del fabricante.146 - . Ubicación y Descripción Tipo de conexión. y éste se encargará de pasarle la petición a CUPS.0. es muy sencillo imprimir desde Linux: Interfaz web de CUPS http://localhost:631 Administración.2/printers/Canon. . http://192.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. como invitado (por lo que todas las máquinas de la red local y con conexión directa desde Internet podrán imprimir). Internet Printing Protocol (IPP). Instalamos los drivers de la impresora desde el CD del fabricante 1. no lpr/lpd.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.168.. TELNET para acceder a equipos remotos.147 - .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. reconoció el importante valor de la comunicación de estas dos formas. y proporciona un servicio bien definido a los niveles más altos. cada nivel soluciona una serie de problemas relacionados con la transmisión de datos. En ocasiones se le denomina conjunto de protocolos TCP/IP. y el SMTP (Simple Mail Transfer Protocol) y el POP (Post Office Protocol) para correo electrónico. ejecutándolo en ARPANET. El modelo OSI. ya que se aplican los mismos principios. Existen tantos protocolos en este conjunto que llegan a ser más de 100 diferentes. El modelo de Internet fue diseñado como la solución a un problema práctico de ingeniería. entre otros. pero son más fáciles de entender en el modelo OSI. fue propuesto como una aproximación teórica y también como una primera fase en la evolución de las redes de ordenadores. que describe los niveles o capas de la pila de protocolos. aunque en la práctica no corresponde exactamente con el modelo en Internet. y que son los más utilizados de la familia. y sirve para enlazar computadoras que utilizan diferentes sistemas operativos. Kahn fue contratado por la Oficina de Técnicas de Procesamiento de Información de DARPA. dejando a los niveles más bajos la labor de traducir los datos de forma que sean físicamente manipulables. en referencia a los dos protocolos más importantes que la componen: Protocolo de Control de Transmisión (TCP) y Protocolo de Internet (IP). Los niveles superiores son los más cercanos al usuario y tratan con datos más abstractos. El TCP/IP es la base de Internet. pero el modelo TCP/IP es el que realmente se usa. que es el que se utiliza para acceder a las páginas web. el modelo OSI es más fácil de entender. En la primavera de . incluyendo PC. 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. La familia de protocolos de Internet puede describirse por analogía con el modelo OSI (Open System Interconnection). TCP/IP fue desarrollado y demostrado por primera vez en 1972 por el Departamento de Defensa de los Estados Unidos. que fueron los dos primeros en definirse. en cambio. entre ellos se encuentra el popular HTTP (HyperText Transfer Protocol). En 1972. además de otros como el ARP (Address Resolution Protocol) para la resolución de direcciones. una red de área extensa de dicho departamento. donde trabajo en la comunicación de paquetes por satélite y por ondas de radio. Robert E. minicomputadoras y computadoras centrales sobre redes de área local (LAN) y área extensa (WAN). 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. Sirve de ayuda entender el modelo OSI antes de conocer TCP/IP. En una pila de protocolos. el FTP (File Transfer Protocol) para transferencia de archivos. Kahn y Cerf habian conseguido una remodelación fundamental. 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. En marzo de 1982. 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.En 1985. donde las diferencias entre los protocolos de red se ocultaban usando un Protocolo de comunicaciones y además. Ejemplos de estos protocolos son el ARP (Protocolo de resolución de direcciones) y el STP (Spanning Tree Protocol). TCP v2. De todas formas. Para el verano de 1973. Un ordenador denominado router (un nombre que fue después cambiado a gateway. desarrollador del protocolo de ARPANET. Presentación y . los tres niveles superiores del modelo OSI (Aplicación. el Departamento de Defensa de los Estados Unidos declaró al protocolo TCP/IP el estándar para las comunicaciones entre redes militares. Vint Cerf. y envía Datagrama de ida y vuelta entre ellos. Como TCP/IP y modelo OSI no están delimitados con precisión no hay una respuesta que sea la correcta. como pasaba en ARPANET .1973. 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). Protocolos específicos de un tipo concreto de red. 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. se realizó otra prueba de comunicación con un protocolo TCP/IP entre tres redes distintas con ubicaciones en Estados Unidos. Niveles en la pila TCP/IP Hay algunas discusiones sobre como encaja el modelo TCP/IP dentro del modelo OSI. Se desarrollaron así cuatro versiones diferentes: TCP v1. dando como resultado la primera especificación TCP (Request for Comments 675) Entonces DARPA fue contratada por BBN Technologies. la Universidad de Stanford. ya que su trabajo estuvo muy influenciado por el diseño de esta red. 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. El siguiente diagrama intenta mostrar la pila OSI y otros protocolos relacionados con el modelo OSI original: Normalmente. 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. la red dejaba de ser responsable de la fiabilidad de la comunicación. Los requisitos para estor routers están definidos en (Request for Comments 1812). y la University College de Londres para desarrollar versiones operacionales del protocolo en diferentes plataformas de hardware. una tercera dividida en dos TCP v3 y IP v3 en la primavera de 1978. Cerf reconoció el mérito de Hubert Zimmerman y Louis Pouzin.148 - . creadores de la red CYCLADES. para evitar confusiones con otros tipos de Puerta de enlace) esta dotado con una interfaz para cada red. pero sin serlo. puerta de enlace. 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. al que asistieron 250 comerciales promocionando así el protocolo lo que contribuyó a un incremento de su uso comercial. como ICMP) todos en la misma capa puede producir confusión. 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. era el host el responsable. pertenecen al nivel de red. y trabajan por debajo de las capas de Internet. Reino Unido y Noruega. En 1977. estos son protocolos locales. Varios prototipos diferentes de protocolos TCP/IP se desarrollaron en múltiples centros de investigación entre los años 1978 y 1983. pero el modelo OSI no llega a ese nivel de complejidad para ser más útil como modelo de referencia. que se sitúan por encima del marco de hardware básico. potencias de señal. En la familia de protocolos de Internet. incluyendo los delimitadores (patrones de bits concretos que marcan el comienzo y el fin de cada trama).149 - . Nivel de Enlace de Datos El nivel de enlace de datos especifica cómo son transportados los paquetes sobre el nivel físico. 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. Con la llegada del concepto de Internet. Nivel de internet Como fue definido originalmente. ICMP y IGMP son los protocolos 1 y 2. Como TCP/IP no tiene un nivel de sesión unificado sobre el que los niveles superiores se sostengan. Ejemplos de protocolos son X. 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". y RIP son realmente también parte del nivel de red. Wireless Ethernet. conocida como Internet. 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. por ejemplo. longitudes de onda. en TCP/IP se integran algunos niveles del modelo OSI en su nivel de Aplicación. respectivamente. 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. basadas en el intercambio de datos entre una red origen y una red destino. como BGP. aunque ellos parecen pertenecer a niveles más altos en la pila. Generalmente esto incluye un enrutamiento de paquetes a través de una red de redes. SLIP. y todo lo relativo a los detalles como los conectores. estas funciones son típicamente desempeñadas (o ignoradas) por las aplicaciones de usuario. el nivel de red soluciona el problema de conseguir transportar paquetes a través de una red sencilla. HDLC/SDLC.Sesión) son considerados simplemente como el nivel de aplicación en el conjunto TCP/IP. Este nivel es a veces subdividido en Control de enlace lógico (Logical Link Control) y Control de acceso al medio (Media Access Control). sincronización y temporización y distancias máximas. Nivel de Transporte Los protocolos de enrutamiento dinámico que técnicamente encajan en el conjunto de protocolos TCP/IP (ya . como las convenciones sobre la naturaleza del medio usado para la comunicación (como las comunicaciones por cable. Token Ring y ATM. Todos los protocolos de enrutamiento. nuevas funcionalidades fueron añadidas a este nivel. código de canales y modulación. PPP es un poco más complejo y originalmente fue diseñado como un protocolo separado que funcionaba sobre otro nivel de enlace. IP puede pasar los datos a una serie de protocolos superiores. fibra óptica o radio). IP realiza las tareas básicas para conseguir transportar datos desde un origen a un destino. Ethernet.25 y Host/IMP Protocol de ARPANET. Ejemplos de protocolos de nivel de enlace de datos son Ethernet. OSPF. DNS (Resolución de nombres de dominio) y a muchos otros. Proporcionan servicios que directamente trabajan con las aplicaciones de usuario. DCCP está actualmente bajo desarrollo por el IETF.no porque sea particularmente malo. un ejemplo es OSPF (protocolo IP número 89). Proporciona semántica de control para flujos TCP. que proporciona un flujo fiable de bytes. UDP es usado normalmente para aplicaciones de streaming (audio. . Fue desarrollado inicialmente para aplicaciones telefónicas (para transportar SS7 sobre IP). también un mecanismo fiable y orientado a conexión. debe llevarlas a cabo por sí misma o usar TCP. donde una conexión puede ser representada por múltiples direcciones IP (representando múltiples interfaces físicas). video. sin daños y en orden. Las aplicaciones con una dirección de red dada son distinguibles entre sí por su número de puerto TCP o UDP. TCP realiza continuamente medidas sobre el estado de la red para evitar sobrecargarla con demasiado tráfico. los puertos bien conocidos (wellknown ports) son asociados con aplicaciones específicas. o para aplicaciones simples de tipo petición/respuesta como el servicio DNS. UDP (protocolo IP número 17) es un protocolo de datagramas sin conexión. Está relacionado con la orientación a byte. Los puertos fueron asignados originalmente por la IANA. TCP trata de enviar todos los datos correctamente en la secuencia especificada. 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.150 - . Por convención. 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. SSH (login remoto seguro).que funcionan sobre IP) son generalmente considerados parte del nivel de red. mientras de cara al usuario se da un servicio de datagramas UDP. Estos programas y sus correspondientes protocolos incluyen a HTTP (HyperText Transfer Protocol). Algunos programas específicos se considera que se ejecutan en este nivel. sino porque no verifica que los paquetes lleguen a su destino. SMTP (correo electrónico). Es un protocolo no fiable (best effort al igual que IP) . y proporciona múltiples sub-flujos multiplexados sobre la misma conexión. las aplicaciones normalmente hacen uso de TCP y UDP. así si hay un fallo la conexión no se interrumpe. y son habitualmente asociados a un número de puerto bien conocido (well-known port). 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. FTP (Transferencia de archivos). y no da garantías de que lleguen en orden. Más reciente es SCTP. pero también fue usado para otras aplicaciones. Además. Esta es una de las principales diferencias con UDP. TCP (protocolo IP número 6) es un mecanismo de transporte fiable y orientado a conexión. TCP y UDP: son usados para dar servicio a una serie de aplicaciones de alto nivel. donde la sobrecarga de las cabeceras que aportan la fiabilidad es desproporcionada para el tamaño de los paquetes. En el nivel de transporte. etc) donde la llegada a tiempo de los paquetes es más importante que la fiabilidad. que asegura que los datos llegan completos. Si una aplicación requiere estas características. 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. También proporciona soporte de multihoming. los números iniciales de secuencia son intercambiados entre las dos entidades TCP. Una mejora de TCP. En caso de que sí se encuentre abierto el puerto. Es interesante notar que existe un número de secuencia generado por cada lado. transferencia de datos y fin de la conexión. En caso de no estarlo. normalmente una de ellas abre un socket en un determinado puerto tcp y se queda a la escucha de nuevas conexiones. y asentimientos y temporizadores para detectar pérdidas y retrasos. 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. completando así la negociación en tres pasos (SYN. una serie de mecanismos claves determinan la fiabilidad y robustez del protocolo. Para mantener la fiabilidad. mientras que con el número de asentimiento se refiere al número de secuencia del receptor. ayudando de este modo a que no se puedan establecer conexiones falseadas (spoofing). Durante el establecimiento de conexión TCP. referidos al número de secuencia y al número de asentimiento. Durante el establecimiento de la conexión. Los números de secuencia son de 32 bits (sin signo). lo que significa el rechazo del intento de conexión. Es común referirse a esto como apertura pasiva. Para establecer la conexión se usa el procedimiento llamado negociación en tres pasos (3-way handshake). y poder identificar (y contar) los bytes de los datos de la aplicación. Entre ellos están incluidos el uso del número de secuencia para ordenar los segmentos TCP recibidos y detectar paquetes duplicados.Protocolo TCP Las conexiones TCP se componen de tres etapas: establecimiento de conexión. se envía al cliente un paquete de respuesta con el bit RST activado. Transferencia de datos Durante la etapa de transferencia de datos. es decir. Finalmente. Siempre hay un par de números de secuencia incluidos en todo segmento TCP. A través del uso de números de secuencia y asentimiento. y determina el lado servidor de una conexión. . Initial Sequence Number). TCP puede pasar los segmentos recibidos en el orden correcto dentro del flujo de bytes a la aplicación receptora. Un checksum de 16 bits. si existe algún proceso escuchando en ese puerto. 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. SYN/ACK y ACK) y la fase de establecimiento de conexión. checksums para detectar errores. 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. Una negociación en cuatro pasos (4-way handshake) es usada para la desconexión. 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. 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. Estos números de secuencia son usados para identificar los datos dentro del flujo de bytes. Un emisor TCP se refiere a su propio número de secuencia cuando habla de número de secuencia. el lado servidor respondería a la petición SYN válida con un paquete SYN/ACK.151 - . el cliente debería responderle al servidor con un ACK. Establecimiento de la conexion Aunque es posible que un par de entidades finales comiencen una conexión entre ellas simultáneamente. llamada asentimiento selectivo (SACK. En el lado del servidor se comprueba si el puerto está abierto. Esto proporciona protección contra paquetes mal dirigidos por errores en las direcciones. la dirección destino. Estos mecanismos incluyen el uso de ventana deslizante. 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. Los asentimientos (ACKs o Acknowledgments) de los datos enviados o la falta de ellos. el de retransmisión rápida. 64-bit. Hay que fijarse en que el checksum de TCP también cubre los 96 bit de la cabecera que contiene la dirección origen.consistente en el complemento a uno de la suma en complemento a uno del contenido de la cabecera y datos del segmento TCP. Un ejemplo sería el siguiente: un receptor comienza con un tamaño de ventana x y recibe y bytes. El checksum de TCP es una comprobación bastante débil. el receptor simplemente calcula la suma en complemento a uno con el checksum incluido.. entonces su tamaño de ventana será (x .y) bytes. . La debilidad del checksum está parcialmente compensada por el extendido uso de un CRC en el nivel de enlace. Si TCP fuese rediseñado hoy. el de recuperación rápida (Fast Recovery). 32-bit. es calculado por el emisor. 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. y el resultado debe ser igual a 0. una vez plegado. y que el checksum de 16 bits de TCP detecta la mayoría de estos errores simples. el de comienzo lento (Slow-start). Si es así. tales como el algoritmo de Evitación de la Congestión (congestion avoidance). 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. se asume que el segmento ha llegado intacto y sin errores. Esta situación seguirá así hasta que la aplicación receptora recoja los datos del buffer de recepción. salvando en algún lugar el valor del checksum recibido. muy probablemente tendría un código de redundancia cíclica (CRC) para control de errores en vez del actual checksum. y otros. Unido a los temporizadores.152 - . los emisores y receptores TCP pueden alterar el comportamiento del movimiento de datos.) y el resultado. e incluido en la transmisión del segmento. El receptor TCP recalcula el checksum sobre las cabeceras y datos recibidos. y algoritmos de control de flujo. como el usado en el PPP o en Ethernet. 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).. que controla que el transmisor mande información dentro de los límites del buffer del receptor. Los siguientes paquetes recibidos seguirán restando tamaño a la ventana de recepción. Sin embargo. 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 cálculos. esto no significa que el checksum de 16 bits es redundante: sorprendentemente. el protocolo y el tamaño TCP. son usados por los emisores para interpretar las condiciones de la red entre el emisor y receptor TCP. 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. bajo TCP e IP. en vez de eso. inspecciones sobre el tráfico de Internet han mostrado que son comunes los errores de software y hardware[cita requerida] que introducen errores en los paquetes protegidos con un CRC. será el mismo.y) y el transmisor sólo podrá mandar paquetes con un tamaño máximo de datos de (x . es decir. SMTP (25) y HTTP (80). El campo TCP de tamaño de ventana controla el movimiento de datos y está limitado a 16 bits. Cada lado de la conexión TCP tiene asociado un número de puerto (de 16 bits sin signo. Fin de la conexion La fase de finalización de la conexión usa una negociación en cuatro pasos (four-way handshake). a un tamaño de ventana de 65. El lado que ha dado por finalizada la conexión no puede enviar más datos pero la otra parte si podrá.535 bytes. del 0 al 65535). Protocolo UDP . debe ser usado un tamaño de ventana mayor. Hay que recordar que un número binario desplazado un bit a la izquierda es como multiplicarlo en base decimal por 2. SSH (22). 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. Los puertos son clasificados en tres categorías: bien conocidos. Cuando uno de los dos extremos de la conexión desea parar su "mitad" de conexión transmite un paquete FIN. La escala de ventana TCP (TCP window scale) es una opción usada para incrementar el máximo tamaño de ventana desde 65. a 1 Gigabyte. Los puertos registrados son normalmente empleados por las aplicaciones de usuario de forma temporal cuando conectan con los servidores. Los puertos bien conocidos son asignados por la Internet Assigned Numbers Authority (IANA). Puertos TCP TCP usa el concepto de número de puerto para identificar a las aplicaciones emisoras y receptoras. pero también pueden representar servicios que hayan sido registrados por un tercero (rango de puertos registrados: 1024 al 49151). Telnet (23).153 - . 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. recordemos que el rango total de 2 elevado a la potencia 16. una desconexión típica requiere un par de segmentos FIN y ACK desde cada lado de la conexión. 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. van del 0 al 1023 y son usados normalmente por el sistema o por procesos con privilegios. cubre 65536 números. que el otro interlocutor asentirá con un ACK. Como el campo de ventana no puede expandirse se usa un factor de escalado. Las aplicaciones que usan este tipo de puertos son ejecutadas como servidores y se quedan a la escucha de conexiones. registrados y dinámicos/privados. Por tanto. pero este caso es menos común.Escalado de ventana Para una mayor eficiencia en redes de gran ancho de banda. El valor de la escala puede ir desde 0 (sin desplazamiento) hasta 14.535 bytes. Una conexión puede estar "medio abierta" en el caso de que uno de los lados la finalice pero el otro no. Algunos ejemplos son: FTP (21). con lo que existen 65536 puertos posibles) asignado por la aplicación emisora o receptora. Los puertos dinámicos/privados también pueden ser usados por las aplicaciones de usuario. terminando la conexión desde cada lado independientemente. ya que no hay confirmación de entrega o recepción. Puertos TCP UDP utiliza puertos para permitir la comunicación entre aplicaciones. o no son rentables con respecto a la información transmitida. Así. sobre todo por los clientes al comunicarse con los servidores. No introduce retardos para establecer una conexión. El campo de puerto tiene una longitud de 16 bits. Pero la complejidad de la gestión de la fiabilidad tiene un coste en eficiencia. Lo utilizan aplicaciones como NFS (Network File System) y RCP (comando para copiar ficheros entre ordenadores remotos). Los puertos 1024 a 49. DNS y demás protocolos en los que el intercambio de paquetes de la conexión/desconexión son mayores. por lo que el rango de valores válidos va de 0 a 65. Permite el envío de datagramas a través de la red sin que se haya establecido previamente una conexión. pérdida de paquetes. 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. TCP: es el protocolo que proporciona un transporte fiable de flujo de bits entre aplicaciones.. cuando es más importante la velocidad que la fiabilidad. orden en el que llegan los paquetes. El puerto 0 está reservado. donde no es posible realizar retransmisiones por los estrictos requisitos de retardo que se tiene en estos casos. pero es un valor permitido como puerto origen si el proceso emisor no espera recibir mensajes como respuesta. BOOTP.154 - . Su uso principal es para protocolos como DHCP. Debido a que los paquetes para enviar tienen un tamaño máximo. liberando al programador de la dificultad de gestionar la fiabilidad de la conexión (retransmisiones. Diferencias entre TCP y UDP UDP: proporciona un nivel de transporte no fiable de datagramas. Los puertos 49. se utiliza UDP. Por eso. TCP asegura la recepción en destino de la información para transmitir.) que gestiona el propio protocolo. 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). Tampoco tiene confirmación ni control de flujo.535 son puertos efímeros y son utilizados como puertos temporales.152 a 65. 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. 109.. no mantiene estado de conexión alguno y no realiza seguimiento de estos parámetros.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 .535.151 son puertos registrados. duplicados de paquetes. ya que para llevar a cabo las gestiones anteriores se tiene que añadir bastante información a los paquetes que enviar.User Datagram Protocol (UDP) es un protocolo del nivel de transporte basado en el intercambio de datagramas. 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. así como para la transmisión de audio y vídeo en tiempo real. ya que el propio datagrama incorpora suficiente información de direccionamiento en su cabecera. ya que apenas añade la información necesaria para la comunicación extremo a extremo al paquete que envía al nivel inferior. Está pensado para poder enviar grandes cantidades de información de forma fiable. En cambio. cuanta más información añada el protocolo para su gestión. por lo que los paquetes pueden adelantarse unos a otros. y tampoco se sabe si ha llegado correctamente. Tabla de Puertos TCP y UDP Puerto/Protocolo Descripcion 1/tcp Multiplexor TCP 7/tcp Protocolo Echo (Eco) Reponde con eco a llamadas remotas 7/udp Protocolo Echo (Eco) Reponde con eco a llamadas remotas 9/tcp Protocolo Discard Elimina cualquier dato que recibe 9/udp Protocolo Discard Elimina cualquier dato que recibe 13/tcp Protocolo Daytime Fecha y hora actuales 17/tcp Quote of the Day (Cita del Día) 19/tcp Protocolo Chargen Generador de caractéres 19/udp Protocolo Chargen Generador de caractéres 0 FTP File Transfer Protocol (Protocolo de Transferencia de Ficheros) ­ datos 21/tcp FTP File Transfer Protocol (Protocolo de Transferencia de Ficheros) ­ control 22/tcp SSH. el tiempo que le toma a los paquetes en ir y regresar a ese host y cantidad de hosts por los que pasa. también usado por DHCP 68/udp BOOTP BootStrap Protocol (Client).(IP). scp. SFTP 23/tcp Telnet comunicaciones de texto inseguras 25/tcp SMTP Simple Mail Transfer Protocol (Protocolo Simple de Transferencia de Correo) 37/tcp time 43/tcp nicname 53/tcp DNS Domain Name System (Sistema de Nombres de Dominio) 53/udp DNS Domain Name System (Sistema de Nombres de Dominio) 67/udp BOOTP BootStrap Protocol (Server). indicando por ejemplo que un servicio determinado no está disponible o que un router o host no puede ser localizado.155 - . La única excepción es la herramienta ping y traceroute. Como tal. que envían mensajes de petición Echo ICMP (y recibe mensajes de respuesta Echo) para determinar si un host está disponible. ICMP difiere del propósito de TCP y UDP ya que generalmente no se utiliza directamente por las aplicaciones de usuario en la red. se usa para enviar mensajes de error. también usado por DHCP 69/udp TFTP   Trivial   File   Transfer   Protocol   (Protocolo   Trivial   de   Transferencia   de  Ficheros) 0 Gopher 79/tcp Finger 0 HTTP HyperText Transfer Protocol (Protocolo de Transferencia de HiperTexto) (WWW) 88/tcp Kerberos Agente de autenticación 0 POP3 Post Office Protocol (E­mail) 111/tcp sunrpc 113/tcp ident (auth) antiguo sistema de identificación 119/tcp NNTP usado en los grupos de noticias de usenet 123/udp NTP Protocolo de sincronización de tiempo 123/tcp NTP Protocolo de sincronización de tiempo 135/tcp epmap 137/tcp NetBIOS Servicio de nombres 137/udp NetBIOS Servicio de nombres 138/tcp NetBIOS Servicio de envío de datagramas 138/udp NetBIOS Servicio de envío de datagramas 139/tcp NetBIOS Servicio de sesiones 139/udp NetBIOS Servicio de sesiones 143/tcp IMAP4 Internet Message Access Protocol (E­mail) 161/tcp SNMP Simple Network Management Protocol 161/udp SNMP Simple Network Management Protocol 162/tcp SNMP­trap 162/udp SNMP­trap 177/tcp XDMCP Protocolo de gestión de displays en X11 177/udp XDMCP Protocolo de gestión de displays en X11 389/tcp LDAP Protocolo de acceso ligero a Bases de Datos .   Agobot) 445/udp Microsoft­DS compartición de ficheros 0 IPSec ISAKMP. Autoridad de Seguridad Local 512/tcp exec 513/tcp login 514/udp syslog usado para logs del sistema 0 RIP 591/tcp FileMaker 6.   compartición   en   Windows. 1723/tcp Enrutamiento y Acceso Remoto para VPN con PPTP.389/udp LDAP Protocolo de acceso ligero a Bases de Datos 443/tcp HTTPS/SSL usado para la transferencia segura de páginas web 445/tcp Microsoft­DS   (Active   Directory. 1761/tcp Novell Zenworks Remote Control utility 1863/tcp MSN Messenger 0 NFS Archivos del sistema de red 0 CPanel puerto por defecto 0 Web Host Manager puerto por defecto 2427/upd Cisco MGCP 0 NetPanzer 0 NetPanzer 3128/tcp HTTP usado por web caches y por defecto en Squid cache 3128/tcp NDL­AAS 0 MySQL sistema de gestión de bases de datos 3389/tcp RDP (Remote Desktop Protocol) 3396/tcp Novell agente de impresión NDPS 0 Subversion (sistema de control de versiones) 4662/tcp eMule (aplicación de compartición de ficheros) 4672/udp eMule (aplicación de compartición de ficheros) 4899/tcp RAdmin   (Remote   Administrator). ver puerto 80) 631/tcp CUPS sistema de impresión de Unix 666/tcp identificación de Doom para jugar sobre TCP 993/tcp IMAP4 sobre SSL (E­mail) 995/tcp POP3 sobre SSL (E­mail) 0 SOCKS Proxy 1337/tcp suele usarse en máquinas comprometidas o infectadas 1352/tcp IBM Lotus Notes/Domino RCP 1433/tcp Microsoft­SQL­Server 1434/tcp Microsoft­SQL­Monitor 1434/udp Microsoft­SQL­Monitor 1494/tcp Citrix MetaFrame Cliente ICA 1512/tcp WINS 1521/tcp Oracle listener por defecto 0Enrutamiento y Acceso Remoto para VPN con L2TP.156 - .0 (alternativa para HTTP.   herramienta   de   administración   remota  (normalmente troyanos) 0 Universal plug­and­play 0 Session Initiation Protocol (SIP) 0 AOL y AOL Instant Messenger 5222/tcp XMPP/Jabber conexión de cliente 5223/tcp XMPP/Jabber puerto por defecto para conexiones de cliente SSL 5269/tcp XMPP/Jabber conexión de servidor 5432/tcp PostgreSQL sistema de gestión de bases de datos 5517/tcp Setiqueue proyecto SETI@Home 5631/tcp PC­Anywhere protocolo de escritorio remoto 5632/udp PC­Anywhere protocolo de escritorio remoto 0 VNC protocolo de escritorio remoto (usado sobre HTTP) 0 VNC protocolo de escritorio remoto (usado sobre HTTP) 0 VNC protocolo de escritorio remoto (usado sobre HTTP) 0 VNC protocolo de escritorio remoto (usado sobre HTTP) 0 VNC protocolo de escritorio remoto (usado sobre HTTP) 0 VNC protocolo de escritorio remoto (conexión normal) 6000/tcp X11 usado para X­windows 6112/udp Blizzard 6129/tcp Dameware Software conexión remota 6346/tcp Gnutella compartición de ficheros (Limewire. etc.) 6347/udp Gnutella 6348/udp Gnutella .   gusano   Sasser. Direcciones IPv4 En su versión 6. o de 0 a FF (en hexadecimal) o de 0 a 11111111 (en binario). 16. los ordenadores se conectan entre sí mediante sus respectivas direcciones IP. no cambia con el tiempo. 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). generalmente tienen una dirección IP fija (se aplica la misma reducción por IP fija o IP estática). Sin embargo.157 - . 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. 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).   usado   erróneamente   en   sustitución   de   8080. Los servidores de correo. mientras que la dirección IP se puede cambiar. y servidores de páginas web necesariamente deben contar con una dirección IP fija o estática. Tomcat lo usa como puerto por defecto. lo que suma 255 en total). 4. Es habitual que un usuario que se conecta desde su hogar a Internet utilice una dirección IP. a los seres humanos nos es más cómodo utilizar otra notación más fácil de recordar y utilizar. Existe un protocolo para asignar direcciones IP dinámicas llamado DHCP (Dynamic Host Configuration Protocol). como los nombres de dominio. 8. 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. FTP públicos. de derecha a izquierda. la traducción entre unos y otros se resuelve mediante los servidores de nombres de dominio DNS. 32. . 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. Esta dirección puede cambiar cada vez que se conecta.55. 12345/tcp NetBus en:NetBus (troyano/virus) 31337/tcp 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). es decir. que corresponde al nivel de red del protocolo TCP/IP. 0 HTTP HTTP­ALT ver puerto 80. A través de Internet.6349/udp Gnutella 0 Gnutella 6355/udp Gnutella 6667/tcp IRC IRCU Internet Relay Chat 6881/tcp BitTorrent puerto por defecto 6969/tcp BitTorrent puerto de tracker 0 Servidor de Fuentes X11 7100/udp Servidor de Fuentes X11 0 iRDMI   por   lo   general. Los sitios de Internet que por su naturaleza necesitan estar permanentemente conectados. DNS. 2. 8118/tcp privoxy 0 Pichat peer­to­peer chat server 9898/tcp Gusano Dabber (troyano/virus) 0 Webmin (Administración remota web) 19226/tcp Panda SecurityPuerto de comunicaciones de Panda Agent. ya que de esta forma se permite su localización en la red. tienen valores decimales de 1.   También  utilizado en el servidor de streaming ShoutCast. 64 y 128. Cada uno de esos números se mueve en un rango de 0 a 255 (expresado en decimal). 0 a 10. Se otorgan direcciones de clase C para todos los demás solicitantes.255 (16 bits red. Los ceros iniciales. se asignan los dos primeros octetos para identificar la red.123.".2.0. si los hubiera. La dirección 0. 16 bits hosts) Uso de compañias medias y pequeñas ademas pequeños proveedores de internet(ISP) A partir de 1993. Las direcciones 127. se asignan los tres primeros octetos para identificar la red.255.0. Hay ciertas direcciones en cada clase de dirección IP que no están asignadas y que se denominan direcciones privadas. 20 bits hosts) Uso universidades y grandes compañias Clase C: 192.x se reservan para pruebas de retroalimentación.12. calculando las direcciones necesarias y "desperdiciando" las .255.En la expresión de direcciones IPv4 en decimal se separa cada octeto por un carácter ".168. se pueden obviar. que pretende en líneas generales establecer una distribución de direcciones más fina y granulada. de modo que la cantidad máxima de hosts es 224 . salvo algunas excepciones. En una red de clase C. En una misma red no puede existir dos direcciones iguales. 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. de modo que la cantidad máxima de hosts es 28 . Se denomina dirección de broadcast. es decir.0. Ejemplo de representación de dirección IPv4: 164. 24 bits hosts) Uso VIP EJ:La red militar norte-americana Clase B: 172.255.0. En la actualidad.0 a 172. de modo que la cantidad máxima de hosts es 216 . o 65 534 hosts. ICANN reserva las direcciones de clase A para los gobiernos de todo el mundo (aunque en el pasado se le hayan otorgado a empresas de gran envergadura como. reservando los dos octetos finales (16 bits) para que sean asignados a los hosts.2.255 (8 bits red. Se denomina dirección de red. reservando el octeto final (8 bits) para que sea asignado a los hosts. clase B y clase C. 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.255.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. reservando los tres últimos octetos (24 bits) para que sean asignados a los hosts. La dirección que tiene su parte de host a cero sirve para definir la red en la que se ubica. Cada clase de red permite una cantidad fija de equipos (hosts).158 - .0 es utilizada por las máquinas cuando están arrancando o no se les ha asignado dirección.2 (las direcciones reservadas de broadcast [últimos octetos a 255] y de red [últimos octetos a 0]). ó 254 hosts. ante la previsible futura escasez de direcciones IPv4 debido al crecimiento exponencial de hosts en Internet.168. Hewlett Packard) y las direcciones de clase B para las medianas empresas. En una red de clase A.x.16. Cada uno de estos octetos puede estar comprendido entre 0 y 255. En una red de clase B.x. Las direcciones privadas son: Clase A: 10.31. 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. 16 777 214 hosts. se asigna el primer octeto para identificar la red. se empezó a introducir el sistema CIDR.255 (12 bits red. Se denomina dirección de bucle local o loopback.0.0 a 192.0. por ejemplo. de manera que las direcciones privadas son ideales para ellas. Para conseguirlo hay que reservar bits del campo host para identificar la subred estableciendo a uno los bits de redsubred en la máscara. Por ejemplo la dirección 172. 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.159 - . el empleado actualmente para la delegación de direcciones.255. Las direcciones privadas también se pueden utilizar en una red en la que no hay suficientes direcciones públicas disponibles.0 nos indica que los dos primeros bytes identifican la red (por ser una dirección de clase B). De esta forma una dirección de clase A tendrá como máscara 255.mínimas posibles. Un ejemplo de uso es cuando necesitamos agrupar todos los empleados pertenecientes a un departamento de una empresa. 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. En este caso crearíamos una subred que englobara las direcciones IP de éstos.255. los bancos pueden utilizar TCP/IP para conectar los cajeros automáticos que no se conectan a la red pública.2 dentro de la misma. Muchas aplicaciones requieren conectividad dentro de una sola red. IP dinamica Una dirección IP dinámica es una IP asignada mediante un servidor DHCP (Dynamic Host Configuration Protocol) al usuario. En las redes de gran tamaño a menudo se usa TCP/IP. Según lo acordado. para rodear el problema que las distribución por clases había estado gestando. La IP que se obtiene tiene una duración máxima determinada. 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. DHCP apareció como protocolo estándar en octubre de 1993.255.0. Entre estos parámetros se encuentra la dirección IP del cliente. 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 y el host al que se refiere es el 2. Por ejemplo.0 y una de clase C 255. La máscara se forma poniendo a 1 los bits que identifican la red y a 0 los bits que identifican el host. Dada la dirección de clase A 10.255.16.2. y no necesitan conectividad externa.0.0. Este sistema es.1.2 sabemos que pertenece a la red 10.1. 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.1. de hecho.0.0.0. El servidor DHCP provee parámetros de configuración específicos para cada cliente que desee participar en la red IP.0.1 con máscara 255.0. DHCP sustituye al . Creacion de Subredes El espacio de direcciones de una red puede ser subdividido a su vez creando subredes autónomas separadas. El estándar RFC 2131 especifica la última definición de DHCP (marzo de 1997). 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). una de clase B 255. 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. automáticamente. aunque si se podría. 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. 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. puesto que el usuario no puede conseguir otra IP. Reduce la cantidad de IP´s asignadas (de forma fija) inactivas. Debido a la compatibilidad retroactiva de DHCP. Asignacion de direcciones IP Dependiendo de la implementación concreta. muy pocas redes continúan usando BOOTP puro. donde el servidor DHCP asigna permanentemente una dirección IP libre. pero en algunos casos se configura IP Privada Fija para poder controlar el acceso a internet o a la red local. Las IP dinámicas son las que actualmente ofrecen la mayoría de operadores. Esto permite al usuario montar servidores web. el único método que permite la reutilización de direcciones IP.160 - . Éstas suelen cambiar cada vez que el usuario reconecta por cualquier causa. Sólo clientes con una dirección MAC válida recibirán una dirección IP del servidor. Ventajas Reduce los costos de operación a los proveedores de servicios internet (ISP). Es más caro para los ISP puesto que esa IP puede no estar usándose las 24 horas del día. Desventajas Obliga a depender de servicios que redirigen un host a una IP. 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. Una IP puede ser Privada ya sea dinámica o fija como puede ser IP Publica Dinámica o Fija. el servidor DHCP tiene tres métodos para asignar las direcciones IP: manualmente. dinámicamente. 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. a cualquier cliente que solicite una. tomada de un rango prefijado por el administrador. Ventajas Permite tener servicios dirigidos directamente a la IP. IP fija Una dirección IP fija es una IP asignada por el usuario de manera manual. otorgando ciertos privilegios dependiendo del número de IP que tenemos. En el caso de la IP Privada generalmente es dinámica asignada por un servidor DHCP. etc. que es más antiguo. El proceso es transparente para el usuario y tiene un periodo de validez limitado. 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.protocolo BOOTP. correo. Mucha gente confunde IP Fija con IP Publica e IP Dinámica con IP Privada. creada manualmente por el administrador de la red. . Desventajas Son más vulnerables al ataque. cuando el servidor tiene a su disposición una tabla que empareja direcciones MAC con direcciones IP. FTP. acceder al servidor. desde el login y password del usuario en el servidor hasta la transferencia de cualquier archivo. Ejemplo: 2001:0:0:0:0:0:0:4 -> 2001::4. Para solucionar este problema son de gran utilidad aplicaciones como scp y sftp. que suman un total de 128 bits. como en IPv4.161 - . que permiten transferir archivos pero cifrando todo el tráfico. Desde un equipo cliente se puede conectar a un servidor para descargar archivos desde él o para enviarle archivos. basado en la arquitectura cliente-servidor. se realiza en texto plano sin ningún tipo de cifrado. pero dentro del protocolo IPv6. Algunas reglas acerca de la representación de direcciones IPv6 son: Los ceros iniciales. Un problema básico de FTP es que está pensado para ofrecer la máxima velocidad en la conexión. Su representación suele ser hexadecimal y para la separación de cada par de octetos se emplea el símbolo ":". incluidas en el paquete SSH. pero no la máxima seguridad.Protocolo de Transferencia de Archivos) en informática. se pueden obviar. Para listar el contenido de este fichero teclee lo siguiente: [BASH]# cat /etc/services FTP FTP (sigla en inglés de File Transfer Protocol . independientemente del sistema operativo utilizado en cada equipo.4x1038 hosts direccionables. Un bloque abarca desde 0000 hasta FFFF. Fichero /etc/services El fichero /etc/services contiene una lista de todos los puertos que GNU/Linux utiliza. La ventaja con respecto a la dirección IPv4 es obvia en cuanto a su capacidad de direccionamiento. 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 "::".Direcciones IPv6 La función de la dirección IPv6 es exactamente la misma a su predecesor IPv4. El Servicio FTP es ofrecido por la capa de Aplicación del modelo de capas de red TCP/IP al usuario. Está compuesta por 8 segmentos de 2 bytes cada uno. ya que todo el intercambio de información. o apropiarse de los archivos transferidos. el equivalente a unos 3. Esta operación sólo se puede hacer una vez. . utilizando normalmente el puerto de red 20 y el 21. es un protocolo de red para la transferencia de archivos entre sistemas conectados a una red TCP. 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). con lo que un posible atacante puede capturar este tráfico. Se obtiene además una estadística del RTT o latencia de red de esos paquetes. la máquina a la que se acceda debe tener un programa especial que reciba y gestione las conexiones. y por ello.233) 94 ms 93 ms 93 ms .245. y en sistemas GNU/Linux en /etc/resolv.google.l.127.net (200.Telnet Telnet (TELecommunication NETwork) es el nombre de un protocolo de red (y del programa informático que implementa el cliente).183. como en todos los servicios de Internet.cantv.16. Este tipo de paquetes se envían para probar si los enlaces ATM están correctamente definidos.gw. para manejarla remotamente como si estuviéramos sentados delante de ella. 40 byte packets 1 2 172. 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.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. dirección IP que toma del archivo resolv. lo que viene a ser una estimación de la distancia a la que están los extremos de la comunicación.229 (10.43.cantv. mientras que en Windows se llama tracert.66. 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.sprintlink.1 (172. El puerto que se utiliza generalmente es el 23.net (144.conf. Es útil para diagnosticar los errores en redes o enrutadores IP. 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.net (200. en este caso.43.44.99).16. 64 hops max.44. las tramas que se transmiten son ATM (nivel 2 del modelo OSI).85) 38 ms 38 ms 37 ms 5 cri-00-pos1-0-0.66. Muchas veces se utiliza para medir la latencia o tiempo que tardan en comunicarse dos puntos remotos.127. Dig precisa conocer la dirección IP de un servidor DNS al que consultar por defecto. Existe otro tipo. Para que la conexión funcione.com traceroute to www.183.169. Ejemplo: [BASH]# traceroute www.233.border. que sirve para acceder mediante una red a otra máquina.229) [MPLS: Label 1479 Exp 0] 38 ms 51 ms 38 ms 4 cnt-00-tge1-0-0.1) 23 ms 23 ms 22 ms 3 10.50) 51 ms 43 ms 43 ms 6 sl-st21-mia-14-1-0. Esta herramienta se llama traceroute en UNIX y GNU/linux.162 - . Ping ATM.223. que se utiliza en las redes ATM (como puede ser una simple ADSL instalada en casa) y.com (64. 86 (64.234 (144.234) 103 ms 103 ms 103 ms 12 64.232.14.conf Este archivo especifica las direcciones IP de los servidores DNS /etc/sysconfig/network Este archivo de configuración es utilizado para definir las características de red deseadas /etc/sysconfig/network scripts/ifcfg-<interfaz> Estos archivos especificar la configuración de la tarjeta de red. los tres tiempos siguientes son el tiempo de respuesta para los paquetes enviados (un asterisco indica que no se obtuvo respuesta).233.169.174. Configuracion de los parametros de Red Configuracion de interfaces de Red La configuración de la interfaz es importante en un servidor o equipo de escritorio.236.21) 110 ms 109 ms 107 ms 16 yo-in-f99. Tracert usa esta respuesta para averiguar la dirección IP del nodo que desechó el paquete.2.47.48. que será el primer nodo de la red. La segunda vez que se manda un paquete. 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.236. posteriormente viene el nombre y la dirección IP del nodo por el que pasa. Tracert utiliza el campo Time To Live (TTL) de la cabecera IP. De esta forma. Lo que hace tracert es mandar paquetes a la red de forma que el primer paquete lleve un valor TTL=1.163 - de configuración son utilizados para . /etc/resolv.200 (72.233.sprintlink. debido a la existencia en la red de un bucle cerrado en la ruta). Los principales archivos de configuración son /etc/hosts Este archivo de configuración contiene los nombres de equipos dentro de una red local y se utilizar para resolver su nombre cuando no se tiene un servidor de DNS en la red local.200) 106 ms 105 ms 15 72.239. donde será descartado.9.248) 94 ms 95 ms 95 ms 9 sl-crs1-atl-0-0-0-1.239.84 (64.223.net (144.232.84) 103 ms 13 216.sprintlink.174. envía al emisor un mensaje de control especial indicando una incidencia. Este campo sirve para que un paquete no permanezca en la red de forma indefinida (por ejemplo. el primer paquete será eliminado por el primer nodo al que llegue (ya que éste nodo decrementará el valor TTL.sprintlink.233.68) 105 ms 104 ms 106 ms 14 72. por lo que pasará el primer nodo y llegará al segundo. el TTL vale 2.48) 104 ms 104 ms 103 ms 10 sl-st20-atl-1-0-0.232. .18.174.14. De esta forma.48.20. Cuando un nodo elimina un paquete.223.7 sl-bb20-mia-5-0-0.198) 95 ms 93 ms 93 ms 8 sl-crs1-mia-0-4-0-0. el segundo un TTL=2. llegando a cero).14.21 (72.google.174.133) 104 ms 103 ms 11 144.47.86) 98 ms 97 ms 64. Esto se hace de forma sucesiva hasta que el paquete llega a su destino.232. Estas herramientas (traceroute y tracert) son órdenes ejecutables en una consola en modo texto.99) 100 ms 99 ms Funcionamiento El número de la primera columna es el número de salto.232.232.com (64. cuando el campo TTL llega al valor 0 ya no se reenviará más. devolviendo de nuevo un mensaje de control. sino que el nodo que lo esté manejando en ese momento lo descartará. etc.14.233.net (144.sprintlink. El campo TTL es un número entero que es decrementado por cada nodo por el que pasa el paquete.net (144.233.net (144.68 (216. 0.redfactor. Por ejemplo: equipo.249.0.net www 207. se recomienda que no modifique esta linea.Del.0.0.linuxparatodos. esta dirección es utilizada por varias aplicaciones para su funcionamientos.10 localhost. Este archivo debe tener la siguiente forma: Direccion IP nombre.Configuracion del archivo /etc/hosts Este archivo de texto asocia las direcciones IP con el nombre del equipo (hostname).168.1. El archivos hosts solo permite hasta 3 servidores de nombre diferentes domain Define el nombre de dominio local en el cual pertenecen los equipos en una red local.0.164 - .red.1. no No permite la configuración de los servicio de red. Sus parámetros de configuración son: nameserver Define las direcciones IP de los servidores de nombre en los cuales se deberán resolver las búsquedas. Define el nombre del equipo.net Configuracion del archivo /etc/resolv. FORWARD_IPV4 HOSTNAME Habilita el reenvío de paquetes. dependiendo del numero de interfaces de red instaladas en el computadora será el numero de archivos de configuración.factor.net GATEWAY 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.ejemplo. search 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 sortlist Este parámetro indica la preferencia de los nameserver definidos Configuracion del archivo /etc/sysconfig/network Los parámetros que utiliza este este archivo son: NETWORKING Los valores que admites son: yes Permite la configuración de los servicio de red.net mail localhost 192. Ejemplo: 127.40 www. Los valores que admite son yes o no. el cual debe de tener la forma del Fully Qualified Domain Name (FQDN).conf Este archivo de configuración contiene la direcciones IP de los servidores DNS.localdomain mail.1 192.168.13 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.1). el nombre de estos archivos depende del tipo de dispositivo . nos referimos a la capa de . ifcfg-eth1. .. static Se define de forma manual los parámetros de red. ifcfg-ppp1.255.Nivel De Enlace 3. 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 BOOTPROTO none No utiliza ningún protocolo de arranque. Una clave RSA (Sistema Criptografico con Clave Publica) es un algoritmo que genera un par de llaves de autenticacion.Nivel de Internet 4.Nivel Físico 2.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. activar o apagar servicios. El protocolo SSH (Secure Shell) esta implementado bajo el estándar TCP/IP.165 - . 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..254 DNS1=192. dhcp Obtiene los parámetros de red por medio de un servidor de DHPC| IPADDR Define la dirección IP asignada a ese dispositivo.0 NETWORK=192.. SSH nos permite copiar datos de forma segura..2.168. nos da la capacidad de llevar a cabo tareas administrativas dentro del mismo como.168. La publica se distribuye en forma autenticada y la privada que generalmente es guardada en secreto por el propietario..2..10 NETMASK=255. DHCP_HOSTNAME Esta opción establece un nombre al equipo. NETMASK Define la mascara de red. Modem ifcfg-ppp0. . el cual a su vez se encuentra dividido en 5 secciones: 1.Nivel de Aplicación Por lo que el protocolo SSH esta ubicado en la quinta capa del modelo TCP/IP. la publica y la privada.. Ifcfg-wlanN. DNS2 Define la direcciones de los servidores DNS primario y secundario a utilizar. ifcfg-pppN. 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. Además de la conexión a otros equipos.2. en donde N representa el numero de interfaz a configurar. Ejemplo del archivo de configuración. NETWORK Define el segmento de red HWADDR Define el dirección MAC del dispositivo de red.0 GATEWAY=192.Ethernet Wi-Fi ifcfg-eth0.. GATEWAY Define la Dirección IP del Gateway en la red ONBOOT Establece si el dispositivo debe activarse con los servicios de red DNS1. . ifcfg-wlan1. Se recomienda que modificar el valor de este parámetro.168..Nivel de Transporte 5.255. ifcfg-ethN.2.168. DEVICE=eth0 BOOTPROTO=static IPADDR=192. ifcfg-wlan0. Su seguridad también es atribuible al hecho de que su código fuente se distribuya libremente con una licencia BSD. Instalando OpenSSH A partir de este punto empezaremos a descargar los paquetes necesarios para el perfecto funcionamiento de openSSH. lo cual es debido a la conocida reputación de los desarrolladores de OpenBSD por crear código limpio y perfectamente auditado. openSSH nos permite copiar datos de forma segura mediante la implementación de dos herramientas proporcionadas por openSSH. 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.166 - . nos referimos a los ficheros de configuración . existen restricciones con respecto a su uso y distribución. Además de la conexión a otros equipos. de esta manera si usted se encuentra trabajando bajo algún ambiente gráfico. 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. Los desarrolladores de OpenSSH aseguran que este es más seguro que el original. Aunque todo el código fuente del SSH original también está disponible. De manera predeterminada. sea KDE o GNOME le pedimos abra una terminal de BASH. por otra parte si usted se encuentra trabajando bajo linea de comandos no tendrá que hacer nada. Este proyecto es liderado actualmente por Theo de Raadt quien actualmente es fundador y líder de proyectos como OpenBSD. lo que convierte a OpenSSH en un proyecto mucho más atractivo a la hora de atraer nuevos desarrolladores. 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: [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. usando como base al protocolo SSH. 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.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. lo que contribuye a que sea más seguro.   Cuando se intercambian las claves al inicio de una sesión SSH.Archivos de configuración de OpenSSH OpenSSH dispone de dos conjuntos diferentes de ficheros de configuración: uno completamente dedicado al cliente (ssh. ssh_host_rsa_key.pub La clave pública RSA usada por ssh para la versión 1 del protocolo SSH. id_dsa. ssh_config El   archivo   de   configuración   del   sistema   cliente   SSH   por   defecto.pub La clave pública RSA usada por el demonio sshd para la versión 1 del  protocolo SSH. id_rsa. ssh_host_key. scp y sftp) y otro orientado completamente al servidor. 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: moduli Contiene   grupos   Diffie­Hellman   usados   para   el   intercambio   de   la   clave   Diffie­ Hellman que es imprescindible para la construcción de una capa de transporte seguro.   Este   archivo   es   muy   importante   para   asegurar   que   el  .pub La   clave   pública   RSA   usada   por   el   demonio   sshd   para   la  versión 2 del protocolo SSH. se crea un valor secreto  y compartido que no puede ser determinado por ninguna de las partes individualmente.pub La clave pública DSA del usuario id_rsa La clave RSA privada usada por ssh para la versión 2 del protocolo SSH.pub La clave pública DSA usada por el demonio sshd ssh_host_key La   clave   privada   RSA   usada   por   el   demonio   sshd   para   la   versión   1   del  protocolo SSH. identity. 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 Este   archivo   contiene   una   lista   de   claves   públicas   autorizadas.pub La clave pública RSA usada por ssh para la versión 2 del protocolo SSH.   Este  archivo se sobrescribe si hay alguno ya presente en el directorio principal del usuario sshd_config El archivo de configuración para el demonio sshd ssh_host_dsa_key La clave privada DSA usada por el demonio sshd ssh_host_dsa_key.  Este valor se usa para proporcionar la autenticación del host.167 - .  Cuando un cliente se conecta al servidor. id_dsa Contiene la clave privada DSA del usuario. known_hosts Este archivo contiene las claves de host DSA de los servidores SSH a los  cuales   el   usuario   ha   accedido. identity La clave privada RSA usada por ssh para la versión 1 del protocolo SSH. ssh_host_rsa_key La clave privada RSA usada por el demonio sshd para la versión 2 del  protocolo SSH. el servidor autentica al cliente chequeando  su clave pública firmada almacenada dentro de este archivo. por lo que es una buena idea cambiarlo.168 - . Para modificar esta opción y las siguientes que iremos mencionando editaremos el fichero de configuración shd_config. así que usted puede elegir el que quiera.0. but leave them commented.0 ListenAddress ::  Desactivando el Protocolo 1 Hay dos versiones de ssh en cuanto a su protocolo de comunicación. En este ejemplo usaremos el 34765. Uncommented options change a default value. 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.0. por lo que tendrá que editar el parámetro Port del fichero de configuración el cual deberá quedar así: # The strategy used for options in the default sshd_config shipped with  OpenSSH is to specify options with their default value where possible.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 . Se recomienda usar un puerto cualquiera por encima del 1024. esto es algo que conocen todos nuestros posibles atacantes . es por ello que le enseñaremos la manera apropiada en la que deberá ser configurado este vital fichero. 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. que por defecto se encuentra en el directorio /etc/ssh/. algunos de estos algoritmos han dejado de ser mantenidos por sus creadores y por lo tanto presenta serios huecos de . Port 34567 AddressFamily any ListenAddress 0. ya que si no se llegaran a configurar apropiadamente estos ficheros la vulnerabilidad de nuestro servidor seria demasiado sensible a ataques informáticos. estableciendo un número máximo de intentos de conexión lograremos que sus intentos por entrar a nuestro servidor sean disuadidos. en este caso después de dos intentos. 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 . es totalmente posible volver a intentarlo. 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. Con esto siempre tendremos que ingresar como un usuario normal y ya estando adentro entonces mediante un su – cambiarnos a la cuenta de root. 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.seguridad que potencialmente permite a un intruso insertar datos en el canal de comunicación. 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. . 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.169 - . Para evitar el uso del protocolo 1 y sus posibles ataques a este. pero con solo dos intentos por vez. basta con indicar que solo admita comunicaciones de ssh basadas en el protocolo 2. se perderá o cerrará la conexión. Prácticamente la mayoría de sistemas operativos Linux crean por defecto al usuario root . 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. Claro. recargar o conocer el status en el que se encuentra el servicio. 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. que alguien este intentando mediante un script varias veces el adivinar un usuario y contraseña. si no lo hace. evitando así dejar por tiempo indeterminado pantallas de login sin que nadie las use. Si somos el único usuario del sistema considero que con 20 o 30 segundos es mas que suficiente. o peor aun. 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. por ejemplo. de esta manera se protege la información de los usuarios. detener o reiniciar el servidor openSSH Llegado a este punto usted ya deberá contar con las configuraciones de seguridad apropiadas. Estas opciones pueden ser consultadas en la siguiente tabla: .d/sshd start Igualmente existen opciones ya sea para reiniciar. por lo que solo faltaría iniciar el servicio de SSH.Activando el modo estricto La opción StrictModes debe activarse para que.170 - . 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:  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. el login se cerrará. Para iniciar el servicio de SSH tendrá que teclear en consola y como root lo siguiente: [root@ localhost ]# /etc/init. detener. 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. o no queremos que los usuarios se conecten a él. automáticamente levantara el servicio de SSH sin necesidad de levantarlo manualmente después.­Para   conectarnos   al   servidor   remoto   habrá   que   especificar   el   puerto   de  escucha. Aprendiendo a utilizar openSSH En esta parte del capitulo le enseñaremos a: 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.60 Nombre del usuario remoto ­> adminlog Puerto de autenticacion ­> 34765 Solución:   1.start Inicia el servicio stop Detiene el servicio restart Reinicia el servicio.249.25.­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 reload Recarga   el   servicio. o también conocido como Terminal. 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. solo deberá especificar el puerto por el cual requiere autenticarse al servidor. para ello nos ha proporcionado los siguientes datos: IP del servidor remoto ­> 207. de esta manera cuando el equipo arranque. condrestart Reinicio   Condicional. nos ha pedido reiniciar el servicio de apache .­   Solamente   se   inicia   si   el   servicio   se   encuentra  ejecutándose.­La   diferencia   con   restart   radica   en   que   al   ejecutar   un  reload este solamente carga las actualizaciones hechas al fichero de configuración del  servicio   sin   necesidad   de   matar   los   procesos   relacionados   con   el   mismo.171 - . Ejemplo [root@ localhost ]# ssh ­p[puertoDeEscucha] usuarioRemoto@ipDelServidorRemoto Ejemplo 1: La empresa Factor Integración para la cual trabajamos. el usuario remoto y la IP del servidor remoto (Recuerde que no esta permitido  conectarse como root desde SSH) . 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.   por   lo   que   podría entenderse que hace el cambio en caliente. en cambio SFTP nos deja navegar entre las carpetas lo cual hace mas sencillo la ubicación del recurso que deseamos copiar. 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).249. para descargar una carpeta tendrá que seguir la siguiente sintaxis: [root@   localhost   ]#scp   ­P[puertoDeEscucha] usuarioRemoto@ipDelServidorRemoto:rutaDelDirectorioRemoto   ­r  Ejemplo 2: La misma empresa. Ejemplo: [root@   localhost   ]#scp usuarioRemoto@ipDelServidorRemoto:rutaDelRecursoRemoto   ­P[puertoDeEscucha]  Aunado a esto. solo deberá especificar el puerto por el cual requiere autenticarse al servidor.25. para ello nos ha proporcionado los siguientes datos: IP del servidor remoto ­> 207.60 Nombre del usuario remoto ­> adminlog .60 closed. La única desventaja que presenta SCP es que únicamente permite la transferencia de archivos (descarga y subida de ficheros). Factor Integración. carpetas o ficheros radica en que para SCP tenemos que conocer exactamente donde se encuentra el recurso que queremos copiar. 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.249.25. nos ha pedido copiar la carpeta de inventarios de la empresa la cual esta hospedada en un servidor remoto .-Una vez dentro del servidor remoto nos logearemos ahora si como “root” [adminlog@ web ]# su ­ Contraseña: xxxxxxxxxxxxxxxxxx [root@ web ]#  4.d/httpd restart 5.-El siguiente paso sera teclear la contraseña del usuario remoto 3.172 - . La diferencia en utilizar SCP (Shell ) y SFTP (Security File Transfer Protocol) para copiar archivos. de otra forma nunca lo descargara.-Por ultimo. solo bastara reiniciar el servidor de apache [root@ web ]# /etc/init.-Para salir del SSH solo basta teclear “exit” [root@ web ]# exit Connection to 207. [root@ localhost ] # _ Copiar u obtener archivos o carpetas desde un equipo remoto Para copiar archivos.2.  la IP del servidor remoto y la ruta (sin errores)  del recurso remoto. nos permite navegar directamente en el servidor remoto con el fin de localizar el recurso que deseamos descargar.   Escritura   o   de  Ejecución a un fichero remoto chown [own] [rutaRemota] Cambia   el   grupo   de   trabajo   de   un   fichero   remoto..173 - . que únicamente permite la transferencia de archivos. solo deberá especificar el puerto por el cual requiere autenticarse al servidor.  usuarioRemoto@IPDelServidorRemoto's password: xxxxxxxxxxxxxxxxxxxxxx Una vez dentro del servidor solo bastara ejecutar el comando “get” para descargar algún fichero o archivo. En comparación de capacidades con el anterior protocolo SCP..   usuarioRemoto@IPDelServidorRemoto's   password:  xxxxxxxxxxxxxxxxxxxxxx sftp> get recursoRemoto  La siguiente tabla explica mas a detalle los comandos que pueden ser utilizados con SFTP: cd [rutaRemota] Cambia de directorio dentro del servidor remoto lcd [rutaLocal] Cambia de directorio en el equipo local chgrp [grp] [rutaRemota] Cambia   el   grupo   de   trabajo   de   un   fichero   remoto. [root@ localhost]# sftp ­o Port=[PuertoDeEscucha] usuarioRemoto@ipDelServidorRemoto El siguiente paso sera autenticarnos con la contraseña del usuario remoto Connecting to IPDelServidorRemoto. Lo anterior nos copiará la carpeta "/tmp/Conta" remota en el directorio actual ". el usuario remoto..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. La opción "-r" significa recursivo.   El   [own]  tiene que ser un User ID get [rutaRemota] [rutaLocal] Copia un recurso remoto en un equipo local lmkdir [rutaLocal] Crea una carpeta en el equipo local lpwd Imprime la ruta local en la cual estamos trabajando mkdir [rutaRemota] Crea una carpeta en el equipo remoto put [rutaLocal] [rutaRemota] Sube  un fichero o  archivo  desde  una  ruta  local  hasta  una ruta remota . o carpetas remotos. en pocas palabras.   El   [grp]  tiene que ser un Group ID chmod [opciones] [rutaRemota] Cambia   los   permisos   de   Lectura. ficheros." naturalmente siempre que usuario tenga permisos sobre la carpeta y su cuenta esté entre las de los que pueden hacer ssh. el protocolo SFTP permite una serie de operaciones sobre archivos. incluidas las subcarpetas y el contenido de éstas. es decir.. 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. [root@ localhost]# sftp ­o Port=[PuertoDeEscucha] usuarioRemoto@ipDelServidorRemoto Connecting   to   IPDelServidorRemoto. Ejemplo. copia la carpeta y todo su contenido. Copiando ficheros Protocol) a través de SFTP (Security File Transfer 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. .-Con la ayuda del comando “get” descargaremos el fichero nombrado “inventarioEnero.odt que se encuentra dentro la ruta “/tmp/Conta/” . Factor Integración.-Una vez autenticados con el servidor nos dará acceso a través de SFTP 4.249.60 Nombre del usuario remoto ­> adminlog Puerto de autenticacion ­> 34567 Ruta del Recurso Remoto ­> /tmp/Conta Solución: 1.174 -   rutaDelRecursoLocal  .odt 6. el usuario remoto y la IP del servidor remoto 2. nos ha pedido copiar el fichero inventarioEnero.odt” dentro de la carpeta “home” de nuestro sistema Subir o enviar archivos o carpetas a un equipo remoto Para subir archivos.25.­Para poder traer la copia desde servidor remoto hacia nuestro equipo habrá  que especificar el puerto de escucha. para ello nos ha proporcionado los siguientes datos: IP del servidor remoto ­> 207.-Dentro de la carpeta “Conta” aplicar el comando “dir” para visualizar el contenido de la misma sftp>dir  inventarioEnero.. 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. en este caso la contraseña del usuario “adminlog” 3. solo deberá especificar el puerto por el cual requiere autenticarse al servidor.odt inventarioMarzo. Ejemplo [root@   localhost   ]#scp   ­P[puertoDeEscucha] usuarioRemoto@ipDelServidorRemoto:rutaRemota Aunado a esto. para subir una carpeta tendrá que seguir la siguiente sintaxis: .pwd Imprime la ruta remota en la cual estamos trabajando exit Salimos de SFTP rename [rutaLocal] [rutaRemota] Renombra un un fichero remoto rmdir [rutaRemota] Borra una carpeta remota rm [rutaRemota] Borra un fichero remoto Ejemplo 3: La misma empresa.Nos moveremos entre directorios con la ayuda del comando “cd” hasta estar ubicados en “/tmp/Conta” 5.Nos pedirá autenticarnos con la contraseña del usuario remoto.odt inventarioFebrero. 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..html 100% 0.249...html 100% 0. [root@ localhost]# sftp ­o Port=[PuertoDeEscucha] usuarioRemoto@ipDelServidorRemoto El siguiente paso sera autenticarnos con la contraseña del usuario remoto Connecting to IPDelServidorRemoto.html 100% 0.0KB/s 25:00 actualizacion6.25.html 100% 0.25.html 100% 0.html 100% 0.   El   [grp]  tiene que ser un Group ID .249.0KB/s 30:00 actualizacion7.html 100% 0.0KB/s       05:00   actualizacion2.el puerto de escucha.0KB/s 31:00 actualizacion8. Actualizacion1. para ello nos ha proporcionado los siguientes datos: IP del servidor remoto ­> 207.0KB/s 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. [root@ localhost]# sftp ­o Port=[PuertoDeEscucha] usuarioRemoto@ipDelServidorRemoto Connecting   to   IPDelServidorRemoto.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..0KB/s 15:00 actualizacion4.175 - .0KB/s 15:00 actualizacion5.0KB/s 07:00 actualizacion3. 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 [email protected]       100%                  0. el usuario remoto. Ejemplo.  usuarioRemoto@IPDelServidorRemoto's password: xxxxxxxxxxxxxxxxxxxxxx Una vez dentro del servidor solo bastara ejecutar el comando “put” para descargar algún fichero o archivo.[root@   localhost   ]#scp   ­P[puertoDeEscucha] usuarioRemoto@ipDelServidorRemoto:rutaRemota   ­r   directorioLocal  Ejemplo 4: Se nos ha pedido subir una actualización referente a la pagina web de la empresa . solo deberá especificar el puerto por el cual requiere autenticarse al servidor.   usuarioRemoto@IPDelServidorRemoto's   password:  xxxxxxxxxxxxxxxxxxxxxx sftp> put recursoLocal  La siguiente tabla explica mas a detalle los comandos que pueden ser utilizados con SFTP: cd [rutaRemota] Cambia de directorio dentro del servidor remoto lcd [rutaLocal] Cambia de directorio en el equipo local chgrp [grp] [rutaRemota] Cambia   el   grupo   de   trabajo   de   un   fichero   remoto. Nos pedirá autenticarnos con la contraseña del 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: 1.   Escritura   o   de  Ejecución a un fichero remoto chown [own] [rutaRemota] Cambia   el   grupo   de   trabajo   de   un   fichero   remoto.176 - . el usuario remoto y la IP del servidor remoto 2.­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.­   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. 8.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.-Una vez autenticados con el servidor nos dará acceso a través de SFTP 4.Para subir este directorio al servidor remoto habrá que especificar el puerto de escucha.chmod [opciones] [rutaRemota] Cambia   los   permisos   de   Lectura.249. en este caso la contraseña del usuario “adminlog” 3..­ Por ultimo teclee la palabra exit para salir del “SFTP” sftp> exit [root@localhost ] .Nos moveremos entre directorios con la ayuda del comando “cd” hasta estar ubicados en “/tmp/Conta” 5. para ello nos ha proporcionado los siguientes datos: IP del servidor remoto ­> 207..25.. pero esta vez sera usando SFTP.   El   [own]  tiene que ser un User ID get [rutaRemota] [rutaLocal] Copia un recurso remoto en un equipo local lmkdir [rutaLocal] Crea una carpeta en el equipo local lpwd Imprime la ruta local en la cual estamos trabajando mkdir [rutaRemota] Crea una carpeta en el equipo remoto put [rutaLocal] [rutaRemota] Sube  un fichero o  archivo  desde  una  ruta  local  hasta  una ruta remota pwd Imprime la ruta remota en la cual estamos trabajando exit Salimos de SFTP rename [rutaLocal] [rutaRemota] Renombra un un fichero remoto rmdir [rutaRemota] Borra una carpeta remota rm [rutaRemota] Borra un fichero remoto Ejemplo 5: Se nos ha pedido subir una actualización referente a la pagina web de la empresa . net/web/comunidad/base-deconocimiento/-/wiki/Base+de+Conocimiento/Certificaci%C3%B3n+LPI Agradecemos el aporte de la Comunidad http://www.5 México.org/licenses/by-nc-sa/2.net Este obra está bajo una licencia Creative Commons Atribución-NoComercial-CompartirIgual 2.Fuente Original: http://www. http://creativecommons.linuxparatodos.linuxparatodos.177 - .5/mx/ .


Comments

Copyright © 2024 UPDOCS Inc.