actividades microLINUX doble cara.pdf

download actividades microLINUX doble cara.pdf

of 88

Transcript of actividades microLINUX doble cara.pdf

  • 8/13/2019 actividades microLINUX doble cara.pdf

    1/88

    Taller de Linux

    Iniciacin al Sistema Operativo LINUX

    Actividades para la distribucinmicroLINUX _VEM_1.0

    Autor: Vicente Escudero Martnez

  • 8/13/2019 actividades microLINUX doble cara.pdf

    2/88

    2

    (En blanco)

  • 8/13/2019 actividades microLINUX doble cara.pdf

    3/88

    3

    ndice

    Recomendacin: Quien participe en este taller de LINUX debe realizar lasactividades segn el orden propuesto. Esto ayudar a asimilar sin dificultadlos aspectos de ndole terica y prctica tratados.------------------------------------------------------------------------------

    Actividad 0: Presentacin de microLINUX. Caractersticas ms relevantes.Pgina 5.

    Actividad 1: Acceso al sistema, ayuda en lnea, cambio de sesin ycierre. Pgina 7.

    Actividad 2: La consola. Intrprete de comandos (shell), comandosinternos (built-in), comandos externos y aplicaciones.Pgina 11.

    Actividad 3: Directorios de microLINUX. Creacin, posicin del usuario,cambio de ubicacin, consulta de contenido y borrado dedirectorios. Pgina 13.

    Actividad 4: Tratamiento de ficheros I. Tipos (cdigo de colores),creacin, consulta, copia y borrado de ficheros. Expansinde nombres de ficheros. Pgina 17.

    Actividad 5: Proceso de arranque. Ficheros de configuracin e inicio enmicroLINUX. Pgina 19.

    Actividad 6: Tratamiento de ficheros II. Edicin de ficheros de texto coneditor vi. Pgina 21.

    Actividad 7: Tratamiento de ficheros III. Enlaces fuerte y dbil.Pgina 23.

    Actividad 8: Tratamiento de ficheros IV. Bsqueda, ordenacin yextraccin selectiva de datos. Pgina 25.

    Actividad 9: Gestin de usuarios. Creacin, propiedades y borrado deusuarios. Cambio de usuario. Pgina 29.

    Actividad 10: Concepto de grupo. Creacin y borrado de grupos. Agregaciny eliminacin de usuarios a un grupo. Pgina 33.

    Actividad 11: Permisos en un sistema multiusuario. Pgina 37.

    Actividad 12: Procesos en LINUX. Estado de un proceso. Ejecucin en primer

    y segundo plano. Pgina 41.Actividad 13: Scripts I. Ficheros de usuario ejecutados por el intrprete

    de comandos. Variables de entorno. Pgina 45.

    Actividad 14: Scripts II. Ampliacin de comandos y Funciones. Pgina .

    Actividad 15: Scripts III. Estructuras de control. Pgina 53.

    Actividad 16: Informacin del kernel I. Datos suministrados durante elinicio del sistema. Pgina 61.

    Actividad 17: Informacin del kernel II. Datos del sistema en tiempo deejecucin. (/proc). Pgina 63.

    Actividad 18: Utilidades I. Comandos de informacin. Pgina 65.

  • 8/13/2019 actividades microLINUX doble cara.pdf

    4/88

    4

    Actividad 19: Utilidades II. Comandos de compresin y descompresin deficheros. Pgina 69.

    Actividad 20: Archivos especiales de dispositivos. Tipos y creacin.Pgina 73.

    Actividad 21: Sistema de ficheros. Montaje, sincronizacin y desmontado.

    Pgina 77.

    Actividad 22: Introduccin a la programacin estructurada. Lenguaje C.Pgina 81.

    Actividad 23: Aplicaciones de usuario: Compiladores. Tcc (Tiny CCompiler). Pgina 87.

    Fin de actividades.

  • 8/13/2019 actividades microLINUX doble cara.pdf

    5/88

    5

    Actividad 0: Presentacin de microLINUX. Caractersticas ms relevantes.

    Qu es microLINUX?-------------------

    MicroLINUX es una "Distribucin" basada en LINUX, es decir, un sistemaoperativo (S.O.) formado por un ncleo (kernel) encargado de las tareas a ms

    bajo nivel (cercanas al hardware):

    - Servicios de gestin de memoria- Gestin de procesos- Control de las operaciones de E/S, etctera

    ms un conjunto de aplicaciones:

    - Entorno de trabajo (intrprete de comandos -shell-)- Administracin de usuarios- Gestin del sistema de ficheros- Utilidades orientadas a ficheros- Desarrollo: Compilador C

    Caractersticas---------------

    Al tratarse de una distribucin suminist rada en un disquete, sucontenido est fuertemente limitado por cuestin de espacio de almacenamiento.Esto ha obligado a prescindir de todo elemento grfico as como deaplicaciones con un tamao elevado.

    Sin embargo microLINUX sintetiza las cualidades propias de un sistemabasado en LINUX:

    - Es multitarea

    - Es multiusuario- Es de libre distribucin

    Requerimientos Hardware-----------------------

    MicroLINUX puede utilizar casi cualquier PC con microprocesador de lafamilia 80x86 equivalente.

    Est comprobado su correcto funcionamiento en un 486 DX a 40MHz y con 8Mb de memoria RAM. Aunque puede funcionar con un 386 y coprocesadormatemtico.

    Intenciones-----------

    Probablemente desanime el hecho de que al arrancar microLINUX nosencontremos con un S.O. cuyo aspecto espartano (modo consola) nos recuerde alprehistrico MS-DOS y pensemos que se trata de un clon.

    Que no cunda el pnico. Esta distribucin est pensada para serutilizada por aquellas personas que quieren dar sus primeros pasos en LINUXsin temor a romper algo en el ordenador. Por otro lado todo lo que aqu seaprenda podr manejarse en cualquier distribucin basada en LINUX.Aunque algn comando o aplicacin tenga un nombre diferente lo importante essaber qu ofrece LINUX y cmo puede el usuario hacer uso de ello.

  • 8/13/2019 actividades microLINUX doble cara.pdf

    6/88

    6

    (En blanco)

  • 8/13/2019 actividades microLINUX doble cara.pdf

    7/88

    7

    Actividad 1: Acceso al sistema, ayuda en lnea, cambio de sesin y cierre.

    Pantalla de inicio------------------

    Al arrancar microLINUX el usuario encuentra esta pantalla de inicio:

    +-------------------------------------------------------------------------- +| Bienvenido a microLINUX_VEM versin 1.0 |+-------------------------------------------------------------------------- +|Para comenzar: [microLINUX] login: root [Intro] || + -------------------+| | Ayuda de comandos || Ms informacin con: ayuda.sh | || -------- | #[comando] --help || | ||Hay cuatro consolas, usar [Alt]+[Fn] (donde n 1...4) | Acaba microLINUX ||Reinicia el intrprete de comandos con: # exit | # halt ||Reinicia el sistema con: [Ctrl]+[Alt]+[Del] | # poweroff |+------------------------------------------------------ +-------------------+

    [microLINUX] login:

    Es importante que en la primera sesin el usuario dedique tiempo a leerel contenido de la ventana porque en ella aparece informacin til para sutrabajo con microLINUX.

    Acceso al sistema-----------------

    La primera accin consiste en identificarse al siste ma introduciendo 2valores:

    1) login2) contrasea

    El "login" es el nombre que identifica al usuario en la sesin actual(contexto del S.O.). Para garantizar su autenticidad debe suministrar lacontrasea asociada (cadena alfanumrica proporcionada por el administrador -root-).

    En la configuracin por defecto de microLINUX el nico usuario conacceso al sistema es el propio administrador (root) sin contrasea, es decir,que tras escribir la cadena "root" y pulsar intro (< -) pasar directamente alintrprete de comandos (shell) y podr empezar a interactuar con el S.O..

    Cuando el acceso ha sido satisfactorio aparece en pantalla:

    [microLINUX] login: rootSep 14 16:09:14 login [30]: root login on 'tty1'

    Busybox v0.60.5 (2004.04.26-10:10+000) Built-in Shell (ash)Enter 'help' for a list of built-in Commands.#

    Sealando que el usuario ha sido validado satisfactoriamente y elsistema est a la espera de rdenes.

    El significado de la informacin suministrada es el siguiente:

    - Sep 14 16:09:14 hora y fecha de acceso.

  • 8/13/2019 actividades microLINUX doble cara.pdf

    8/88

  • 8/13/2019 actividades microLINUX doble cara.pdf

    9/88

    9

    Hay dos caminos para salir del sistema:

    Terminar y apagar el ordenador usando uno de estos dos comandos:

    # halt# poweroff

    Reiniciar el computador:

    - pulsando la secuencia de teclas ++

    Al salir del sistema, por ejemplo con #halt, sucede una cadena deacontecimientos que van desde la entrada del comando hasta desconexin totaldel equipo. El S.O. nos informa puntualmente de cada situacin:

    #halt#swapoff /etc/fstab file missingthe system is going down now !!Sending SIGTERM to all processesSending SIGKILL to all processes

    the system is halted. Press Reset or turn off powerflushing ide devices: hda hdb hdcsystem haltedkernel panic: Attented to kill init !---------------------------------------------------

    T R A D U C C I O N---------------------------------------------------#halt#swapoff /etc/fstab buscando ficheroel sistema va a acabar ahora !!Enviando la seal de finalizacin (SIGTERM) a todos los procesosEnviando la seal de destruccin (SIGKILL) de todos los procesosEl sistema est detenido. Pulsa el botn de reset o apaga el equipo

    Cerrando dispositivos ide (unidades de almacenamiento) del sistema hdahdb hdc Sistema detenido.Mensaje de pnico del ncleo: Intentado destruir el proceso init !

    Ahora podemos apagar el equipo y sacar microLINUX de la disquetera.

    P R E C A U C I N-------------------

    NUNCA DEBE QUITARSE EL DISQUETE DE LA UNIDAD SIN INFORMAR AL S.O.ADECUADAMENTE, EN CASO CONTRARIO PODRAN DESTRUIRSE LOS DATOS QUE CONTIENE YQUEDAR INSERVIBLE. !!!

    Se recomienda encarecidamente seguir los pasos indicados para uncorrecto funcionamiento del sist ema.

    T A R E A S-----------

    1 Salir de la sesin actual e intentar entrar con otro nombre deusuario.

    2 Volver a entrar como root.

    3 Abrir 3 sesiones diferentes como root.

    4 Reiniciar el sistema (++).

  • 8/13/2019 actividades microLINUX doble cara.pdf

    10/88

    10

    5 Solicitar ayuda al sistema. Escribir #ayuda.sh (usar el tabuladorpara pasar pgina).

    6 Terminar la sesin y detener el sistema. #halt

  • 8/13/2019 actividades microLINUX doble cara.pdf

    11/88

    11

    Actividad 2: La consola. Intrprete de comandos (shell), comandos internos(buil-in), comandos externos y aplicaciones.

    El concepto de consola----------------------

    Entendemos por consola como la interfaz, en modo texto, entre un usuario

    y el sistema operativo por donde enviar las rdenes y recibir los resultadosde las mismas.

    En un sistema de ordenadores conectados en red, la consola puede estarformada por un terminal que se encuentra fsicamente separado del ordenadordonde corre LINUX. En el caso de microLINUX el mismo computador ejecuta elS.O. y dispone de perifrico de entrada y de salida por donde presentar lasconsolas de acceso (hasta 4) aunque nicamente es posible utilizar una en uninstante determinado.

    Este efecto se logra por medio de la figura de los terminales virtual(tty1, tty2, tty3 y tty4) definidos en microLINUX y que representan diferentesmedios de acceso al sistema aunque en realidad correspondan al mismo teclado y

    pantalla del computador.

    Qu es el intrprete de comandos?----------------------------------

    Es la utilidad ms importante del sistema. Este es un programa que leecomandos escritos por el usuario y los ejecuta. Tambin proporciona tareas decontrol de trabajos; Lo que permite al usuario realizar varias tareas a lavez. Redireccionar entradas y salidas (de / hacia la consola) y disponer de unlenguaje de programacin para realizar guion es (scripts). Un guin consiste enun fichero con rdenes escritas en el lenguaje de programacin del intrprete,semejante a los fichero por lotes (.bat) de MS -DOS.

    En microLINUX el intrprete es una versin adaptada de ash (tambin sh).

    rdenes Internas----------------

    Son comandos incluidos en el propio intrprete y por tanto no existen enel sistema en forma de ficheros, de hay su nombre en microLINUX: "comandosbuilt-in" o comandos empotrados.

    Puede obtenerse un listado de las rdenes internas vlidas escribiendo:

    # help

    rdenes externas----------------

    Ficheros del sistema que el intrprete ejecuta por mandato del usuario.Las rdenes externas extienden el poder del intrprete de comandos permitiendoun sistema operativo flexible y fcilmente adaptable a las necesidades de cadausuario.

    la forma habitual de llamar a una orden (interna o externa) es sencilla.En el indicativo del sistema el usuario escribe el nombre del comando y loacompaa con los datos que necesite, tambin llamados parmetros. Tras pulsarintro el intrprete primero lo buscar en su lista de comandos internos y sino forma parte de ella consultar unos directorios determinados. Si labsqueda fue fructfera ejecuta el comando con su parmetros, y en casocontrario entrega al usuario un mensaje de error.

    Sintaxis: #comando par_1 par_2 ... par_n

  • 8/13/2019 actividades microLINUX doble cara.pdf

    12/88

    12

    Aplicaciones------------

    Programas (compuestos a veces por varios ficheros -ejecutables y deconfiguracin-) de usuario que le ayudan a sacar el mximo partido d elcomputador (y el S.O.) en su hogar, entorno profesional, etctera.

    MicroLINUX dispone de una nica aplicacin de usuario: tcc (tiny ccompiler), un compilador de lenguaje C (ANSI) completamente operativo. Elusuario puede crear su propios programas es cribindolos en ANSI C y despuscompilndolos con esta utilidad (ver ayuda.sh ).

    Redireccin y concatenacin de rdenes--------------------------------------

    La ejecucin de un comando sigue esta secuencia fija: desde el teclado(entrada estndar) el usuario escribe el nombre de la orden por ejecutar,despus el intrprete de comandos toma la orden e intenta llevarla a cabo(puede ser un comando interno, externo o aplicacin) tras lo cual presenta los

    resultados en la pantalla (salida estndar).

    Es posible modifica el orden de la secuencia redireccionando el procesode ejecucin. El formato es:

    - Carcter '>' para redireccionar la salida. Por ejemplo

    # orden_a_ejecutar > nueva_salida

    Donde nueva_salida puede ser un fichero.

    - Carcter '>>': igual que el caso anterior pero sin borrar lo que yaexistiera en el destinatario.

    # orden_a_ejecutar >> acumula_nueva_salida

    Tambin es posible concatenar dos (o ms) comandos de tal manera que elresultado obtenido en la ejecucin del primero sea l a entrada automtica parael siguiente y as sucesivamente. El smbolo de concatenacin es '|'.

    # comando_A | comando_B ...

    T A R E A S-----------

    1 Consultar los comandos internos del intrprete. Usar # help

    2 Ejecutar algn comando interno ( sin parmetros). Por ejemplo # kill

    nota: algunos comandos necesitan ser acompaados por datos suministradospor el usuario. En la ayuda del intrprete la informacin vieneexpresada en un lenguaje propio. La sintaxis es:

    [dato]: Aquello que est entre corchetes es opcional.A | B : Equivale a decir A B (elegir una opcin).-letra: El parmetro que acompaa al comando se escribe " -letra"

    3 Usando la orden # ayuda.sh buscar informacin sobre los comandosdel sistema y la aplicacin tcc.

    4 Por medio del smbolo '|' concatena los comandos 'ls' y 'more'.

  • 8/13/2019 actividades microLINUX doble cara.pdf

    13/88

    13

    Actividad 3: Directorios de microLINUX. Creacin, posicin del usuario,cambio de ubicacin, consulta de contenido y borrado de directorios.

    Ficheros y Directorios----------------------

    Una de las primeras cosas que debe conocer el usuario de un PC es la

    diferencia entre el trmino fichero y directorio.

    Por un lado "fichero" representa el elemento mnimo de informacinpresente en un ordenador accesible a partir de su nombre. Por otro"directorio" corresponde a un espacio con referencia nica, dentro de lasunidades de almacenamiento, donde alojar un conjunto de ficheros (de 0, 1 ms elementos).

    rbol de directorios en microLINUX----------------------------------

    A diferencia de otros Sistemas Operativos las distribuciones basadas enLINUX (entre ellas microLINUX) disponen de una estructura bien definida de

    directorios que comnmente denominaremos rbol de directorios. El nombre,posicin y la misin que cumplen en las diferentes implementaciones suelen serlos mismos.

    La jerarqua de directorios en microLINUX es:

    / /: Directorio raz (root).|+-- bin bin: Directorio de binarios (ejecutables) del S.O..|+-- dev dev: Lugar donde se encuentran los archivos| descriptores de dispositivos.|

    +-- etc etc: Contiene archivos de configuracin del sistema.| || +-- init.d|+-- lib lib: Almacena libreras (ficheros con cdigo| | ejecutable) compartidas por los binarios.| +-- teclado|+-- mnt mnt: Espacio reservado para referenciar (montar y dar| | accesibilidad) a las unidades de almacenamiento.| +-- disquete| || +-- boot

    | || +-- dev| || +-- var|+-- home home: A partir de aqu comienzan los dir ectorios| personales de cada usuario.+-- proc proc: Directorio especial cuyo contenido se crea en| tiempo de ejecucin por el kernel donde el usuario| puede visualizar los datos manejados por el ncleo.+-- sbin sbin: Almacena los ficheros binarios especiales del| sistema.+-- tmp tmp: Encargado de contener los archivos temporales.|+-- usr usr: Reservado para aplicaciones de usuario (todos).| || +-- bin

  • 8/13/2019 actividades microLINUX doble cara.pdf

    14/88

    14

    | || +-- sbin| || +-- doc| || +-- lib| |

    | +-- local| || +-- bin| || +-- include| || +-- lib| || +-- tcc|+-- var var: Sitio donde estn los ficheros del sistema que

    pueden cambiar de tamao,(p.e. los manejados por elkernel, que guardan eventos o acontecimientos

    producidos durante una sesin -.log-).

    En qu directorio me encuentro?--------------------------------

    Para conocer en todo momento la posicin actual del usuario en el rbolde directorios debe utilizar el comando: pwd

    Cambio de ubicacin y lectura de contenidos-------------------------------------------

    Cambio de directorio: cd chdir

    Ejemplos

    #cd /etc cambiar al directorio /etc#chdir /usr/localcambiar al directorio /usr/local

    Volcado en pantalla del listado de ficheros de un directorio: ls

    Ejemplo #ls /proc visualizacin del directorio /proc

    nota: Utilizar "ls --help" para conocer los modificadores admitidos porel comando.

    Creacin y borrado de directorios (en el hogar del usuario)

    -----------------------------------------------------------Comando para crear directorios: mkdir

    Ejemplo #mkdir /home/varios

    ^ ^| |

    comando directorio (con su localizacin absoluta)

    Sin parmetros presenta informacin de ayuda (ingls).

    Comando para borrar directorios: rmdir

    Ejemplo #rmdir /home/varios

    Sin parmetros presenta informacin de ayuda (ingls).

  • 8/13/2019 actividades microLINUX doble cara.pdf

    15/88

    15

    T A R E A S-----------

    1 Comprobar si el rbol de directorio dibujado arriba corresponde aldisponible en microLINUX. Durante la exploracin el usuario se situaren diferentes parte de la estructura y verificar su localizacin con

    "pwd".

    2 Ver el contenido de los directorios con ficheros ejecutables: /biny /sbin.

    3 Crear y verificar el siguiente subrbol:

    /home/varios/pc /|+-- Hardware/| || +-- Placa_madre /| | |

    | | +-- Chipset| +-- Disco_duro| || +-- Lector_DVD| || +-- RAM| || +-- fuente_al| || +-- Conectores| || +-- Perifricos /| |

    | +-- Pantalla| || +-- Teclado| || +-- Ratn|+-- Software /

    |+-- Sis_op|+-- Aplicaciones

    4 Hacer uso de la utilidad de borrado de directorios creados por el

    usuario. Nota: trabajar siempre dentro del directorio /home !!

  • 8/13/2019 actividades microLINUX doble cara.pdf

    16/88

    16

    (En blanco)

  • 8/13/2019 actividades microLINUX doble cara.pdf

    17/88

    17

    Actividad 4: Tratamiento de ficheros I. Tipos (cdigo de colores), creacin,consulta, copia y borrado de ficheros. Expansin de nombres de ficheros.

    Tipos de ficheros, color asociado en la consola-----------------------------------------------

    Al listar los ficheros de un directorio con el comando "ls" (por ejemplo

    #ls /) estos aparecen por pantalla ordenados y con un color determinado.

    Los colores identifican el tipo de fichero:

    Color Tipo----- ----verde Script (Archivo con rdenes orientadas al intrprete)blanco Archivo de textofucsia Archivo especial asociado a dispositivoazul claro Enlaces a directorios o archivosazul oscuro Directorio

    Formas de crear un fichero

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

    Un fichero puede ser creado siguiendo tres mtodos.

    1 Crear un fichero vaco: touch

    Ejemplo #touch mi_fichero.txt

    Nota: para conocer el tamao de un fichero es necesario que el comando"ls" venga acompaado de los parmetros " -s" "-s -h". Por ejemplo: #ls -s -h

    mi_fichero.txt.

    2 Usar el editor de microLINUX: vi

    Ejemplo #vi mi_fichero2.txt

    Nota: consultar la ayuda del editor "vi" en "#ayuda.sh"

    3 Redireccionar la salida estndar de la consola: echo

    Ejemplo #echo Saludos desde microLINUX > hola.txt

    Nota: El nmero mximo de caracteres admitidos para el nombre de unfichero al ser creado es 254.

    Visualizar el contenido de un fichero

    -------------------------------------Para observar el interior de un fichero utilizar el comando: cat

    Ejemplo #cat hola.txt(requiere el fichero hola.txt anterior)

    Copiar y borrar ficheros------------------------

    Copiar un fichero con: cp

    Ejemplo #cp hola.txt copia_hola.txt

    Eliminar un fichero con: rm

    Ejemplo #rm copia_hola.txt

  • 8/13/2019 actividades microLINUX doble cara.pdf

    18/88

    18

    Mover un fichero----------------

    Es posible cambiar la ubicacin de un fichero en el rbol de directoriosusando: mv

    Ejemplo #mv /home/agenda.txt /home/usuario1

    En el ejemplo anterior agenda.txt pasa del directorio "/home" (fuente-source-) al directorio "/home/usuario1" (destino).

    Expansin de ficheros---------------------

    En microLINUX es posible seleccionar un conjunto de fich eros por mediode un reducido juego de caracteres y expresiones de sustitucin:

    Comodines:'?' sustituye a cualquier carcter'*' sustituye a cualquier conjunto de caracteres

    Expresiones:- [AB] sustituye a expresiones con 'A' y con 'B'. Ejem plo:

    cad_a_[AB]_cad_b equivale a cad_a_A_cad_b cad_a_B_cad_b

    - [A-Z] sustituye a expresiones con el rango de valores quevan desde 'A' hasta 'Z'

    c_a_[A-C]_c_b sustituye a c_a_A_c_b c_a_B_c_b c_a_C_c_b

    - [^Z] sustituye a expresiones que NO TENGAN 'Z'.

    Tambin estn permitidas las combinaciones de comodines y expresiones.

    T A R E A S-----------

    1 Buscar y sacar por pantalla algn fichero de tipo script.

    2 Personalizar la distribucin de microLINUX creando un fichero llamado/home/propietario.txt con tu nombre y apellidos.

    3 Crear el directorio /home/prueba e incluir 2 ficheros vacos.Posteriormente prueba a borrar el directorio. Ayuda: Tener clarala opcin "-R" (recursivamente) del comando rm.

    4 Hacer una copia de seguridad (en /home/backups) de los ficheros deconfiguracin alojados en /etc.

    5 Haciendo uso de la expansin de ficheros, listar (comando 'ls') losficheros de /bin que cumplan estas condiciones:

    - Comiencen con la letra l.- Comiencen con las letras a, b, c, d.- Contengan una h.- Que no tenga ninguna letra m.- Que Est formado por 2 caracteres.

    6 Mueve los ficheros del directorio "/home/prueba" al directorio"/home/backup".

  • 8/13/2019 actividades microLINUX doble cara.pdf

    19/88

  • 8/13/2019 actividades microLINUX doble cara.pdf

    20/88

    20

    #Sistema de ficheros ext2 + puerto serie + puerto paralelo#Busybox + Tinylogin + Tcc + Ejercicios + Taller de LINUXboot =/dev/df0install =/boot/bootsectmap =/boot/mapread-writebackup =/dev/null

    image =/boot/KERNELlabel =microLINUXroot =/dev/fd0initrd =/micro_sf.gzappend ="root=/dev/ram0 prompt_ramdisk=1 init=arranque.sh"

    2 ---> /arranque.sh#!/bin/sh/bin/mount -t ext2 /dev/fd0 /mnt/disqueteexec /sbin/init

    3 ---> /mnt/disquete/var/etc/inittab# ver informacin en busybox/scripts/inittab

    ::sysinit:/etc/init.d/rcS# cosas por hacer cuando reinicia el proceso init::restart:/sbin/init# Carga texto de inicio::wait:/etc/intro.sh# Inicia generando login sobre /dev/tty1-4tty1::respawn:/sbin/getty 38400 tty1tty2::respawn:/sbin/getty 38400 tty2tty3::respawn:/sbin/getty 38400 tty3tty4::respawn:/sbin/getty 38400 tty4# cosas por hacer antes de reiniciar::ctrlaltdel:/sbin/reboot::shutdown:/bin/umount -a -r

    ::shutdown:/sbin/swapoff -a

    4 ---> /mnt/disquete/var/etc/intro.sh#!/bin/shclearecho "+--------------------------------------------------------------------- +"echo "| Bienvenido a microLINUX_VEM versin 1.0 |"echo "+--------------------------------------------------------------------- +"echo "|Para comenzar: [microLINUX] login: root [Intro] |"echo "| + -------------------+"echo "| | Ayuda de comandos |"echo "| Ms informacin con: ayuda.sh | |"echo "| -------- | #[comando] --help |"

    echo "| | |"echo "|Hay cuatro consolas,usa [Alt]+[Fn] (donde n 1..4)| Acaba microLINUX |"echo "|Reinicia el intrprete de comandos con: # exit | # halt |"echo "|Reinicia el sistema con: [Ctrl]+[Alt]+[Del] | # poweroff |"echo "+------------------------------------------------- +-------------------+"

    T A R E A S-----------

    1 Visualiza el contenido de los ficheros de configuracin indicados.

  • 8/13/2019 actividades microLINUX doble cara.pdf

    21/88

    21

    Actividad 6: Tratamiento de ficheros II. Edicin de ficheros de texto coneditor vi.

    El editor vi------------

    Cuando sea necesario crear, visualizar y/o cambiar el contenido de un

    fichero debe utilizar el editor vi (VIsual editor). Programa editor clsicode Unix y LINUX.

    En realidad el editor vi presente en microLINUX es una versi nreducida, adaptada para su uso en sistemas donde el tamao es una cuestincrtica.

    El usuario notar que se encuentra frente a una herramienta muy sencillapero limitada en prestaciones. Sin embargo es suficiente para las tareasexpuestas en este taller de LINUX.

    Entrar al editor----------------

    Para abrir un archivo nuevo o ya existente utilizar:

    #vi nombre_archivo

    Dentro de vi------------

    Una de las cosas ms llamativa para los nuevos usuarios de vi es elhecho de no poder empezar a escribir el contenido del fichero inmediatamentedespus de entrar en l. Esto es as porque vi presenta 3 modos de trabajo:

    - Modo comando (por defecto al inicio del editor)

    - Modo insercin- Modo de ltima lnea (pulsando ':')

    En el modo comando vi realiza acciones con el texto ya escrito segnel comando (secuencia de uno o dos caracteres) indicado:

    Comando Accin

    x Borra el carcter bajo el cursordd Borra la lnea en la que se encuentra el cursor... (todos los comandos en 'ayuda.sh')i Entra en el modo insercin (insertar texto en pantalla)

    El modo insercin permite al usuario introducir el texto del fichero.Pulsando la tecla vuelve al modo comando. El usuario conoce el modoen el que se encuentra porque aparece en la parte inferior de la pantalla elmensaje '-- Insert --'.

    Nota: Si en alguna ocasin el usuario pulsa una tecla cuya funcin no esvlida (por ejemplo la tecla ) en vi, el editor responde con unmensaje de texto inverso (fondo blanco y letras en negro). En este casosimplemente debe pulsar para salir del modo Insercin y despusentrar de nuevo.

    Una vez terminada la sesin con el editor es preceptivo salir delsistema indicando la accin a realizar sobre el fichero. Para ello debe en traren el modo ltima lnea:

    Guardar el fichero -> 1 pulsa ':' y 2 'w' 'nombre_nuevo_fichero'.Abandonar sin cambios -> 1 pulsa ':' y 2 'q''!'.

  • 8/13/2019 actividades microLINUX doble cara.pdf

    22/88

    22

    Abandonar con cambios -> 1 pulsa ':' y 2 'x' 'w''q'Busca patrn -> 1 pulsa ':' y 2 '/''patrn_a_buscar'

    T A R E A S-----------

    1 Abrir el fichero /home/propietario.txt y aadir los siguientes datos:

    - Estudios que est cursando en la actualidad.- Direccin de correo electrnico.

    2 Crear un nuevo fichero denominado /home/prueba.t xt donde el usuariodebe comprobar y utilizar, hasta que queden suficientemente claros, losdiversos comandos y modos de vi.

    Recomendacin: Con la segunda consola virtual, establecer una sesin enmodo root y abrir la ayuda de vi -> #ayuda.sh vi. De esta forma,pasando de una consola a otra, es posible consultar los comandos deforma inmediata.

    3 Por ltimo crear el fichero /home/resumen_comandos.txt en cuyointerior deben aparecer listados los comandos usados hasta ahoraacompaados de una breve descripcin.

  • 8/13/2019 actividades microLINUX doble cara.pdf

    23/88

    23

    Actividad 7: Tratamiento de ficheros III. Enlaces duro y dbil.

    Concepto de enlace------------------

    Los enlaces (links) permiten dar a un nico fichero mltiples nombres.Los ficheros son identificados por el sistema con un nmero (n de inodo), el

    cual es el nico identificador del fichero para el sistema de ficheros. Laorden:

    #ls -i

    Mostrar los nmeros de "inodo".

    Enlace duro (hard link) enlace normal---------------------------------------

    La orden ln es usada para crear mltiples enlaces a un fichero. Porejemplo, suponer que tenemos un fichero llamado "agenda_tlfns" en eldirectorio actual. Usando 'ls -i' aparece en pantalla el nmero inodo para

    dicho fichero.

    #ln -i agenda_tlfns43 agenda_tlfns

    Aqu, el fichero "agenda_tlfns" est asociado al nmero de inodo 43. Esposible crear un enlace a "agenda_tlfns", llamado tlfns:

    #ln agenda_tlfns tlfns

    Con 'ls -i' aparecen asociados los dos nombre al mismo nmero de inodo.Ahora, es posible acceder al contenido del fichero con los dos nombres. Atodos los efectos, agenda_tlfns y tlfns son el mismo fichero.

    Solo es posible crear enlaces duros entre ficheros del mismo sistema deficheros.

    Con el comando 'rm' usado sobre un enlace nicamente se elimina dichoenlace pero el fichero sigue existiendo; Para borrarlo definitivamente nodeben existir otros enlaces en el sistema.

    La orden 'ln -l' sirve para conocer el nmero de enlaces a un fichero.

    Enlace dbil o enlace simblico-------------------------------

    Corresponde a otro tipo de enlace. Permite dar a un fichero otro nombre,pero no apunta al mismo nmero inodo. La orden:

    #ln -s fichero enlace_fichero

    Crea un enlace simblico denominado "enlace_fichero" que apunta a"fichero". Utilizando 'ls -i' puede apreciarse como los dos ficheros tienen unnmero identificativo diferente.

    #ls -i fichero enlace_fichero44 fichero 45 enlace_fichero

    Adems aparece en color diferente "enlace_fichero" cuando se muestra elcontenido del directorio con el comando 'ls'.

    Funcionalmente, los enlaces duros y simblicos son similares, pero hayalgunas diferencias. Por una parte, un usuario puede crear un enlace simblico

  • 8/13/2019 actividades microLINUX doble cara.pdf

    24/88

    24

    a un fichero que no existe. Tambin es posible enlazar simblicamente con unarchivo o directorio presente en otro sistema de ficheros.

    Por otro lado con la orden 'ls -l' puede verse el fichero apuntado.

    Cuando desaparece el fichero origen, todos los enlaces que apunta a ltambin son eliminados.

    Los enlaces simblicos son los ms flexibles y populares . Funcionan deforma parecida a los accesos directos de Windows 95/98 pero son mucho mspotentes.

    T A R E A S-----------

    1 Crea el fichero "/home/usuario1/datos personales/agenda.txt" y en suinterior almacena una lista de telfonos (Nombre -- Direccin --Telfono).

    2 Enlazar (enlace simblico) la agenda anterior con el fichero

    "/home/agenda_usuario1".

    3 Utilizando el editor vi modificar el contenido de agenda_usuario1.

    4 Ver el contenido de "/home/usuario1/datos personales/agenda.txt".

    5 Responder a esta pregunta tras crear los enlaces duros y simblicosque considere oportunos: Cul es tamao de los ficheros enlace (tantoduro como simblico) cuando apuntan a otro con una capacidad de 1024bytes?. Razona tu respuesta.

  • 8/13/2019 actividades microLINUX doble cara.pdf

    25/88

    25

    Actividad 8: Tratamiento de ficheros IV. Bsqueda, ordenacin y extraccinselectiva de datos.

    Bsqueda DEficheros--------------------

    En microLINUX la utilidad 'find' es la encargada de realizar la bsqueda

    de ficheros y directorios dentro del sistema.

    Cuando el usuario desea localizar la ubicacin de uno o ms ficherosdebe hacer uso del comando 'find' acompaado del correspondiente modificador.Algunas de las opciones son:

    - Listado de todos los ficheros (incluido su path) desde la posicinactual en el rbol de directorios:

    #find

    - Listado de todos los directorios del sistema:

    # find / -type d

    - Listado de todos los enlaces:

    # find -type l

    - Bsqueda del fichero "fichero_perdido" desde el directorio raz:

    # find / -name fichero_perdido

    Bsqueda ENficheros--------------------

    Tambin es posible la bsqueda de patrones (cadenas de caracteres) en elinterior de un fichero. Esta labor la lleva a cabo el comando 'grep'.

    - Bsqueda de la fila del fichero agenda.txt que contiene la cadena"cadena_a_buscar":

    #grep cadena_a_buscar agenda.txt

    Ordenacin DEficheros----------------------

    Para presentar por pantalla el listado de fichero de un directorio,segn un criterio concreto, ordenado en modo ascendente o descendente, deben

    aplicarse los modificadores oportunos al comando 'ls'. Algunos ejemplos son:- Ordenar en orden inverso los ficheros del directorio actual:

    # ls -r

    - Ordenar los ficheros ordenados por extensin:

    # ls -X

    - Ordena los ficheros de todo el sistema de ficheros s egn su tamao:

    # ls -S -R

    Ordenacin ENficheros----------------------

  • 8/13/2019 actividades microLINUX doble cara.pdf

    26/88

    26

    El comando 'sort' imprime lneas de texto en orden alfabtico uordenadas por alguna otras regla que el usuario especifique. Todos losficheros que acompaan al comando en la orden son concatenados, y el resultadoes ordenado y presentado por pantalla.

    Por ejemplo:

    - Ordenar el contenido de un fichero en orden descendente:

    #sort -r fichero_de_usuario

    - Ordenar numricamente (primeros las lneas que empiezan por 0, luegolas que comienzan con 1 y as sucesivamente):

    #sort -n fichero_de_usuario

    Extraccin selectiva de datos en ficheros-----------------------------------------

    MicroLINUX ofrece la posibilidad de obtener parcialmente el contenido de

    un fichero en vez de mostrar el conjunto de la informacin. Existen tresposibilidades:

    1 Tomar las primeras (10 por defecto) lneas: Comando 'head'.2 Tomar las ltimas (10 por defecto) lneas: Comando 'tail'.3 Extraer Columnas de texto de un fichero: Comando 'cut'. Una "columna"est definida por un conjunto de bytes, caracteres campos (por ejemploel carcter que ocupa la posicin 19 de cada lnea).

    A continuacin se muestran ejemplos de los comandos 'head', 'tail' y'cut'.

    - Presenta las primeras 4 lneas de un f ichero:

    #head -n 4 fichero_de_usuario

    - Presenta las 4 ltimas lneas de un fichero:

    #tail -n 4 fichero_de_usuario

    - Muestra el carcter dcimo noveno de cada columna:

    #cut -c19 fichero_de_usuario

    - Muestra el byte n 19 de cada columna:

    #cut -b19 fichero_de_usuario- En un fichero de texto donde cada lnea tiene este formato:

    /----------+----------+---------------+-----=> Campos (fields)| | | |v v v v

    L1campo1 , L1campo2 , L1campo3 , .. , L1campojL2campo1 , L2campo2 , L2campo3 , .. , L2campoj

    .. .. .. ..Lncampo1 , Lncampo2 , Lncampo3 , .. , Lncampoj

    ^ ^ ^ ^| | | |\----------+----------+----+---------=> Delimitadores

  • 8/13/2019 actividades microLINUX doble cara.pdf

    27/88

    27

    Obtener el valor del campo 3 utilizando la coma como delimitador envez de (por defecto):

    #cut -d, -f3 fichero_con_campos

    - Obtener los primeros 6 caracteres de cada lnea:

    #cut -c1-6 fichero_de_usuario

    - Obtener los caracteres que ocupan la posicin 2, 4, 8 y 10 de cadalnea:

    #cut -c2,4,8,10 fichero_de_usuario

    T A R E A S-----------

    1 Buscar la ubicacin del comando 'find' en el rbol de directorios,haciendo uso de s mismo.

    2 Presentar en pantalla en orden inverso el contenido del directoriolocalizado en el punto anterior.

    3 Crear un fichero que ser utilizado como base de datos para almacenaruna agenda de clientes. El formato y los campos debe tener esta forma:

    1:Nombre:Apellido:Direccin:Telfono:E-mail:Comentarios..9 ...

    E incluir 9 clientes. (nota: El fichero se llamar bd_clientes.txt, ydebe existir un cliente con tu nombre)

    4 Buscar las lneas que contengan tu nombre usando el comando 'grep'.

    5 Listar los datos de los 3 primeros clientes en bd_clientes.txt.

    6 Listar los datos de los 2 ltimos clientes.

    7 Listar el nombre de todos los clientes.

    8 Listar ordenados de forma inversa todos los registros.

    9 Presentar en pantalla las primeras 20 columnas de bd_clientes.txt.

  • 8/13/2019 actividades microLINUX doble cara.pdf

    28/88

  • 8/13/2019 actividades microLINUX doble cara.pdf

    29/88

    29

    Actividad 9: Gestin de usuarios. Creacin, propiedades y borrado deusuarios. Cambio de usuario.

    Gestin de usuarios-------------------

    Adems de multitarea, todo los sistemas basados en LINUX incluido

    microLINUX deben tener capacidad para trabajar con varios usuarios.

    Un "usuario" identifica a una persona con derecho al acceso (total orestringido) y gestin en el sistema. Para ello es obligatorio que eladministrador, conocido como 'root', le d de alta y p roporcione unacontrasea de acceso.

    Cuando un usuario est registrado en el sistema, puede acceder a lindicando dos datos:

    - Nombre de usuario: referencia del usuario definido por eladministrador.- Contrasea: cadena de caracteres protegida asoc iada al nombre de

    usuario.

    El sistema operativo proporciona un espacio en el sistema de ficherosreservado a cada usuario llamado directorio de usuario donde puede desarrollartodas sus actividades libremente como crear ficheros, directorios, aadiraplicaciones, etctera. Fuera de este entorno es posible que sus accionesestn limitadas segn los permisos definidos por el administrador. Eldirectorio desde donde "cuelgan" todos los usuarios es el directorio '/home'.

    Para que el administrador permita el acceso a un usuario simplementedebe escribir:

    #login

    Posteriormente incluir su nombre y clave de acceso.

    Incorporacin de un usuario al sistema (creacin)-------------------------------------------------

    El usuario "root" puede crear nuevos usuarios haciendo uso del comando'adduser'. El nico dato necesario es el nombre de usuario cuyo valor serutilizado para denominar su directorio "hogar".

    Tambin es posible indicar otros valores durante el proceso de alta conel fin de personalizar el perfil del nuevo usuario. Las opciones permitidasson: Nombre de directorio, Intrprete de comandos e identificador.

    Para crear un usuario nuevo llamado "cliente1" con los valores que elsistema asigna por defecto, el administrador usar la orden:

    #adduser cliente1

    El sistema entregar el siguiente mensaje:

    Changing passwsord for cliente1Enter the new password (minimum of 5, maximum of 8 characters)please use a combination of upper an lower case letters an numbers.Enter news password: _- Traduccin -Cambiando contrasea para cliente1Introduce la nueva contrasea (mnimo 5, mximo 8 caracteres)por favor utiliza una combinacin de letras minsculas y maysculas ynmeros.

  • 8/13/2019 actividades microLINUX doble cara.pdf

    30/88

    30

    Introduce nueva contrasea: _

    En este punto el administrado incorpora la secuencia de caracteres queel sistema utilizar para validar al usuario durante el inicio de sesin. Comomedida de precaucin las letras y nmeros escritos no aparecern en pantallapara evitar que una persona ajena pueda aprovechar estos datos en beneficiopropio.

    Despus se comprueba la correccin de la contrasea escribindose denuevo. De esta forma el sistema evita la entrada de valores no deseados por elusuario.

    Si todo el proceso termin bien el sistema lo indica con el mensaje:

    Password changed (contrasea cambiada).

    Ahora el usuario con nombre de acceso "cliente1" tiene admitida suentrada al sistema y puede comprobarlo abriendo el terminal virtual 2 con + + y entregando los datos de acceso.

    Su situacin en el sistema se confirma porque ahora el smbolo delintrprete de comandos a cambiado a:

    $ _

    Puede "ver" su ubicacin en el rbol de directorios escribiendo 'pwd'.

    Propiedades de usuario----------------------

    A la hora de agregar un usuario con un perfil completo usar el comando'adduser' as:

    #adduser -h /home/casa_cliente2 -s /bin/sh -g "usuario sin privilegios"cliente2

    Los parmetro representan:

    -h : Nombre del directorio elegido para el cliente2,-s : Nombre del intrprete de comandos definido para el cliente2-g : Datos de cliente2

    Toda esta informacin quedar almacenada en el fichero de configuracin"/etc/passwd" en donde por cada usuario, incluido el usuario "root", existeuna lnea con sus datos:

    campo1:campo2:campo3:campo4:campo5:camp6:campo7campo1: Nombre de usuario.campo2: Contrasea encriptada (si no tiene este campo aparece en

    blanco).campo3: identificador de usuario (uid)campo4: identificador de grupo (gid)campo5: Informacin de usuariocampo6: Directorio de usuariocampo7: Intrprete de comandos para este usuario

    Borrado de un usuario---------------------

    Cuando el administrado desea bloquear el acceso al sistema de un usuariollama al comando deluser:

  • 8/13/2019 actividades microLINUX doble cara.pdf

    31/88

    31

    #deluser nombre_de_usuario

    Entonces desaparece del fichero "/etc/passwd" su referencia y a partirde entonces queda imposibilitado para acceder al sistema.

    Cambio de contrasea--------------------

    Es posible que pasado un tiempo el administrador determine la necesidadde cambiar la contrasea de algn usuario. El comando encargado de esta tareaes passwd:

    #passwd usuario_de_sistema(nota: sin parmetro cambia la contrasea del administrador)

    En este momento el sistema solicitar la nueva contrasea dos veces (lasegunda como confirmacin). A partir de ahora el usuario est obligado amanejar la nueva contrasea si desea entrar en microLINUX.

    Cambio de usuario

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

    Tambin est permitido cambiar de usuario en cualquier momento llamandoa 'su' (switch user); En caso de no acompaar al comando con el nombre de unusuario, el sistema supondr que es el usuario "root" quien pretendeincorporarse.

    A continuacin se entregar la contrasea de acceso del usuarioentrante.

    El usuario nico----------------

    En los sistemas LINUX existe la figura del usuario nico, encargado derealizar labores asociadas al mantenimiento del sistema. Cuando accede esteusuario, el sistema queda inhabilitado para admitir simultneamente otrosusuarios. Esta prdida (provisional) de la caracters tica de multiusuariotiene como objetivo permitir al administrador disponer de TODO el sistema conel fin de realizar labores administrativa que de otra forma no sera posible.

    El usuario nico se justifica sobre todo en aquellos entornos donde elsistema operativo corre en una mquina a la que acceden los usuarios desdediversos terminales. La activacin del usuario nico implica la imposibilidadde entrada a cualquier otra persona y garantiza que en ese instante eladministrador tenga el uso y control del sistema.

    El comando sulogin valida el acceso en calidad de usuario nico alsistema.

    MicroLINUX trata el usuario nico (monousuario) como al usuario 'root'.En otras distribuciones es recomendable consultar: "El nivel de ejecucin 1,modo monosuario".

    nota: El nivel de ejecucin es cada uno de los diferentes estados en quese puede encontrar el sistema. Se identifican con un nmero o letra.

    Quin soy yo?--------------

    En ocasiones cuando el administrador entra en el sistema repetidas vecesregistrndose como un usuario diferente en cada sesin, puede necesitarrecordar su identidad, es decir, saber en un instante determinado el nombre deusuario activo en el sistema.

  • 8/13/2019 actividades microLINUX doble cara.pdf

    32/88

    32

    Esto se consigue con el comando 'whoami'. Tras ser ejecutado el S.O.

    devuelve el "login" actual.

    $whoamiusuario1$

    El usuario como propietario de recursos (ficheros y directorios)----------------------------------------------------------------

    Es posible proteger los ficheros de usuarios particulares de lamanipulacin por parte de otros. Todos los sistemas basados en LINUXproporcionan un mecanismo conocido como permisos de ficheros. Este mtodopermite que ficheros y directorios "pertenezcan" a un usuario determinado.

    El comando encargado de cambiar el dueo de un recurso es 'chown'. Porejemplo si el administrador desea asignar como propietario del fichero"/home/datos_usuario1" al usuario 'usuario1' escribir:

    #chown usuario1 /home/datos_usuario

    T A R E A S-----------

    1 Crear un usuario con los parmetros por defecto con nombreusuario_normal.

    2 Crear un usuario con estas caractersticas:

    - Directorio /home/dir_usuario- Identificacin "usuario personalizado 1"- Intrprete "/bin/sh"

    3 Crear un usuario normal con nombre usuario_provisional.

    4 Abrir las consolas virtuales 2, 3 y 4 para acceder como los usuarioscreados en 1, 2 y 3.

    5 Ahora el usuario_provisional debe abandonar su sesin. (Utiliza elcomando exit).

    6 Consultar el fichero donde estn los datos de usuario "/etc/passwd".

    7 Eliminar el usuario usuario_provisional.

    8 Intentar acceder como usuario_provisional en la consola virtual 4.9 Consultar de nuevo el fichero de configuracin de usuarios.

    10 Usar en la consola virtual 1 el comando 'su' para cambiar deusuario.

    11 Ahora, intentar suprimir el acceso a usuario_normal. Es posible?,razona tu respuesta.

    12 Consultar el nombre del usuario actualmente registrado.

    13 Como administrador, crear el fichero"/home/dir_usuario/datos_usuario_normal.txt" y cambiar el propietario ausuario_normal.

  • 8/13/2019 actividades microLINUX doble cara.pdf

    33/88

    33

    Actividad 10: Concepto de grupo. Creacin y borrado de grupos. Agregacin yeliminacin de usuarios a un grupo.

    Concepto de grupo-----------------

    La idea de grupo es la de establecer equipos de trabajo que nec esitanacceso a recursos comunes. As un programador (perteneciente al grupo deprogramadores) puede reservarse el permiso de escritura slo para l peropermitir a sus compaeros de equipo que lean sus ficheros fuente y no permitira nadie ms (otros) que hagan nada.

    Trabajo con grupos------------------

    Cada usuario es miembro de un grupo. Pueden darse distintasposibilidades o privilegios a distintos tipos de usuarios. Por ejemplo parecems lgico dar acceso a diferentes tipos de archivos a un grupo que utiliza elsistema para analizar las ventas de la compaa, que a otro cuya tarea

    principal es la investigacin de nuevos productos.

    El archivo de contraseas, tal y como se indic en el apartado anterior,"/etc/passwd" guarda informacin de cada us uario. Los datos sobre los gruposse almacenan en el archivo "/etc/group". Ejemplo de registro de un grupo enese archivo:

    #cat /etc/grouproot:x:0:usuario:x:508:cli:x:509:cliente1,cliente2

    pro:x:510:provee1,provee2,provee3

    Cuando el administrador da de alta un usuario, el sistema tambin aadeuna nueva lnea al fichero "/etc/group" sealando que hay un grupo especficopara el nuevo registro.

    Por ejemplo:

    #adduser nuevo_usuario...>>> contrasea de validacin...

    #cat /etc/grouproot:x:0:

    usuario:x:508:cli:x:509:cliente1,cliente2pro:x:510:provee1,provee2,provee3511:x:511:nuevo_usuario

  • 8/13/2019 actividades microLINUX doble cara.pdf

    34/88

    34

    campo3: Nmero de identificacin -GID- del grupo.

    campo4: Lista de usuarios pertenecientes al grupo.

    La configuracin de grupos en microLINUX puede llevarse a cabo por doscaminos distintos. Uno es editar el fichero usado por el S.O. para la gestinde grupos "/etc/group" y realizar sobre l las modificaciones oportunas. Por

    otra parte pueden emplearse los comandos que a tal efecto dispone microLINUX yse muestran a continuacin.

    Creacin de grupos------------------

    La utilidad 'addgroup' incluye un nuevo grupo. Si el identificador degrupo (GID) no est indicado, 'addgroup' intentar encontrar el siguiente GIDvlido en "/etc/group" dentro del rango [100..6400].

    Ejemplo: Dar de alta el grupo 'lectores'.

    #addgroup -g lectores

    Ejemplo: Dar de alta el grupo 800 (con GID 800) e indicar que el usuario'lector1' pertenece a l.

    #addgroup -g 800 lector1

    Ejemplo: Dar de alta el grupo escritores al que pertenece escritor1.

    #addgroup -g escritores escritor1

    Borrado de grupos-----------------

    Para borrar un grupo simplemente debe llamarse al comando 'delgroup' yacompaarlo del nombre del grupo que se quiere eliminar.

    Ejemplo: Borrar el grupo 800.

    #delgroup 800

    Cambio de grupo---------------

    Cuando sea necesario cambiar el grupo al que pertenece un recurso(fichero directorio) debe aplicarse el comando 'chgrp'. Adems del recurso,hay que acompaar como parmetro el nuevo grupo propietario.

    La forma de llamada es la siguiente:

    #chgrp Nuevo_grupo Nombre_recurso

    nota: aadiendo el parmetro -R cambia el grupo recursivamente a losrecursos (ficheros y directorios) contenidos en Nombre_recurso.

    Modificacin de usuarios pertenecientes a un grupo--------------------------------------------------

    Si el administrador del sistema desea cambiar la lista de usuariosrelacionados con un grupo, necesita editar el fichero "/etc/group" y modificarsu contenido.

    T A R E A S-----------

  • 8/13/2019 actividades microLINUX doble cara.pdf

    35/88

    35

    1 Como administrador hay que crear tres nuevos grupos en el sistema:clien (clientes), prove (proveedores) y usuarios.

    2 Verificar la existencia de los nuevos grupos consultando el fichero"/etc/group".

    3 Generar los directorios "/home/usuarios", "/home/usuarios/dir_cli" y"/home/usuarios/dir_pro".

    4 Cambiar la pertenencia a grupo de los anteriores directorios segneste criterio:

    /home/usuarios --> grupo usuarios/home/usuarios/dir_cli --> grupo clien/home/usuarios/dir_pro --> grupo prove

    5 Aadir los siguientes usuarios: 'cliente1', 'cliente2', 'proveedor1','proveedor2' y 'proveedor3'.

    6 Configurar el sistema para que 'cliente1' y 'cliente2' pertenezcan a'clien' as como que los usuarios 'proveedor1', 'proveedor2' y'proveedor3' correspondan al grupo 'prove'. Los directorios asociados'cuelgan' de "/home/usuarios".

    7 Por ltimo comprobar la correcta estructura jerrquica de los nuevosdirectorios:

    /home/usuarios/cliente1cliente2proveedor1proveedor2proveedor3

    dir_clien/dir_prove/

    nota: No borrar los datos creados en este apartado porque son necesariosen la actividad siguiente.

  • 8/13/2019 actividades microLINUX doble cara.pdf

    36/88

    36

    (En blanco)

  • 8/13/2019 actividades microLINUX doble cara.pdf

    37/88

    37

    Actividad 11: Permisos en un sistema multiusuario.

    Introduccin------------

    La seguridad de un sistema derivado de LINUX se basa en el sistema depermisos y propiedades de los ficheros. Es importante mantener una buena

    poltica de seguridad an cuando slo hay un nico usuario. Un usuario normalencontrar pocos problemas de permisos con sus ficheros de uso diario. Peropara un administrador las cosas son ms complicadas. Asignando un permisoerrneo se ver inmerso en una serie de frustrantes experiencias como, porejemplo, la imposibilidad de leer ficheros "propios". El mensaje:

    Permission denied

    Es decir, permiso denegado, indica que algui en ha asignado un permisoque nos restringe el acceso ms de lo que quisiramos.

    Qu son los permisos?----------------------

    Los permisos hablan de lo que un usuario puede hacer con un recurso(fichero directorio). Hay tres tipos de permisos:

    - rLectura: El permiso indica que el usuario puede ver el contenido delarchivo (r read, leer).-wEscritura: El usuario puede escribir en el archivo o bien borrarlo(w write, escribir).- xEjecucin: Cuando el fichero es un programa el usuario puedeejecutarlo (x execute, ejecutar).

    Con un archivo nuevo, el sistema asigna automticamente unos permisos.Por ejemplo le permite al autor del archivo leer y escribir en l, pero al

    resto de los usuarios solamente leerlo.

    Los programas que crean archivos asignan a estos los permisoscorrespondientes. As, cuando el compilador crea un programa ejecutable,automticamente le asigna el permiso de ejecucin.

    Con los directorios, los permisos tienen un significado algo distinto:

    - El permiso de lectura indica que se puede listar el contenido deldirectorio.- El permiso de escritura significa que se puede aadir o borrarficheros al directorio.- El permiso de ejecucin quiere decir que se puede consultar

    informacin de los archivos del directorio.Tambin hay otro tipo de recursos (ficheros especiales) como los

    especiales de dispositivos, los enlaces simblicos, etc. cada uno tiene suspropias reglas de interpretacin de los permisos.

    A quines se les dan los permisos?---------------------------------- -

    En un sistema LINUX estn presentes tres categoras de permisos:propietario (owner), grupo (group) y otros (others). Por tanto los elementosbsicos en cuanto a seguridad se refiere son: tres permisos (lectura,escritura y ejecucin) y tres niveles (p ropietario, grupo y terceros).

    Lectura de los propiedades de un recurso----------------------------------------

  • 8/13/2019 actividades microLINUX doble cara.pdf

    38/88

    38

    Utilizar 'ls -l' para conocer los permisos y pertenencia asociados a unrecurso. Por ejemplo, que permisos tiene el fichero"/etc/passwd"?:

    #ls -l /etc/passwd-rwxr-xr-x 1 root root 553 Oct 14 16:49 /etc/passwd

    ^ ^ ^ ^ ^ ^ ^| | | | | | |

    | | | | | | + --- Recurso| | | | | || | | | | + --- Fecha y hora del| | | | | ltimo cambio| | | | + --- Tamao en bytes| | | || | | + --- Grupo al que pertenece el recurso| | || | +--- Propietario| || +--- n de nombres del fichero (ver enlace simblico| -actividad 7-)+--- Permisos

    Permisos: Representacin------------------------

    Al listar los permisos de un recurso estos aparecen codificados segn elsiguiente formato:

    - rwx rwx rwx Con 'letra' tiene el permiso correspondiente, con ' -' no.^ ^ ^ ^| | | || | | || | | +--- Permisos a otros usuarios| | |

    | | +------- Permisos al grupo que pertenece| || +----------- Permisos que tiene el propietario|+-------------- Tipo de recurso:

    d Directoriol Enlace- Fichero normalc Fichero especial (tipo carcter)b Fichero especial (tipo bloque)

    Ejemplos:

    drw-r--r-- --> Directorio cuyo propietario puede leer y escribir,mientras que los miembros del grupo al que pertenece solo leer, como el restode usuarios.

    -rw-r----- --> Fichero normal que puede ser ledo por su propietario yel grupo asociado. El dueo tambin tiene permiso de modificacin y borrado.

    Cambio de pertenencia y permisos de un recurso----------------------------------------------

    Pertenencia:

    La mayora de las veces podemos confiar en los ajustes predeterminadosdel sistema. No obstante hay ciertas excepciones.

  • 8/13/2019 actividades microLINUX doble cara.pdf

    39/88

    39

    Como se ha visto en las actividades anteriores, las modificaciones depropiedad se hacen con:

    - chown -> Cambio de propietario (slo 'root' puede utilizar estecomando).- chgrp -> Cambio de grupo (un usuario normal puede aplicarlo a recursosque le pertenezcan).

    Pueden hacerse estas dos cosas en un solo paso empleando el punto '.':

    #chown cliente1.cli agenda_cliente1

    Permisos:

    La forma de cambiar los permisos es algo ms complicada. A los permisosse les suele llamar el 'modo' de un archivo. Para cambiar se emplea el comando'chmod' (change mode -cambio de modo-).

    El comando 'chmod' reconoce varios caracteres y signos utilizados a modode parmetros combinados para determinar el nuevo estado de los permi sos del

    recurso. Estos caracteres son:

    | u --> user (usuario)mbito| g --> group (grupo)

    | o --> others (otros)| a --> all (todos)

    | + --> Aade un permisoAccin| - --> Elimina el permiso

    | = --> Activa permisos absolutos ignorando los exi stentes

    | r --> Permiso de lectura| w --> Permiso de escritura/modificacin

    Tipo | x --> Permiso de ejecucin (en directorios indica el acceso)| s --> Permiso condicionado -nota 1-| t --> Permiso condicionado -nota 2-

    nota 1:Modo Setuid: La identidad efectiva de usuario con la quese ejecuta el programa es la del propietario del mismo (usar conejecutables).Modo Setgid: el comportamiento es igual que elanterior pero afectando al grupo.

    nota 2: Sticky-pegajoso-bit(aplicado a directorios) [chmod +tdirectorio] til para aquellos programas que se ejecutan a menudoy por diferentes usuarios. Permite que slo el propietario delfichero, el propietario del directorio el administrador puedan

    renombrar o borrar los ficheros contenidos en l.El formato del comando 'chmod' sera:

    #chmod mbito(nico o mltiple)AccinTipo(admite ms un tipo).

    Por ejemplo:

    #chmod ug+rwx fich_principal --> Permiso de lectura escritura yejecucin para usuario y grupo

    #chmod g-x fichero_principal --> Elimina el permiso de ejecucin algrupo (deja el resto como est)

    #chmod =r fichero_lectura --> nicamente permite la lectura de todoslos usuarios

    Tambin es posible presentar la codificacin de los permisos usandonotacin octal segn el siguiente formato:

  • 8/13/2019 actividades microLINUX doble cara.pdf

    40/88

    40

    +--- Propietario|| +--- Grupo| || | +--- Otros| | |

    v v vrwx rwx rwx111 111 111 cliente1 cli drwxr-x---cliente2 --> cliente2 cli drwxr-x---proveedor1 --> proveedor1 pro drwxr-x---proveedor2 --> proveedor2 pro drwxr-x---proveedor3 --> proveedor3 pro drwxr-x---

    dir_clien/ --> usuario cli drwxrwxr-tdir_prove/ --> usuario pro drwxrwxr-t

    2 Comprobar la correcta asignacin con el comando "#ls -l".

    3 Tomando la identidad de los usuarios que tienen cuenta en el sistemaacceder y crear tanto ficheros como directorios donde despus se comprobar elcorrecto tratamiento de los permisos por parte del S.O..

  • 8/13/2019 actividades microLINUX doble cara.pdf

    41/88

    41

    Actividad 12: Procesos en linux. Estado de un proceso. Ejecucin en primer ysegundo plano.

    Procesos en LINUX-----------------

    El intrprete de comandos tiene como misin atender las rdenes lanzadas

    por el usuario sobre la consola, aunque tambin se encarga del CONTROL DETAREAS; Trabajo consistente en gestionar la correcta ejecucin de todos loscomandos y programas que acontecen en cada instante.

    Cuando un usuario ejecuta un programa, lanza lo que se conoce comoproceso, que es simplemente el nombre que se da a un programa que se estejecutando. El comando 'ps' visualiza la lista de procesos activosactualmente. Por ejemplo:

    #ps

    PID TTY Uid Size State Command1 root 620 S init

    2 root 0 S [keventd]3 root 0 S [ksoftirqd_CPU0]4 root 0 S [kswapd]5 root 0 S [bdflush]6 root 0 S [kupdated]30 tty1 root 620 S -sh31 tty2 root 496 S /sbin/getty 38400 tty232 tty3 root 496 S /sbin/getty 38400 tty322 tty1 root 612 T vi33 tty1 root 608 R ps

    #

    El significado de cada columna es:

    - Columna "PID" representa el identificador del proceso.- Columna "Uid" seala el usuario (uid -identificador de usuario-) quelanz el proceso.- Columna "Size" tamao del proceso.- Columna "State" informa del estado de un proceso. Los valores posiblesson:

    - R (Runnable): En ejecucin.- S (Sleeping): Durmiendo. Espera un suceso del sistema.- T (Traced Stopped): Detenido. Est parado por una sealindicada por el proceso que lo llam (proceso padre) generalmente

    el intrprete de comandos por orden del usuario.- Columna "Command" contiene el nombre del proceso que se estejecutando.

    Estados de un proceso---------------------

    Durante la ejecucin de un proceso este puede pasar por diferentesestados. El estado de un proceso define cual es su actividad en un momentodeterminado. A continuacin se muestran tres posibles situaciones:

    A) Ejecucin normal de un proceso.

    llamada al proceso --> Ejecucin --> Fin(R)

    Ejemplo:

  • 8/13/2019 actividades microLINUX doble cara.pdf

    42/88

    42

    #date Run --> Fin(R) | ^ (R)

    | |v |

    Parada ...[activar] --+(T)

    Ejemplo:

    #vi fichero_usuario

  • 8/13/2019 actividades microLINUX doble cara.pdf

    43/88

    43

    #vi fichero_2... pantalla editor ...

    +%1 Stopped...#fg(el editor vi retorna a estado de ejecucin)

    nota: Mientras un proceso est "durmiendo" no se ejecuta y portanto no consume CPU.

    - Forzar la finalizacin de un proceso, usando la combinacin de teclas+:

    #yes > /dev/null

  • 8/13/2019 actividades microLINUX doble cara.pdf

    44/88

    44

    Ejemplos:

    #bg

  • 8/13/2019 actividades microLINUX doble cara.pdf

    45/88

    45

    Actividad 13: Scripts I. Ficheros de usuario ejecutados por el intrprete decomandos. Variables de entorno.

    Introduccin------------

    El intrprete de comandos no es slo un programa encargado de tomar las

    rdenes escritas por el usuario y llamar al comando o aplicacincorrespondiente trasladndole los parmetros deseados. Tambin dispone demecanismos para la automatizacin y administracin de tareas en el sistemadonde la eficiencia es menos importante que la fcil configuracin,mantenimiento y portabilidad.

    Todo esto se traduce en la definicin de un lenguaje de programacinpropio donde el intrprete ejecuta ordenadamente las acciones recogidas en unguin ("script") escrito por el usuario siguiendo la sintaxis presentada enlos siguientes apartados.

    Qu es un Script?------------------

    Un Script es un fichero de texto escrito por un usuario con rdenes parael intrprete de comandos. Cuando se llama al fichero todas las acciones seejecutan automticamente siguiendo el patrn definido en l. En MS -DOSequivaldra a un fichero por lotes .BAT.

    En su interior, el fichero contendr obligatoriamente en la primeralnea esta secuencia:

    #! /bin/sh

    Donde

    - "#!" identifica al fichero como guin ejecutable por elintrprete de comandos.- "/bin/sh" especifica el intrprete del guin. (En un S.O. LINUXpueden convivir varios intrpretes).

    Un Ejemplo sera:

    #! /bin/shecho hola mundo. # presenta por pantalla la cadena "hola mundo."

    ^|+-- Marca el comienzo de un comentario (no lo tiene

    en cuenta el intrprete) hasta el final de lalnea.

    El nombre del fichero puede ser cualquiera (usar .sh) y tras su creaci nes necesario convertirlo en ejecutable cambiando sus propiedades:

    #chmod +x fichero_script.sh

    La llamada al script necesita estar precedida de la cadena "./":

    #./fichero_script.sh

    El Sistema Operativo identifica un script usando el color verde a llistar los ficheros del directorio que lo almacena.

    Elementos de un Script----------------------

  • 8/13/2019 actividades microLINUX doble cara.pdf

    46/88

    46

    En un guin puede aparecer cualquier orden vlida para el indicativo del

    sistema:

    - Comandos con sus parmetros- llamada a una aplicacin- Redirecciones de salida y/o entrada

    - Concatenacin de rdenes- Uso de caracteres de sustitucin (comodines), etc.

    Adems incluye otras capacidades:

    - Manejo de variables- Ampliacin de comandos

    - Tratamiento de argumentos del script- Comandos de sustitucin- Expansin aritmtica

    - Estructuras de control- Estructura condicional (si ... no)- Estructura iterativa (repetir ...)

    - Seleccin de opciones (En caso de ...)- Funciones

    Aunque existe abundante bibliografa sobre el "arte" de la c reacin descripts aqu slo se mostrarn algunas pinceladas de las diversas opcionesapuntadas.

    Manejo de variables-------------------

    Una variable es la referencia a una zona de la memoria cuyo contenido esmanejado dentro del guin .

    Al iniciar la ejecucin de un Script tambin son accesibles todas lasvariables del intrprete de comandos (llamadas variables de entorno).

    Las variables de entorno se muestran en pantalla gracias al comandoenv, por ejemplo:

    # envUSER=rootOLDPWD=/HOME=/LOGNAME=rootTERM=linuxPATH=/usr/sbin:/bin:/usr/sbin/:/sbin

    SHELL=/bin/shPWD=/home

    Donde la palabra en maysculas es el nombre de la variable y la cadenade caracteres a la derecha del signo "=" representa la informacin quealmacena.

    Cuando sea necesario operar con el contenido de cualquier variabledentro de un Script hay situar el smbolo dolar "$" delante de su nombre.Ejemplo, contenido del fichero "scrpt1.sh":

    #! /bin/shecho Estoy en el directorio $HOME # mensaje de texto por pantalla.

    Al ejecutar el script (recordar, 1 pasar a ejecutable -# chmod +xscrpt1.sh- y 2 llamar con ./script.sh) el resultado en pantalla es:

  • 8/13/2019 actividades microLINUX doble cara.pdf

    47/88

    47

    #./script1.shestoy en el directorio /home#

    Tambin un guin puede definir sus propias variables:

    ... dentro de un guin ...

    nombre_variable=contenido

  • 8/13/2019 actividades microLINUX doble cara.pdf

    48/88

    48

    2 Preparar un script llamado "mi_script.sh" que realice estas acciones:

    - Liste por pginas el contenido del directorio marcado por(/bin).- Cree una copia de s mismo en el fichero copia_mi_script.bkpusando el elemento de redireccin ">".

    Y presente por pantalla los siguientes datos:

    - Nombre del intrprete de comandos (SHELL).- Directorio actual (PWD).- Usuario (USER).

  • 8/13/2019 actividades microLINUX doble cara.pdf

    49/88

    49

    Actividad 14: Scripts II. Ampliacin de comandos y Funciones.

    Ampliacin de comandos----------------------

    Tal y como se apunt en la actividad anterior los scripts permitenaumentar las capacidades vistas hasta ahora del intrprete de comandos. Dentro

    de la ampliacin de comandos existen tres apartados diferentes:

    - Tratamiento de argumentos del script- Comandos del sustitucin- Expansin aritmtica

    Tratamiento de argumentos del script------------------------------------

    Los argumentos en la llamada al script sobre el indicativo del sistema,son considerados como variables especiales en el interior del guin. Losargumentos se referencian as:

    - $0: Nombre del script- $1, $2, ..., $8 y $9: Primer, segundo, ... , octavo y noveno argumento

    Escribir el nmero encerrado entre llaves: ${nn} para los argumentossiguientes.

    Por ejemplo, contenido y ejecucin del fichero scrpt5_arg:

    #! /bin/sh #script para el manejo de argumentosecho $0 $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}

    #./scrpt5_arg 1 2 3 4 5 6 7 8 9 0

    ./scrpt5_arg 1 2 3 4 5 6 7 8 9 0# _

    El comando 'shift' desplaza argumentos, es decir, si inicialmente elargumento 1 corresponde a $1, el 2 a $2 y el 3 a $3, despus de llamar ashift el contenido de las variables valdra: $1 nulo, $2= argumento 1 y $2=argumento 2.

    Por ejemplo, contenido y ejecucin del fichero scrpt6_arg2:

    #! /bin/sh #script para el manejo del comando shift con argumentosecho $1 $2 $3shift

    echo $1 $2 $3#./scrpt6_arg2 a b ca b c

    b c# _

    Esta utilidad facilita el procesado de todos los argumentos en un bucle,usando una nica variable encargada de referenciar desde el primer argumentohasta el ltimo.

    Existen tres variables especiales asociadas al script y sus argumentos:

    - $#: Guarda el nmero de argumentos- $@: Lista todos los argumentos separados por espacios- $$: Almacena el PID (identificador de proceso durante su ejecucin)

  • 8/13/2019 actividades microLINUX doble cara.pdf

    50/88

    50

    Por ejemplo, contenido y ejecucin del fichero scrpt7_arg3:

    #! /bin/sh #script para presenta el valor de $#, $@ y $$psecho $#echo $@echo $$

    #./scrpt7_arg3 a b c...89 tty1 root 624 S /bin/sh ./scrpt7_arg3 a b c...3a b c89# _

    Comandos de sustitucin-----------------------

    Un comando de sustitucin genera la respuesta de un mandato en el sitioocupado por su nombre dentro del script, es decir, primero el comando se llamaen el script y posteriormente el resultado obtenido sustituye al comando entiempo de ejecucin.

    Hay dos formas de expresar un comando de sustitucin:

    A) $(nombre_comando)B) `nombre_comando` (el signo "`" es el acento reflejado -a la

    derecha de la letra "p"-)

    Por ejemplo el contenido y ejecucin del fichero scrpt8 sera:

    #! /bin/shecho La fecha y hora del sistema es: $(date)echo La fecha y hora del sistema es: `date`

    #./scrpt8La fecha y hora del sistema es: Fri Oct 29 18:40:17 UTC 2004La fecha y hora del sistema es: Fri Oct 29 18:40:17 UTC 2004# _

    Expansin Aritmtica--------------------

    El resultado de una expresin aritmtica sustituir a esta durante elprocesado de un script. Su sintaxis es:

    $((expresin))

    Los operadores son:

    + suma- resta* multiplicacin/ divisin

    Slo puede trabajar con valores enteros.

    Por ejemplo, contenido y ejecucin del fichero scrpt9:

    #! /bin/sh

  • 8/13/2019 actividades microLINUX doble cara.pdf

    51/88

    51

    echo $((3 * 4 / 6 + 1 - 3))

    #./scrpt90# _

    Funciones---------

    Una funcin de script, igual que en otros lenguajes de programacin,representa un mtodo donde agrupar un conjunto de sentencias bajo un nombre,el nombre de la funcin. Cuando aparece este nombre en el guin, el intrpreteejecuta automticamente las rdenes asociadas.

    Equivaldra a un pequeo guin (admite incluso parmetros) dentro de unguin principal.

    La forma de escribir una funcin es:

    ...dentro del script...nombre_de_funcin(){

    Sentencia1;Sentencia2;...SentenciaN;

    }

    Un script con funciones (y sus resultado en pantalla) sera:

    Ejemplo1: script10_fun1

    #! /bin/shdatos(){

    echo "usuario actual:" $(whoami) ;echo "fecha y hora:" $(date) ;

    }linea(){

    echo "---------------------------" ;}

    doble_linea(){

    echo"============================" ;}

    texto(){

    echo $@ ;}datoslineatexto saludos desde microLINUXtextotexto fin del mensaje.doble_linea#--- fin del script ---

    #./script10_fun1usuario actual: root

  • 8/13/2019 actividades microLINUX doble cara.pdf

    52/88

    52

    fecha y hora: Sat Oct 30 18:09:17 UTC 2004-------------------------------saludos desde microLINUX

    fin del mensaje.===============================# _

    T A R E A S-----------

    1 Editar y ejecutar todos los scripts mostrados como ejemplo en laactividad.

    2 Crear un script llamado encuentra.sh que busque en el rbol dedirectorios el fichero cuyo nombre es pasado como parmetro.

    3 Realizar un script que convierta a segundos una cantidad cualquierexpresada en horas.

    4 Hacer un guin encargado de calcular la media aritmtica de cincovalores enteros cualesquiera y posteriormente presente por pantalladichos valores y el resultado de la media. Nota: variar la prioridad delas operaciones usando parntesis.

    5 Crear un script con funciones para ver tanto la pertenencia a usuarioy a grupo de los ficheros de un directorio sealado por el usuario, comola fecha y hora del sistema y tambin el contenido del propio fichero.

  • 8/13/2019 actividades microLINUX doble cara.pdf

    53/88

    53

    Actividad 15: Scripts III. Estructuras de control.

    Introduccin------------

    Como cualquier lenguaje de programacin, un script es capaz de decidirlas acciones a tomar segn el resultado de operaciones anteriores. Tambin

    ofrece la posibilidad de repetir rdenes, ya sea un nmero fijo de veces, ohasta el cumplimiento de alguna condicin.

    Estados de salida-----------------

    Puesto que la funcin principal del intrprete de comandos es llamar aotros programas, resulta natural desear controlar la secuencia de ejecucindentro de un script conforme al estado de salida de procesos anteriores. Paralograr esto, cada programa al finalizar devuelve un cdigo al sistemasealando si acab de forma exitosa (cero) o si existi algn error (nmerodistinto de 0). Siempre que el shell necesita tomar una decisin basada en elresultado de otros programas, considera como 'c ierto' a un valor 0 y como

    'falso' a cualquier otro.

    El valor del estado de salida de una orden se obtiene con $?:

    #comando_a_ejecutar_y_sus_parmetros#echo $?--- ('0' verdadero y '1' falso) ---

    Operadores----------

    los operadores son los encargado de determinar si llevar a cabo unasentencia o conjunto de sentencias asociadas. Tal decisin acaba expresndose

    como un valor binario, es decir, 'cierto' o 'falso'.

    Pueden agruparse segn el tipo de operador:

    Operadores Booleanos

    &&

  • 8/13/2019 actividades microLINUX doble cara.pdf

    54/88

    54

    n1 -ne n2

  • 8/13/2019 actividades microLINUX doble cara.pdf

    55/88

    55

    Tambin existen los comandos internos 'true' y 'false' cuya funcin

    consiste simplemente en entregar al sistema el cdigo de terminacin '0' en elprimer caso y '1' en el segundo:

    #true#echo #?

    0# _

    #false#echo #?1# _

    Estructuras de control----------------------

    Hasta ahora es lgico pensar que un script ejecuta siempre el conjuntode sus tareas de forma secuencial puesto que son lanzadas una detrs de otra

    todas las acciones que almacena. Sin embargo existen herramientas cuyopropsito es romper esta linealidad y definen un orden diferente de ejecucin.

    Estas herramientas pueden encontrarse en cualquier lenguaje deprogramacin de alto nivel y son denominadas genricamente "estructuras decontrol" porque representan un patrn de ejecucin para un subconjunto deacciones.

    Las estructuras de control en un script son:

    - Estructura secuencial: Ya conocida, basada en el lanzamiento de unatarea tras otra.

    - Estructura condicional: Un grupo acciones se ejecutar si se cumpleuna condicin.

    - Estructura iterativa: Permite repetir una o varias rdenes segn undeterminado criterio.

    Estructuras condicionales-------------------------

    Las estructuras condicionales son las encargadas de decidir si serealiza una accin o no; esta decisin se toma evaluando una e xpresin.

    Hay 4 variantes de estructura condicional:

    - condicional simple: si (expresin) entonces (rdenes)

    - condicional doble: si (expr) entonces (rds_si) sino ( rds_no)

    - condicionalmltiple: si (Ex_A) entonces (Or_A) sino si (Ex_B)entonces (Or_B)... sino si Ex_x) entonces (Or_x)

    - seleccin de tarea segncondicin: segn (expresin) en caso A(rdenesA) en caso B (rdenesB)... en caso X (rdenesX)

    Donde "rdenes" son acciones que el intrprete de comandos efectuarsiempre que "Expresin" entregue como resultado un valor "verdadero".

    Una variante de la condicional mltiple es la seleccin de tareas segncondicin, donde se apuntan las tareas a ejecutar en funcin del valor de unaexpresin no booleana.

  • 8/13/2019 actividades microLINUX doble cara.pdf

    56/88

    56

    A continuacin se muestra la sintaxis aceptada por el intrprete

    acompaada de un ejemplo:

    Condicional simple:

    if [ expresin ];

    then cdigo_si_expresin_verdadfi

    Ejemplo "sc_if1.sh", necesita dos parmetros en la llamada:

    #! /bin/shif [ $1 -eq $2 ];then

    echo los parAmetros son igualesfiecho fin

    Condicional doble:

    if [ expresin ];then

    cdigo_si_expresin_verdadelse

    cdigo_si_expresin_falsofi

    Ejemplo "sc_if2.sh", necesita dos parmetros en la llamada:

    #! /bin/shif [ $1 -eq $2 ];

    then echo los parAmetros son igualesecho valor $1

    elseecho los parAmetros son distintosecho primer parAmetro: $1echo segundo parAmetro: $2

    fi

    Condicional mltiple:

    if [ expresin1 ];then

    cdigo_si_expresin1_verdadelif [expresin2 ];then

    cdigo_si_expresin2_verdad...elif [expresinN ] ;then

    cdigo_si_expresinN_verdadelse #

    cdigo_si_expresiones1..N_falso # opcionalfi

    Ejemplo "sc_if3.sh", necesita dos parmetros en la llamada:

    #! /bin/shif[ $1 -eq $2 ];then

  • 8/13/2019 actividades microLINUX doble cara.pdf

    57/88

    57

    echo los parAmetros son igualesecho valor: $1

    elif[ $1 -gt $2];then

    echo el primer parAmetro es mayor que el segundoecho valor: $1

    elif[ $1 -lt $2 ];

    then echo el segundo parAmetro es mayor que el primeroecho valor: $2

    fi

    Seleccin segn condicin:

    case _cadena_ inexpresin1)

    cdigo_si_cadena_igual_a_expresin1;;

    expresin2)cdigo_si_cadena_igual_a_expresin2

    ;;...expresinN)

    cdigo_si_cadena_igual_a_expresinN;;

    *)cdigo_cuando_cadena_tiene_otros_valores

    esac

    Ejemplo "sc_if4.sh" sin parmetros:

    #! /bin/shecho pulsa una tecla por favor...

    read tecla # Pide al usuario un valor que guardar en "tecla"case $tecla in # toma el contenido de la varible "tecla"[aeiou])

    echo ha pulsado una vocal;;

    [bcdfghjklmnpqrtvwxyz]) # vale cualquiera de estos caracteresecho ha pulsado una consonante;;

    [A-Z]) # rango de caracteres desde 'A' hasta 'Z'.echo ha pulsado una letra mayUscula;;

    [0-9])echo ha pulsado un nUmero

    ;;*)echo ha pulsado algo distinto a letra O nUmero;;

    esac

    Estructuras iterativas----------------------

    Adems de poder elegir entre varias opciones, el shell nos permiterepetir una secuencia de mandatos un cierto nmero de veces, ya sea fijo odeterminado por el cumplimiento de una condicin en base a una expresinbooleana.

    Hay 3 frmulas de repeticin distintas:

    - Bucle repetir_HASTA_cumplir_condicin ("until"): repetir (rdenes)

  • 8/13/2019 actividades microLINUX doble cara.pdf

    58/88

    58

    hasta (expresin)

    - Bucle repetir_MIENTRAS_se_cumpla_condicin ("while"): mientras(expresin) repetir

    - Bucle repetir_PARA_un_rango_de_valores ("for"): para (expresin segnrango) hacer (rdenes)

    A continuacin se muestra la sintaxis aceptada por el intrpreteacompaada de un ejemplo:

    Bucle hasta:

    until [ expresin ];do

    cdigo_a_iterarmodificar_miembro_de_expresin

    done

    Ejemplo "sc_until.sh" sin parmetros:

    #! /bin/shCONTADOR = 20until [ $CONTADOR -lt 10 ];do

    echo CONTADOR $CONTADORlet CONTADOR=$CONTADOR-1 # let es comando interno del intrprete.

    done

    Bucle mientras:

    while [ expresin ];do

    cdigo_a_iterarmodificar_miembro_de_expresindone

    Ejemplo "sc_while.sh" sin parmetros:

    #! /bin/shCONTADOR=0

    while [ $CONTADOR -lt 10 ];do

    echo el contador vale $CONTADORlet CONTADOR=CONTADOR+1

    done

    Bucle para:

    for VARIABLE in [orden_shell lista de elementos];do

    cdigo_a_iterardone

    Ejemplo 1 "sc_for1.sh" sin parmetros:

    #! /bin/shfor i in $( ls ) ;do

    echo item: $idone

    Ejemplo 2 "sc_for2.sh" sin parmetros:

  • 8/13/2019 actividades microLINUX doble cara.pdf

    59/88

    59

    #! /bin/shfor i in 1 2 3 4 5;do

    echo $idone

    T A R E A S-----------

    1 Editar los scripts de ejemplo y ejecutarlos para ver el resultado porpantalla.

    2 Crear un script que tomando 2 parmetros numricos determine elparmetro de mayor valor y lo presente por pantalla.

    3 Mejorar el script de la actividad anterior para que calcule la mediaaritmtica del valor numrico de un nmero indeterminado de parmetros.(Ayuda: utiliza el comando 'shift')

    4 Generar la tabla de multiplicar del 2, 3, 4 y 5 con un script.(Ayuda: utiliza un for dentro de otro -for anidado-).

  • 8/13/2019 actividades microLINUX doble cara.pdf

    60/88

    60

    (En blanco)

  • 8/13/2019 actividades microLINUX doble cara.pdf

    61/88

  • 8/13/2019 actividades microLINUX doble cara.pdf

    62/88

    62

    # ......

    Puesto que la informacin es muy abundante, se recomienda presentarlapor pginas:

    #dmesg | more (utilizar el tabulador para pasar de una pgina a otra)

    O bien seleccionar aquellas lneas cuyo contenido nos puede interesarcon el comando 'grep':

    #dmesg | grep cadena_a_encontrar

    Por ejemplo, si el usuario desea localizar la informacin del kernelrelacionada con la unidad de disquetes (fd0) escribira en la consola:

    #dmesg | grep fd0Floppy driver(s): fd0 is 1.44 M# _

    Otros datos de inters----------------------

    Otra fuente de informacin es el comando 'uname' encargado de aportardatos referentes a la versin y tipo de sistema operativo as como de lafamilia del procesador.

    Con "uname -a" obtendremos todos los datos posibles.

    #uname -aLinux (none) 2.4.25 # 9 sb abr 24 11:38:08 CEST 2004 : 686 unknown# _

    T A R E A S-----------

    1 Volcar por pantalla los datos del ncleo con 'dmesg'.

    2 Filtrar la informacin anterior y extraer slo la asociada a lasunidades de almacenamiento masivo (hda, hdb, hdc, hdd ...).

    3 Obtener la versin del kernel.

    4 Visualizar las libreras compartidas de microLINU X almacenadas en"/lib" y su tamao.

  • 8/13/2019 actividades microLINUX doble cara.pdf

    63/88

    63

    Actividad 17: Informacin del kernel II. Datos del sistema en tiempo deejecucin. (/proc).

    El directorio "/proc"---------------------

    El directorio "/proc" aparenta ser un directorio ms. Cualquier usuario

    accede a l con el comando 'cd', vuelca el contenido con 'ls' o visualiza elinterior del los ficheros con 'cat'. Sin embargo, ninguno de los ficheros deeste directorio ocupa realmente espacio en disco. El ncleo captura todas lasacciones hechas sobre "/proc" y genera una respuesta al vuelo. En otraspalabras, cuando es solicitado un listado de archivos con 'ls', el ncleo logenera dinmicamente entregando el contenido deseado.

    Esto queda ms claro usando algunos ejemplos. A continuacin se muestrala lista de archivos y subdirectorios situados en "/proc".

    #ls /proc1 5 execdomains kcore mounts sys2 6 filesystems kmesg net sysvipc

    3 bus fs ksyms partitions tty30 cmd ide loadarg pci uptime31 cpuinfo interrupts locks self version32 devices iomem meminfo slabinfo363 dma ioports misc stat4 drivers irq modules swap# _

    Los nmeros representan directorios de cada proceso en ejecucin delsistema. Por ejemplo la informacin sobre el proceso ID 363 es:

    #ls /proc/363cmd environ fd mem root

    cwd exe maps mounts stat# _

    Estos archivos contienen diversos datos sobre el proceso. Por ejemplo,el fichero "cmdline" muestra la lnea de comandos con la que el proceso selanz. El fichero "status" da informacin sobre el estado del proceso y "cwd"enlaza con el directorio de trabajo de ese proceso.

    Todos los datos relacionados con la memoria del sistema estn guardadosen el fichero "/proc/meminfo". Llamando al comando 'free' se ver que lainformacin es la misma, slo que los nmeros se han reordenado. Este comandolo nico que hace es leer en "/proc/meminfo" y colocar un poco la escritura enpantalla. La mayor parte de las herramientas con funciones de consulta

    asociada a los dispositivos conectados funcionan de esta manera.La informacin presente en "/proc" es til a la hora de aadir un nuevo

    dispositivo. Por ejemplo, generalmente los elementos conectados al computadornecesitan una serie de direcciones de entrada salida (E/S) para podercomunicarse con el procesador central o con el sistema. Si dos dispositivos seencuentran configurados para utilizar las mismas direcciones de E/S nuncapodr conocerse en realidad quin llama o a quin se estn pasando los datos,un autntico desastre. Puede evitarse comproba ndo siempre cules son lasdirecciones en uso mirando en "/proc/ioports".

    El ncleo slo nos presenta las direcciones de dispositivos que hadetectado y reconocido. En un sistema correctamente configurado, se debenpresentar todos los dispositivos.

    Es posible an conocer ms informacin de "/proc" necesaria para nuevasconfiguraciones. Por ejemplo, "/proc/interrupts" lista los nmeros de

  • 8/13/2019 actividades microLINUX doble cara.pdf

    64/88

    64

    interrupciones ocupadas (IRQ) y "/proc/dma" los canales de acceso directo amemoria (DMA) en uso.

    T A R E A S-----------

    1 Presentar el contenido del directorio "/proc".

    2 Ejecutar una tarea en segundo plano, por ejemplo "#vi prueba &" yvolver a listar el contenido de "/proc".

    3 Buscar en el directorio del nuevo proceso en ejecucin (corresponde a'vi') los ficheros "cmdline" y "status" y volcar por pantalla sucontenido.

    4 Mostrar tambin en pantalla los puertos de E/S, las interrupciones ycanales de DMA en uso.

    5 Obtener la versin del kernel tomada de "/proc/version".

  • 8/13/2019 actividades microLINUX doble cara.pdf

    65/88

    65

    Actividad 18: Utilidades I. Comandos de informacin.

    Dentro de esta actividad aparece una recopilacin de los comandos de usoms frecuente que pueden encontrarse en cualquier entorno LINUX. Estnagrupados en los siguientes tipos:

    - Comandos de pantalla

    - Informacin de disco- Comandos estadsticos

    Comandos de pantalla--------------------

    MicroLINUX admite dos rdenes para refrescar los datos presentados en laconsola:

    - 'clear' : Limpia la pantalla- 'reset' : Reinicia la pantalla

    A efectos prcticos ambos comandos tienen el mismo resultado, tras su

    ejecucin el indicativo del sistema se sita en la primera lnea de lapantalla. No requieren parmetros en su llamada.

    Comandos de informacin de disco--------------------------------

    Ofrecen informacin relacionada con ficheros, directorios, usuarios yprocesos:

    -'df' : Indica el % de utilizacin de la unidad de almacenamiento.-'du' : Lista el tamao en KBytes de cada directorio.-'basename' : Extrae el nombre de fichero de un "path" completo indicado

    como parmetro.

    -'dirname' : Igual que el anterior pero en lugar del nombre muestra eldirectorio.-'env' : Muestra las variables de entorno del intrprete de

    comandos y su contenido.-'pidof' : Permite obtener el identificador de un proceso del

    sistema.-'uniq' : Presenta por pantalla el contenido de un fichero excepto

    las lneas duplicadas.-'which' : Cuando es llamado con el nombre de un comando externo

    devuelve su localizacin en el sistema. Busca en losdirectorios sealados por la variable PATH.

    -xargs : Permite ejecutar un comando sobre cada uno de los itemsentregados en la entrada estndar.

    Ejemplos en el uso de estos comandos:

    #dfFilesystem 1k-blocks Used Available Use% Mounted onrootfs 1793 1352 441 75% //dev/ram0 1793 1352 441 75% //dev/fd0 1412 1271 69 95% /mnt/disquete# _

    Donde aparecen datos de cada sistema de ficheros: la capacidad total, suporcentaje de uso y el punto de montaje.

    #du /usr/local109 /usr/local/bin10 /usr/local/lib/tcc/include21 /usr/local/lib/tcc

  • 8/13/2019 actividades microLINUX doble cara.pdf

    66/88

    66

    324 /usr/local/lib4 /usr/local/include438 /usr/local# _

    La columna de la izquierda representa el tamao del directorio de suderecha.

    # basename /usr/local/lib/tcc/libtcc1.alibtcc1.a# _

    # dirname /usr/local/lib/tcc/libtcc1.a/usr/local/lib/tcc# _

    Manejados juntos 'basename' y 'dirname' ayudan a obtener respectivamenteel nombre y directorio de un path (fichero y camino relativo o absoluto)entregado por el usuario.

    #envUSER=rootOLDPWD=/usr/localHOME=/LOGNAME=rootTERM=linuxPATH=/usr/sbin:/bin:/usr/bin:/sbinSHELL=/bin/shPWD=/home# _

    Las variables listadas estn disponibles desde el indicativo del sistemay tambin en el interior de cualquier script. Por ejemplo, al pedir el camino

    reconocido por el intrprete aparece en pantalla:

    #echo $PATH/usr/sbin:/bin:/usr/bin:/sbin# _