PRIMERA SESIÓN Sofware Libre y GPL Introducción a Unix y Linux Comandos básicos del curso 1 VISIÓN + SOFTWARE LIBRE (I) ❖ Hay proyectos cercanos con software libre: ❖ Extremadura: Linex. ❖ Madrid: Max. ❖ Andalucía: GuadaLinex. ❖ Valencia: Lliurex. ❖ Universidad de Murcia: Softla y Caldum. ❖ Otros: http://www.libroblanco.com. 2 VISIÓN + SOFTWARE LIBRE (II) ❖ También otras Universidades están con el S.L. Por ejemplo la UPC distribuye entre los alumnos matriculados para el nuevo curso un CD-ROM Linux Live-CD con programas libres y gratuitos con los que podrán seguir todas las materias que se impartan en sus estudios. ❖ La UPC creará el próximo curso la Cátedra de Programación Libre. CIBERP@IS 9 DE SEPTIEMBRE DE 2004 3 VISIÓN + SOFTWARE LIBRE (III) ❖ El software libre permite ahorrar dinero: ❖ Linex posibilitó un ahorro de 30 millones de euros. ❖ Según HispaLinux la Administraciones Pública Española podría ahorrarse 300 millones de euros. 4 VISIÓN + SOFTWARE LIBRE (IV) ❖ El modelo tradicional es: pago por licencias y servicios. ❖ En Brasil, de los 3000 millones de dólares anuales de la industria informática unos 1000 millones se pagan en concepto de licencias. ❖ Un nuevo modelo de negocio: con el software libre no se pagan licencias y el ahorro revierte en formación, servicios personalizados y consultoría de empresas locales. 5 VISIÓN + SOFTWARE LIBRE (V) ❖ Hay gestos de aproximación. Por ejemplo Microsoft dentro del proyecto Shared Source Initiative se suma al código abierto, dejando en sourceforge dos programas: ❖ Windows Template Library (WLT) para crear interfaces gráficas. Licencia CPL ❖ Windows Installer XML (WiX) para crear paquetes de instalación basados en XML. ❖ También se apuntan IBM, SUN, etc. 6 VISIÓN + SOFTWARE LIBRE (VI) ❖ Con el software libre no hay problemas con la piratería. Según la BSA durante 2003 el índice de piratería en España se mantiene entre los cuatro primeros de Europa con un 44%, con pérdidas que suponen 421 millones de euros. Casi uno de cada dos programas que se instalan en nuestro país es ilegal. La piratería conduce a una menor contribución del TI al PIB, menor inversión en I+D y pérdida de puestos de trabajo. REVISTA PC WORLD SEPTIEMBRE 2004 7 VISIÓN ­ SOFTWARE LIBRE ❖ No es fácil migrar aplicaciones en explotación. ❖ Reticencias de los usuarios. ❖ Interfaces poco amigables. ❖ Escasez drivers actualizados. ❖ Necesidad de formación. ❖ No hay soporte técnico. ❖ ¿Se os ocurren otras? 8 FILOSOFIA SOFTWARE LIBRE ❖ El software libre es una filosofía: ❖ Todos tenemos derecho a que el conocimiento sea libre y el software como idea, accesible a todos. ❖ Todos tenemos la libertad para estudiar y manipular el software. ❖ Se intenta aportar desinteresadamente software y documentación a la sociedad y establecer colaboraciones entre voluntarios (Internet es un ejemplo). 9 FILOSOFIA SOFTWARE LIBRE ❖ El software libre es la antítesis del software propietario. ❖ El software propietario fomenta: ✗ La depencia tecnológica. ✗ Ocultación de software y conocimiento. ✗ Las licencias. ✗ Las patentes y la propiedad intelectual/industrial. BUENO, PERO TODO ESTO ES LEGAL 10 LEGAL NO ES IGUAL A JUSTO Los calores del verano no sirvieron de excusa a 51 mujeres que corren el peligro de ser azotadas tras haber sido detenidas en Irán por “llevar el velo mal puesto”, algo considerado por el régimen islámico como “una inmoralidad pública”. Las detenidas han sido remitidas a las autoridades judiciales de las localidades de Gilan y Rasht para que sean juzgadas por no llevar el velo islámico sobre la cabeza de forma adecuada, de acuerdo con la normativa establecida tras la Revolución Islámica de 1979, liderada por el fundador del régimen teocrático, el ayatolá Jomeini. DIARIO LA VERDAD – 7 DE AGOSTO DE 2004 11 LAS COMISIONES BANCARIAS Un estudio de la Asociación de Usuarios de Bancos, Cajas y Seguros (Adicae) afirma que los españoles pagan al año una media de 176€ en comisiones bancarias. En el libro de tarifas de un banco se recogen todos los conceptos por los que un banco puede cobrarnos. El banco de España las recoge en http://www.bde.es/tipos/comisiones.htm. Si se consulta el libro de tarifas se observan que los bancos tienen fijadas comisiones para todas las situaciones posibles. Por ahora la entidad no cobra algunos servicios, pero se reserva la posibilidad de hacerlo. DIARIO LA VERDAD – 7 DE AGOSTO DE 2004 12 DEPENCIA TECNOLOGICA ❖ Con la dependencia tecnológica somos simples espectadores frente al cambio de estándares y tecnologías por empresas privadas. ❖ Desde Europa se fomenta la Sociedad de la Información para que las empresas no pierdan el tren tecnológico y los ciudadanos no sean “analfabetos tecnológicos”. ❖ Hoy en día nadie duda de la necesidad de inversión en I+D. 13 OCULTISMO ❖ Si tengo una idea buena otro la puede copiar, por tanto debo protegerla con una patente. ❖ Si hago una “killer application” debo ocultar los detalles para evitar competencia. ❖ Si alguien quiere conocimiento antes debe pagar, pues nada es gratis. ❖ Con esta actitud una empresa consigue una posición dominante en el mercado y aumenta la depencia tecnológica. 14 RIESGOS POR NO OCULTAR ❖ Según un estudio de la firma Gartner los dispositivos de bolsillo que usan USB y FireWire presentan riesgos para los negocios porque introducen virus o sirven para robar datos corporativos. Aconseja prohibir su uso a los empleados con acceso directo a las redes corporativas y para proteger la propiedad intelectual recomienda hacer uso de tecnología de gestión de derechos de la propiedad. REVISTA PC WORLD SEPTIEMBRE 2004 15 LICENCIAS ❖ Basta leer el fichero Eula.txt de MS Windows©: ✗ Licencia para un único dispositivo. ✗ No puedo venderlo a un amiguete. ✗ No hay garantías. ✗ No hay responsabilidad por daños emergentes. ✗ No permite modificarlo a mis necesidades. ✗ No permite arreglar fallos => debemos esperar la modificación por el propietario. 16 EL GRAN HERMANO 17 PATENTES ❖ El dinero va a la casa matriz. Samsung Barcelona: el pago de royalties a Corea ha supuesto el doble de los costes salariales y hasta veinte veces los beneficios (El País 12-2-2004). ❖ Controversia con las patentes de software en la Comisión Europea. ❖ Una patente es legal pero en ciertos casos es inmoral. Como ejemplo están los medicamentos contra la pandemia del SIDA y las luchas de estados como Sudáfrica y Brasil. 18 CUATRO LIBERTADES DEL SOFTWARE LIBRE ❖ Richard Stallman define cuatro libertades: ❖ Libertad para ejecutar el programa en cualquier sitio, con cualquier finalidad y para siempre. ❖ Libertad para estudiarlo y adaptarlo a nuestras necesidades => acceso al código fuente. ❖ Libertad de redistribución y colaboración. ❖ Libertad para mejorar el programa manteniendo accesible el código fuente. 19 GNU, GPL y FSF ❖ En 1984 Richard Stallman abandona el MIT y comienza el proyecto GNU (GNU's Not Unix). ❖ GNU desea proporcionar un conjunto de software de propósito general totalmente libre. ❖ Stallman creó la licencia GPL para velar por las cuatro libertades anteriores. ❖ Stallman fundó la Free Software Foundation (FSF) para conseguir fondos para el desarrollo y protección del software libre. 20 GNU General Public License (GPL) ❖ Permite la redistribución de fuentes y binarios. ❖ Permite realizar cualquier modificación. ❖ Sólo se puede integrar código GPL o similar. ❖ Si en el código se incluyen elementos con patente (por ej. algoritmo patentado) no puede ser GPL. ❖ Un código GPL nunca puede ser propietario. ❖ Pretende dar la propiedad del software a quien lo tiene y no al autor. ❖ No hay garantía (como licencia MS Windows©). 21 PROTECCION DE LA GPL ❖ Si un software libre se deja a la comunidad algún espabilado puede convertirlo en software privativo. ❖ Con el “copyleft” (antítesis del “copyright”) se protege el software GNU cuando se pone en el dominio público. ❖ Copyleft garantiza que cualquier distribuidor, con o sin cambios, debe dar la libertad de copiar y modificar el software. 22 Software con licencia GPL ❖ Compilador GCC y shell BASH. ❖ Editor de imágenes Gimp. ❖ Lector de correo evolution. ❖ Acceso a recursos SMB con Samba. ❖ Kernel de Linux. ❖ Utlidades de Gnome y KDE. ❖ Programas en el CD automatrícula 2004. 23 Un mundo de licencias (I) ❖ Desde el punto de vista del software libre hay dos tipos de licencias: las compatibles con la GPL y las incompatibles con la GPL. ❖ Licencias compatibles con la GPL: ❖ Con una licencia de dominio público el autor renuncia a todos sus derechos. ❖ La GNU Lesser General Public License (LGPL) permite el uso de software libre con software propietario. 24 Un mundo de licencias (II) ❖ Ejemplos de licencias LGPL son las librerías de Gnome y KDE. ❖ OpenOffice con licencia LGPL y SISSL (SUN). ❖ Un programa freeware se puede puede utilizar y redistribuir gratuitamente, pero el autor no facilita el código fuente. ❖ Una licencia de código abierto hace énfasis en la disponibilidad de código fuente. ❖ La licencia BSD es incompatible con la GPL. 25 Un mundo de licencias (III) ❖ La licencia Berkeley Software Distribution (BSD) ✗ Obliga a citar los autores. ✗ Permite (sin obligar) la distribución binaria y de código fuente. ✗ Permite realizar modificaciones e integraciones casi sin restricciones. ✗ Por contra, una modificación (versión) puede convertirse en propietaria. ✔ Ejemplos: openssh, openssl, tcl, bind, pam 26 Un mundo de licencias (IV) ❖ Licencias parecidas a BSD: ❖ Familia *BSD (por ejemplo FreeBSD). ❖ MacOS X. ❖ Apache Software License para el servidor web apache. ❖ XFree86 License para el gestor gráfico X Window. ❖ Desde la versión 4.4. XFree86 4.4 no es GPL. Se ha creado XORG. 27 Un mundo de licencias (V) ❖ La IBM Public License (IPL) es compatible con la licencia GPL porque establece unos requisitos no presentes en la la GPL, como por ejemplo que se den ciertas licencias sobre patentes. ❖ La Common Public License (CPL) es una extensión de la IPL. ❖ El software de código abierto Windows Template Library (WLT) para crear interfaces gráficas tiene licencia CPL. 28 PARA PROFUNDIZAR ❖ Filosofía del Proyecto GNU. www.gnu.org/philosophy/philosophy.es.html ❖ Introducción al software libre. www.uoc.edu/masters/softwarelibre/esp/materials/libre.pdf ❖ Software libre en el sector público. www.uoc.edu/dt/20327/20237.pdf 29 ¿HACEMOS UN DESCANSO? 5 minutos 30 HISTORIA DE UNIX ❖ Nace en 1972 en los Bell Labs de AT&T. Sus padres son Ken Thompson y Dennis Ritchie. ❖ Las universidades tenían acceso al código fuente. ❖ La Universidad de Berkeley añade nuevas funcionalidades (como TCP/IP) => Unix BSD. ❖ AT&T cambia su actitud por ocultismo y licencias. Aparecen Unix comerciales. ❖ Dos ramas: BSD (SunOS) y System V (Solaris). 31 CARACTERISTICAS DE UNIX (I) ❖ Portable. ❖ Conjunto de programas sencillos que hacen bien su cometido. ❖ No hacer un programa grande. Mejor combinar varios programas para conseguir el resultado. Ej: cat /etc/termcap | pr | lpr ❖ Multiusuario y multitarea. ❖ Es necesaria una cuenta para acceder al sistema. 32 CARACTERISTICAS DE UNIX (II) ❖ Distinción entre mayúsculas y minúsculas. ❖ Sistema de ficheros jerárquico (se empieza desde la raíz /). ❖ Los sistemas de ficheros (por ejemplo un CD) se montan en directorios. No hay A:, C:, D: ❖ Hay permisos de acceso a los ficheros. ❖ Permite automatizar tareas con scripts y cron. ❖ Eficiente, robusto y seguro. 33 HISTORIA DE LINUX ❖ Andrew Tanenbaum crea MINIX para que sus alumnos tengan acceso al código fuente. ❖ En 1991 Linus Torvalds crea el kernel 0.0.1 de Linux y adapta bash y gcc (ambos con licencia GPL) ofreciéndolos en comp.os.minix. ❖ Linux es la combinación del kernel y software GPL por ello se denomina GNU/Linux. ❖ Miles de voluntarios contribuyen al desarrollo de Linux apareciendo diferentes distribuciones. 34 DISTRIBUCIONES LINUX ❖ Todas las distribuciones tienen en común el kernel. La última versión está disponible en: http://www.kernel.org ❖ Numeración del kernel xx.yy.zz. xx es la versión principal. yy par (producción), yy impar (desarrollo). zz versión dentro de la serie. ❖ Cada distribución acompaña al kernel con unas utilidades dotando a la distribución de un estilo. 35 DEBIAN GNU/LINUX (I) ❖ En 1993 Ian Murdock comienza Debian. ❖ Debian es desarrollado por voluntarios. ❖ Distribución cercana a las tesis de Stallman. ❖ Existen categorías de software según la licencia y requisitos: main: cumplen Debian Free Software Guidelines. contrib: paquetes libres dependentes de otros no libres. non-free: paquetes no libres. 36 DEBIAN GNU/LINUX (II) non-US/main non-US/non-free: no pueden ser exportados fuera de EEUU por cuestiones de patentes o seguridad criptográfica. Las categorias se indican en /etc/apt/sources.list: deb http://ftp.debian.org/debian/ woody main non-free contrib ❖ Hay tres tipos: estable (woody), inestable (sid) y en pruebas (sarge). Woody tiene 4 sabores: vanilla, compact, idepci, bf24 (kernel 2.4). ❖ Formato de paquetes propio (.deb). 37 RED HAT LINUX ❖ Red Hat Software Inc. fué creada en 1994. ❖ Ha creado el estándar RPM Package Manager (RPM) de gestión de paquetes. ❖ En 1999 Red Hat sale a bolsa. ❖ Tras la versión 9 Red Hat ha orientado su estrategia a las empresas potenciando su Red Hat Enterprise Linux (RHEL no es gratuito). ❖ No hay soporte desde 30-4-2004 a R. H. 9. ❖ Proyecto Fedora. 38 ELEGIR UNA DISTRIBUCION ❖ Además tenemos Suse (de Novell), SUN Java Desktop System 2003, Mandrake, etc. ❖ Las aplicaciones condicionan la elección de una distribución. Por ejemplo, Oracle 10g y 9i está certificado para RHEL y Suse. ❖ Si disponemos de dinero podemos decantarnos por distribuciones de pago (RHEL, Suse, Mandrake, etc.) ❖ Debian no tiene coste y es muy estable. 39 CARACTERISTICAS DE LINUX ❖ Compatible POSIX. ❖ Kernel monolítico con módulos cargables dinámicamente. ❖ Multiplataforma y multiprocesador (SMP). Soporta arquitecturas de 64 bits. ❖ Dispone de miles de aplicaciones para convertir un equipo en una estación de trabajo personal, o de un grupo de trabajo o un servidor corporativo. ❖ Apoyo de IBM, Novell, SUN, etc. 40 WEBS DE INTERES ❖ http://www.google.es/linux ❖ http://www.linuxhq.com ❖ http://es.tldp.org ❖ http://linux.tucows.com ❖ http://www.yolinux.com ❖ http://libertonia.escomposlinux.org ❖ http://barrapunto.com ❖ http://sourceforge.net 41 DISPOSITIVOS ❖ /dev/hdx para discos IDE y /dev/sdx para SCSI. ❖ /dev/hda maestro en el primer canal IDE. ❖ /dev/hdb esclavo en el primer canal IDE. ❖ /dev/hdc maestro en el segundo canal IDE. ❖ /dev/hdd esclavo en el segundo canal IDE. ❖ /dev/sda primer disco de la controladora SCSI. ❖ /dev/sdb primer disco de la controladora SCSI. 42 SISTEMAS DE FICHEROS ❖ ext2: antiguo sistema de ficheros. ❖ ext3: sistema de ficheros desde versión 2.4. ❖ swap: espacio de intercambio. ❖ iso9660: para CDs. ❖ nfs: sistema de ficheros en red. ❖ smbfs: sistema de ficheros de red de Windows. ❖ dos, vfat: para MS-DOS y Windows 9x. ❖ ntfs: de NT, Windows 2000, XP. JFS (IBM) XFS (Silicon Graphics) 43 PARTICIONES ❖ Al instalar Linux se crean varias particiones. ❖ Podemos ver las particiones con fdisk /sbin/fdisk -l /dev/hda Dispositivo Inicio Principio Fin Bloques Id Sistema /dev/hda1 * 1 1282 10273567+ 7 HPFS/NTFS /dev/hda2 1283 1315 /dev/hda3 1316 2432 ❖ 265072+ 82 Linux swap 8972302+ 83 Linux Había una partición (/dev/hda1) y se crearon otras dos para Linux. 44 MONTAJE DE SISTEMAS DE FICHEROS ❖ /etc/fstab contiene los sistemas de ficheros: #Dispositivo Directorio Tipo Opciones dump fsck LABEL=/ / ext3 defaults 11 /dev/hda3 swap swap defaults 00 /dev/cdrom /mnt/cdrom iso9660 noauto,owner,user,ro 0 0 /dev/fd0 /mnt/floppy auto /dev/sda1 /mnt/pendrive auto ❖ noauto,owner 00 noauto,owner,user 00 Podemos montar el cd tecleando mount /mnt/cdrom /cdrom en Debian 45 MODOS DE ACCESO ❖ Cuando se termina se desmonta: umount /mnt/cdrom ❖ Para utilizar la disquetera empleamos mtools. ❖ Desde Gnome pinchamos botón derecho, seleccionamos Discos y podemos montar Disquetera Pendrive CDROM 46 EJEMPLOS DE MONTAJE ❖ Montamos partición NTFS mount -t ntfs /dev/hda1 /mnt ❖ Montamos la disquetera mount -t vfat /dev/fd0 /mnt ❖ Montamos el CD-ROM mount -t iso9660 -o ro /dev/hdb /mnt ❖ Montamos el pendrive mount -t vfat /dev/sda1 /mnt 47 SISTEMAS DE FICHEROS SOPORTADOS POR EL KERNEL ❖ Para conocer los sistemas de ficheros que es capaz de montar nuestra distribución vemos el fichero /etc/filesystems. cat /etc/filesystems ext2, ext3, nodev proc nodev devpts, iso9660, vfat, hfs ❖ Como no incluye soporte ntfs debemos compilar el núcleo dando soporte a este sistema de ficheros. 48 /proc ❖ El sistema de ficheros /proc lo gestiona el kernel. ❖ Podemos cambiar ciertos parámetros del kernel modificando el contenido de algunos ficheros o bien empleando /sbin/sysctl. ❖ Podemos ver los parámetros susceptibles de cambio tecleando /sbin/sysctl -a ❖ /sbin/sysctl utiliza el fichero /etc/sysctl.conf. 49 DIRECTORIOS BASICOS EN LINUX ❖ /home : directorios de las cuentas ❖ /bin y /usr/bin : comandos básicos de usuario ❖ /sbin y /usr/sbin : comandos para el root ❖ /etc : configuración del sistema ❖ /tmp : ficheros temporales ❖ /var : spool, logs, DNS, etc. ❖ /usr/local : aplicaciones nuevas ❖ /dev : dispositivos 50 SECCIONES DEL MANUAL (I) ❖ Para conocer las opciones de un comando podemos recurrir al manual. Ejemplo: man passwd ❖ (otra posibilidad es comando --help) Las páginas del manual están ordenadas en secciones: 1 comandos de usuario 5 formatos de ficheros 2 llamadas al sistema 6 juegos 3 llamadas libc 7 convenciones, macros 4 dispositivos 8 adm. del sistema 51 SECCIONES DEL MANUAL (II) ❖ Ejemplo: man 1 passwd man 5 passwd ❖ Linux establece un orden de búsqueda en las páginas del manual. /etc/manpath.config Debian /etc/man.config ❖ Red Hat Comandos de interés: apropos, whatis. 52 COMANDOS DE SESION variables de entorno en mayúsculas ❖ ^d abandona la sesión. ❖ exit, logout abandona la sesión (IGNOREEOF=1) ❖ who muestra los usuarios activos. ❖ su [-] cambia a otra cuenta. ❖ tty informa del terminal en uso. ❖ last muestra los últimos accesos al sistema. ❖ uname da información del sistema Linux. ❖ id muestra id y gid. 53 CAMBIANDO DE USUARIO ❖ Si no se realizan tareas de administración no es adecuado acceder siempre como root. Se aconseja accder como un usuario sin privilegios y hacer su -para convertirnos en root. Tras la tarea se termina con exit ❖ Se puede ejecutar un comando como root temporalmente su root -c “/sbin/fdisk -l /dev/hda” 54 COMANDOS EN MODO GRAFICO ❖ Gnome y KDE incluyen herramientas gráficas para la mayoría de comandos. Por ejemplo guname. 55 FICHEROS Y DIRECTORIOS (I) ❖ Es aconsejable conocer algunos comandos relacionados con ficheros y directorios: cp, mv, rm, ln, touch, mkdir, cd, pwd, rmdir ❖ Si trabajamos en entornos gráficos, con Nautilus y Konqueror podemos manipular fácilmente con el ratón ficheros y directorios. ❖ cp permite copiar ficheros. Ejemplos: cp /etc/hosts /tmp/hosts cp -pr /etc . 56 FICHEROS Y DIRECTORIOS (II) ❖ mkdir crea directorios. Ejemplos: mkdir prueba mkdir -p /tmp/a/b/c /tmp/aa/bb/cc ❖ mv renombra ficheros o cambia un fichero o directorio de lugar. Ejemplos: mv /tmp/a/b/c /tmp/a/b/cc mv /tmp/a/b/cc /tmp/aa 57 FICHEROS Y DIRECTORIOS (III) ❖ Para actualizar la fecha de modificación de un fichero se utiliza touch. Ejemplo: mkdir /tmp/1 ls -lt /tmp sleep 1m touch /tmp/1 mkdir /tmp/2 ls -lt /tmp ❖ Si no existe el fichero touch lo crea con tamaño cero. Si un programa falla porque necesita un fichero podemos crearlo con touch. 58 FICHEROS Y DIRECTORIOS (IV) ❖ Para compilar se utiliza la utilidad make. Esta orden es muy sensible a las fechas de los ficheros. #include <stdio.h> CC=gcc CFLAGS=-O2 int main() TARGETS=hola { all: hola printf("Hola mundo"); hola: hola.o exit(0); } ${CC} -o $@ ${CFLAGS} $@.o clean: hola.c M a k e f i l e -rm -rf *.o ${TARGETS} 59 FICHEROS Y DIRECTORIOS (V) make gcc -O2 -c -o hola.o hola.c gcc -o hola -O2 hola.o make make: no se hace nada para `all'. touch hola.c make 60 FICHEROS Y DIRECTORIOS (VI) ❖ Para borrar un fichero o directorio se usa rm: touch /tmp/nada rm -f /tmp/nada rm -rf /tmp/aa ❖ (rm -r equivale a rmdir -p) Los enlaces asocian un fichero o directorio a otro. ls -l /usr lrwxrwxrwx 7 root root ... tmp -> ../var/tmp 61 FICHEROS Y DIRECTORIOS (VII) ❖ Si nuestro disco duro se llena podemos poner un segundo disco (por ejemplo /dev/hdc), pasar un directorio (por ejemplo /usr/local) y crear un enlace: ln -s /disco2/usr/local /usr/local ❖ Lo anterior presupone que en /etc/fstab tenemos #Dispositivo Directorio Tipo Opciones dump fsck /dev/hdc1 ext3 defaults 1 /disco2 1 62 FICHEROS Y DIRECTORIOS (VIII) ❖ Tras desplazarnos unos instantes por la estructura de directorios quizá nos interese saber donde estamos. Para ello se utiliza la orden pwd. ❖ Para volver a nuestro directorio de trabajo basta teclear la orden cd (sin opciones). ❖ Pese a trabajar en entornos gráficos muchas veces se abre un terminal donde se ejecutan órdenes. Por consiguiente, debemos conocer el shell. 63 ¿HACEMOS OTRO DESCANSO? 5 minutos 64 SHELL BASH ❖ Los directorios /usr y /usr/bin están en el PATH echo $PATH ❖ (por eso no añadimos la ruta con ciertas órdenes) Hay otras variables de entorno, para verlas: env ❖ alias y funciones variables de entorno Las variables se especifican: ~ ~ para cada usuario: /,bashrc y /.bash_profile para todos los usuarios: /etc/bashrc y /etc/profile 65 ESTABLECIENDO VARIABLES (I) ❖ Poner una variable al estilo Bourne shell TMOUT=10 export TMOUT ❖ Cambiamos el prompt en una sola línea export PS1="[\d \w]\\$ " unset PS1 export PS1="[\u@\h \W]\\$ " 66 ESTABLECIENDO VARIABLES (II) ❖ Si salimos de la sesión se pierden las variables. ❖ Para tenerlas de forma permanente se deben ~ incluir en el fichero /.bash_profile, por ejemplo export JAVA_HOME=/usr/java/j2sdk1.4.2_04 ❖ ~ Si estamos editando el fichero /.bash_profile no es necesario salir y volver a entrar en la sesión. Para este cometido se utiliza el comando . ~ . /.bash_profile 67 VENTANAS REMOTAS ❖ La variable de entorno DISPLAY sirve para trabajar de forma remota con aplicaciones gráficas X-Window. [mipc]$ xhost +servidor.um.es [mipc]$ ssh -l alumno servidor.um.es [servidor]$ export DISPLAY=mipc.um.es:0 [servidor]$ xterm & ❖ Otra posibilidad: X -query servidor :1 (CTRL+ALT+F8) 68 VARIABLES ESPECIALES ❖ $0 argumento 0 (orden) ❖ $1 primer argumento ❖ $* todos los argumentos ❖ $# número de argumentos ❖ $$ número de proceso actual se utilizan en scripts echo $$ ❖ $? resultado de la ejecución de un comando mkdir -p /a/b/c ; echo $? 69 ALIAS Y FUNCIONES ❖ Los alias permiten crear un comando a la carta o dar unas opciones por defecto alias alias 'dir=ls' ❖ ~ /.bashrc alias 'cp=cp -i' Las funciones son pequeños programas tarc () { tar cvzf $1.tgz $1; } tarx () { tar xvzf $1; } 70 REPETICION DE ORDENES ❖ Las órdenes tecleadas están en ~/.bash_history. Con y repetimos los comandos previos. ❖ Para ver las órdenes se usa history 10 ls /etc/passwd 11 ls /etc/shadow 12 cat /etc/passwd ❖ !número o !cadena para repetir una orden !12 !ls (repite la orden 11) 71 OTRAS POSIBILIDADES ❖ Pulsando el tabulador se completa la orden o el nombre del fichero o directorio. ❖ CTRL+L borra la pantalla. ❖ SHIFT+REPAG muestra pantalla anterior. ❖ SHIFT+AVPAG muestra pantalla inferior. ❖ CTRL+U borra todos los caracteres anteriores al cursor. ❖ CTRL+W elimina la última palabra 72 MODOS DE EJECUCION ❖ El shell permite ejecutar comandos. ❖ Modos de ejecución: cat /etc/termcap | less (tubería) cd /etc ; ls -l rc.d ; cd /tmp (secuencial) cd /etc ; (ls -l rc.d ; cd /tmp) (subshell) ls -ltR / & (background) ls -l /dev/sda1 && ls -l /dev/sda2 (and) ls -l /dev/sda100 || ls -l /dev/sda2 (or) 73 EJEMPLOS DE TUBERIAS ❖ Comando sort permite ordenar la salida ls -s /dev | sort -n | less ❖ ¿Cuantos dispositivos tienen tamaño cero? utilizamos los filtros grep y wc ls -s /dev | sort -n | grep “0 “ | wc -l ❖ Lenguaje awk es muy útil Ayuda comando: comando --help man comando ls -s /dev | awk '$1==0 {cero++} END {print cero}' ❖ PERL es aconsejable para administradores. 74 MAS EJEMPLOS ❖ Comando find permite buscar ficheros date +%r ; find / -name find -print ; date +%r ❖ Si no deseamos esperar se ejecuta en background find / -name find -print & find permite hacer más cosas (cd /etc ; find . -name hosts -exec cat {} \;) ; pwd ❖ Comando test chequea ficheros y compara valores test -d /etc && cd /etc ; pwd 75 METACARACTERES ❖ El shell permite metacaracteres: * cualquier cadena find / -name “*gnome*” -print ? cualquier carácter ls /usr/bin/?? [rango] un carácter del rango cd /usr/bin ; ls -1 | grep “ps[f-u]*” cd /usr/bin ; ls -1 | grep “^[aeiou]” 76 REDIRECCION ❖ Cuando ejecutamos el comando find nos aparecen mensajes de error (por falta de permisos). Para evitarlo se redirecciona la entrada y salida cat < /etc/host* (entrada) ls -laR > listado (salida) ls /root 2>/dev/null (salida de error) find / -name “pdf*” -print 2>/dev/null awk -F: '$3>500 {print $1}' /etc/passwd > users echo “En total `wc -l users`” >> users 77 LENGUAJE SHELL ❖ El shell dispone de un lenguaje de programación con estructuras if, case, for, while. Ejemplo: STRING=$"Checking root filesystem" ; echo $STRING initlog -c "fsck -T -a $fsckoptions /" man initlog rc=$? variable $? guarda resultado ejecución comando if [ $rc -gt 1 ]; then [ ] es equivalente a test echo “File system error" fi 78 EJEMPLO FOR cat <<fin >ejemplo_for Editores: #!/bin/sh vi, mcedit, for i in 1 3 5 7 9 joe, emacs, do etc. mkdir /tmp/$i done fin chmod +x ejemplo_for sh ./ejemplo_for ./ejemplo_for 79 EJEMPLO WHILE #!/bin/sh VALOR=$1 FIN=$2 while [ $VALOR -lt $FIN ] do echo $VALOR VALOR=`expr $VALOR + 1` done sh ./ejemplo_while 1 5 80 ¿PARA QUE SIRVE LO ANTERIOR? ❖ Para saber como arranca Linux: 1 Al prender el PC se carga el sector arranque y el gestor (LILO o GRUB) nos dice los S.O. disponibles. 2 Escogido Linux se carga el kernel, se monta / y se ejecuta /sbin/init (PID=1). 3 Red Hat: init ejecuta /etc/rc.d/rc.sysinit, monta / proc, se configuran los parámetros del kernel, se montan los sistemas de ficheros, se inicializan los dispositivos, etc. 81 NIVEL DE ARRANQUE 3 Debian: init ejecuta /etc/init.d/rcS y este ejecuta los scripts de /etc/rcS.d/S* y /etc/rc.boot/*. 4 init lee /etc/inittab para saber nivel arranque. 0 parada del sistema 4 no usado 1 monousuario 5 modo gráfico 2 multiusuario, sin NFS 6 reboot 3 multiusuario id:5:initdefault: 1:2345:respawn:/sbin/mingetty tty1 82 FINALIZANDO EL ARRANQUE 5 Se configura el nivel: se paran los servicios que empiezan por K y lanza servicios que comienzan por S (daemons). Todos son enlaces a /etc/init.d. 6 Se ejecutan los programas especificados en el fichero /etc/inittab (por ejemplo las consolas virtuales). 7 Red Hat: se ejecuta /etc/rc.d/rc.local. Debian: poner script en /etc/rc.boot o /etc/rcS.d (poniendo los enlaces con update-rc.d). 83 PARAMETROS SCRIPTS ❖ Los ficheros en /etc/init.d admiten parámetros en la invocación. Por ejemplo: ❖ /etc/init.d/sshd start (lanza servicio SSH) ❖ /etc/init.d/sshd stop (para servicio SSH) ❖ /etc/init.d/sshd restart (para y lanza SSH) ❖ /etc/init.d/sshd reload (lee ficheros configuración) ❖ /etc/init.d/sshd status (muestra estado) 84 VEAMOS UN SCRIPT ❖ El fichero /etc/rc.d/S10network activa las interfaces de red. Una parte puede ser: . /etc/sysconfig/network pone var. necesarias [ "${NETWORKING}" = "no" ] && exit 0 case "$1" in start) echo "Bringing up loopback interface: " ./ifup ifcfg-lo 85 EJERCICIOS SHELL ❖ El comando ps muestra los procesos del sistema. El comando touch modifica fecha de acceso y si no existe el fichero lo crea. El comando mv renombra un fichero. 1 Descubra todos los comandos (con todos sus argumentos) ejecutados como root. 2 Directorios y subdirectorios en /var/log. 3 Cree tres ficheros denominados imagen1.gif, imagen2.gif e imagen3.gif. Utilize awk para cambiar la extensión .gif por .jpg. 86 ¿HACEMOS UNA DESCANSO? 5 minutos 87 SOLUCIONES EJERCICIOS SHELL 1 ps -auxww | grep root | awk '{print $11}' ps -fu root 2 find /var/log -type d -print 3 touch imagen1.gif touch imagen2.gif touch imagen2.gif ls *.gif | awk -F. '{print “mv”,$n,$1”.jpg”' | sh ❖ Con awk hemos indicado el comando y los argumentos. Tras ello se pasa al shell. 88 UID Y /ETC/PASSWD ❖ Las cuentas del sistema están en /etc/passwd alumno:x:510:100:Alumno:/home/alumno:/bin/bash ❖ 510 es el uid (identificador de usuario) ❖ 100 es el gid (identificador de grupo) ❖ Alumno es información de la cuenta (GECOS) ❖ /home/alumno es su directorio de trabajo ❖ /bin/bash es el shell asignado. 89 CAMBIOS POSIBLES alumno:x:510:100:Alumno:/home/alumno:/bin/bash ❖ chfn cambia la información de la cuenta chfn -f “Alumno del curso” alumno ❖ chsh cambia el shell chsh -s /bin/csh alumno ❖ La clave se cambia con el comando passwd. ❖ usermod (comando para root) puede cambiar todos los campos. 90 GID Y PERMISOS ❖ Los grupos están en /etc/group users:x:100: aquí se indica el grupo secundario comando id muestra grupo primario y secundarios ❖ ¿Y la clave donde está? en /etc/shadow -r-------- 1 root root 1226 oct 20 2003 /etc/shadow ❖ Permisos r-- para la cuenta root ❖ Permisos --- para el grupo root ❖ Permisos --- para el resto (nosotros) r lectura w escritura x ejecución 91 PERMISOS EN NUESTRO HOME ❖ ¿Y qué permisos tenemos en nuestro directorio? ls -ld $HOME drwx------ 3 alumno users ... /home/alumno ❖ Como propietarios podemos dar/quitar permisos chmod u=rwx,g=r--,o=--- /home/alumno chmod 740 /home/alumno (octal) ❖ Otros permisos r permite ls w crear ficheros x permite cd set uid bit (s), set gid bit (s) y sticky bit (t). 92 TIPOS DE FICHEROS (I) ❖ El tipo aparece al principio de un ls -l. Tipos: - fichero plano -rw------- /etc/lilo.conf d directorio drwxr-xr-x /bin l enlace simbólico lrwxrwxrwx /usr/tmp-> ../var/tmp b fichero de bloques brw-rw---- /dev/hda c fichero de caracteres crw------- /dev/tty1 s socket srwx------ /dev/gpmctl p tubería prw------- /dev/initctl 93 TIPOS DE FICHEROS (II) ❖ La extensión de un fichero no determina su tipo. ❖ file nos dice el tipo de fichero. echo “nada” > vacio.jpg ; file vacio.jpg ❖ Los ficheros planos pueden ser de texto o binarios. Los ficheros binarios necesitan una aplicación para visualizarlos. Los ficheros de texto pueden visualizarse con las utilidades more, cat y less. cat /boot/vmlinuz ; reset resetea terminal 94 MODULOS ❖ El kernel permite cargar y descargar módulos. Así, en la secuencia de arranque se carga el módulo correspondiente a la tarjeta de red. ❖ Para ver los módulos empleamos lsmod. La cuenta root puede utilizar insmod y rmmod. ❖ En Red Hat se tiene un fichero /etc/modules.conf con los módulos a cargar. ❖ En Debian se debe utilizar el comando modconf para cargar y descargar módulos. 95 LIBRERIAS ❖ ldd nos dice las dependencias: ldd /bin/ls ❖ LD_LIBRARY_PATH especifica los directorios donde buscar librerías. Ver /etc/ld.so.conf. ❖ strings muestra cadenas de un fichero binario strings /bin/gawk ❖ strip quita símbolos de un fichero binario file /bin/gawk (243k not stripped) Red Hat 7.3 96 DIFERENCIAS ENTRE ARCHIVOS cp /bin/gawk ~ ; strip ~/gawk file ~/gawk (221k stripped) ❖ Red Hat 7.3 xargs y find permiten buscar estos ficheros find / -print | xargs file | grep “not stripped” ❖ Con diff vemos los cambios entre ficheros hola don pepito hola adios don jose fichero1 fichero2 97 PARCHEO ❖ Obtenemos diferencias en formato ed diff -e fichero2 fichero1 > parche ❖ Se parchea para tener dos ficheros iguales patch -e fichero2 parche ❖ patch se utiliza para aplicar parches a ficheros de código fuente. Normalmente el formato es patch -p0 <parche 98 CONTROL DE RECURSOS (I) ❖ Para saber el espacio disponible: free -m memoria (ver /proc/meminfo) df -h disco ❖ Para conocer el tiempo activo y carga del sistema uptime (ver /proc/loadavg) 11:10 up 24 min, 2 users, load average:1.75, 0.90, 0.53 hora en activo usuarios carga 1 5 15 min 99 CONTROL DE RECURSOS (II) ❖ iostat muestra estadísticas de E/S. Por ejemplo: iostat -d 1 10 ; iostat -c 1 10 ❖ mpstat muestra estadísticas de CPU. mpstat 1 10 ❖ sar reporta la actividad del sistema. sar -n 1 10 ❖ vmstat reporta estadísticas de memoria virtual. vmstat -n 1 10 100 W Y TOP ❖ Orden w es una mezcla entre uptime y ps 2:17am up 1:09, 2 users, load average: 0.09, 0.18, 0.11 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT alfonso pts/0 :0 1:08am 0.00s 0.19s 0.00s w alfonso pts/1 :0 1:08am 6:19 0.23s 0.23s bash ❖ top muestra uso de la CPU. Puede ser interactivo o no. Por ejemplo, monitorizar durante cinco segundos el proceso syslogd top -n 5 -p `ps -C syslogd -o pid=` 101 TOP 2:10am up 1:03, 2 users, load average: 0,13, 0,09, 0,05 78 processes: 76 sleeping, 2 running, 0 zombie, 0 stopped CPU states: 6,2% user, 1,1% system, 0,0% nice, 92,6% idle Mem: 247532K av, 241296K used, 6236K free, 0K shrd, 21624K buff Swap: 265064K av, 40812K used, 224252K free 112060K cached PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND 2220 alumno 15 0 1012 1012 800 R 472 428 408 S 1,9 0,4 0:00 top 1 root 15 0 0,0 0,1 0:04 init 2 root 15 0 0 0 0 SW 0,0 0,0 0:00 keventd 3 root 15 0 0 0 0 RW 0,0 0,0 0:00 kapmd 102 ALGUNOS CAMPOS TOP ❖ PRI es la prioridad. ❖ NI es la prioridad. Un valor – es + prioridad. ❖ SIZE tamaño del proceso y su pila. ❖ RSS memoria física usada por el proceso. ❖ SHARE cantidad de memoria compartida. ❖ STAT estado. R (runnable), S (sleeping), D (IO), Z (zombie), T (stopped), N (low priority). Algunos valores el administrador los limita en /etc/security/limits.conf o con ulimit. 103 NICE Y RENICE ❖ Los procesos tienen una prioridad que va desde -20 (la mayor) hasta 19 (la menor). ps -eo "%p %n %c" | grep tuxracer 2447 0 tuxracer ❖ Se puede cambiar la prioridad cuando se lanza el comando (nice) o cuando está activo (renice): ps -ef | grep tuxracer | awk '{print $2}' | xargs renice +10 ps -eo "%p %n %c" | grep tuxracer 2447 10 tuxracer 104 CONSOLA DE MONITORIZACION ❖ La utilidad procinfo muestra información almacenada en el sistema de ficheros /proc. ❖ Si deseamos tener siempre en la consola virtual número 8 la información de procinfo, en el fichero /etc/inittab podemos poner: p8:23:respawn:/usr/bin/procinfo -biDn1 -F/dev/tty8 ❖ Para no reiniciar tecleamos: /sbin/telinit q 105 MATANDO PROCESOS ❖ Los procesos colgados se pueden eliminar kill -9 1 (1 es el proceso init) ❖ Para ver las señales disponibles kill -l ❖ kill se utiliza para forzar la lectura de un fichero de configuración tras un cambio. vi /etc/ssh/sshd_config kill -1 `ps -C sshd -o pid=` 106 LSOF ❖ Si deseamos conocer los ficheros abiertos por un proceso podemos utilizar lsof. top 688 root 15 0 972 788 788 S 0,0 0,3 0:00 sshd lsof -p 688 ❖ Algunos de los ficheros abiertos están asociados a las dependencias del programa ldd /usr/sbin/sshd 107 SERVICIOS EN MARCHA (I) ❖ En Red Hat tenemos el comando chkconfig /sbin/chkconfig –list ❖ En cualquier Linux podemos utilizar netstat -aptu (otra utilidad es nmap) ❖ Para quitar un servicio lanzados de forma autónoma, es decir, tienen un script en /etc/init.d chkconfig --del httpd (Red Hat) update-rc.d -f apache remove (Debian) 108 SERVICIOS EN MARCHA (II) ❖ Para poner un servicio autónomo chkconfig --level 345 httpd on (Red Hat) update-rc.d apache defaults (Debian) update-rc.d apache start 40 2 3 4 5 . stop 20 0 1 6 ❖ Los servicios controlados por inetd (Debian) están en /etc/inetd.conf. Los servicios controlados por xinetd (Red Hat) están en los ficheros del directorio /etc/xinetd.d. 109 OTROS PROGRAMAS EN MARCHA ❖ Unix dispone de la utilidad cron para ejecutar de forma periódica órdenes y scripts. 0 15 * * * /usr/bin/wall Nos vamos ❖ Linux dispone de estos directorios: /etc/cron.d /etc/cron.hourly /etc/cron.daily ❖ /etc/cron.weekly /etc/cron.monthly Si el PC no estuvo encendido anacron se encarga de ejecutar los scripts de los directorios. 110 DIAGNOSTICO DE RED ❖ Comandos útiles: ❖ ping hace un test de comunicación. ❖ traceroute muestra la ruta hasta un destino. ❖ nslookup consulta al DNS. ❖ ifconfig muestra/configura la tarjeta de red. ❖ netstat muestra estadísticas de red. ❖ route muestra/manipula tabla de rutas. ❖ tcpdump para ver el tráfico (sniffer). 111 PAQUETES EN REDHAT Ver paquetes instalados: rpm -qa Instalar un paquete: rpm -ivh paquete.rpm Actualizar un paquete: rpm -Uvh paquete.rpm Desinstalar un paquete: rpm -e paquete Información de un paquete instalado: rpm -qi paquete Inform. paquete no instalado: rpm -qpi paquete.rpm Ficheros de un paquete instalado: rpm -ql paquete Paquete asociado a un fichero: rpm -qf /etc/inittab 112 PAQUETES EN DEBIAN Ver paquetes instalados: dpkg -l Buscar un paquete: apt-cache search paquete Instalar un paquete: apt-get install paquete Actualizar paquetes: apt-get update; apt-get upgrade Desinstalar un paquete: dpkg -r paquete Información de un paquete: apt-cache show paquete Ficheros de un paquete instalado: dpkg -L paquete Paquete asociado a un fichero: dkpg -S /etc/inittab 113 COPIANDO LO BUENO ❖ La gestión de paquetes y actualizaciones en Debian es muy fácil y cómoda. ❖ La instalación de paquetes .rpm es muy tediosa debido a las dependencias entre paquetes. ❖ Existe la utilidad apt para Red Hat. ❖ Fedora también dispone de apt y yum. ❖ Red Hat y Fedora pueden utilizar up2date para actualizar paquetes instalados. ❖ Gnome Ximian dispone de Red Carpet. 114 INSTALACION DESDE CODIGO FUENTE ❖ Descomprimir el fichero tar xvzf programa.tgz ; cd programa ❖ Configurar el programa ./configure ❖ Compilarlo make ❖ Instalarlo make install 115 COMPILANDO E INSTALANDO tar xvzf netkit-ftp-0.10.tar.gz cd netkit-ftp-0.10 less README ./configure --prefix=/usr/local make make install /usr/local/bin/ftp 116 INSTALAR CLIENTE NOVELL (I) ❖ Se obtiene el programa novelclient y se instala rpm -ivh novelclient-0.86-3.i386.rpm ncpfs-2.2.4-1.i386.rpm \ ipxutils-2.2.4-1.i386.rpm ❖ En el fichero /etc/sysconfig/multicast se pone DEV=eth0 ❖ Se activa el enrutamiento multicast: /etc/init.d/multicast start ❖ Se lanza el programa novelclient 117 INSTALAR CLIENTE NOVELL (II) 118 INSTALAR CLIENTE NOVELL (III) 119 MAS INFORMACION ❖ Utilidades y herramientas. www.uoc.edu/masters/softwarelibre/esp/materials/Utilidades_herramientas.pdf ❖ Sistema operativo GNU/Linux básico. www.uoc.edu/masters/softwarelibre/esp/materials/libre_m2_baja.pdf ❖ Administración avanzada de GNU/Linux. www.uoc.edu/masters/softwarelibre/esp/materials/Admin_GNULinux.pdf 120