Sofware Libre y GPL Introducción a Unix y Linux Comandos básicos

Anuncio
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} [email protected]
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
Descargar