Curso Linux _ Hector Perez_ RePorTe

39
                              1 Iniciación al Sistema Operativo Linux  Septiembre de 2006 Profesor: Héctor Perez E-mail: [email protected] Red Porteña Telemática - Ministerio de Educación Gobierno de la Ciudad Autónoma de Buenos Aires

description

Curso Linux Hector Perez RePorTe

Transcript of Curso Linux _ Hector Perez_ RePorTe

Page 1: Curso Linux _ Hector Perez_ RePorTe

                               1

Iniciación al Sistema Operativo Linux  

Septiembre de 2006 

Profesor: Héctor Perez E­mail: [email protected]

Red Porteña Telemática ­ Ministerio de Educación Gobierno de la Ciudad Autónoma de Buenos Aires

Page 2: Curso Linux _ Hector Perez_ RePorTe

2

Sobre el docente 

Héctor Perez se ha desempeñado por varios años como docente de informática de la Escuela Técnica 30 del Distrito Escolar Nº 2, Norberto Piñero. Actualmente integra el equipo de  soporte técnico a escuelas Medias del programa Re.Por.Te., dependiente del Ministerio de  Educación del Gobierno de la Ciudad Autónoma de Buenos Aires.Posee   una   amplia   formación   técnica   y   se   encuentra   finalizando   la   carrera   de  “Automatización   y   Robótica”   en   el   Instituto   Superior   del   Profesorado   Técnico   de   la  Universidad Tecnológica Nacional.

Sobre el Programa Re.Por.Te. REPORTE,   la  Red  Porteña  Telemática  de  Educación,   tiene   como  uno  de   sus   objetivos,  diseñar, gestionar y promover el uso de las tecnologías de la información y la comunicación  en el ámbito de la Secretaría de Educación de la Ciudad de Buenos Aires.

REPORTE, se constituye así como la coordinación que se ocupa, entre otras tareas, de la  Intranet educativa de la Ciudad de Buenos Aires, del Portal de Educación de la Ciudad y del  uso de las aplicaciones de Internet en las escuelas públicas de la ciudad.

Page 3: Curso Linux _ Hector Perez_ RePorTe

                               3

Índice Portada Página 1Sobre el docente Página 2Sobre el Programa Re.Por.Te. Página 2Índice Página 3Introducción  Página 4Historia de GNU/Linux y el copyright Página 5Las bases de GNU/Linux Página 6Distribuciones Página 6Algunos conceptos básicos Página 7El núcleo del Sistema (Kernel) Página 8Procesos Página 8El manual del sistema Página 8Introducción al Shell de Linux Página 8Inicio y primeros pasos Página 9Administración de usuarios Página 9Adición y eliminación de usuarios Página 9Definición de contraseñas  Página 9Trabajo con grupos Página 9Utilización de comandos básicos  Página 10Utilización de los comandos de manipulación de directorios  Página 10Gestión de Archivos y Directorios Página 11Arranque y apagado del Sistema Página 12Comprender el proceso de arranque Página 12Servicio y Demonios Página 14Sistema de Archivos   Página 14Uso básico del Editor VI Página 15Montar y desmontar sistemas de archivos    Página 16Interprete de Comandos Página 16Búsqueda de Archivos  Página 20Copias de Seguridad Página 21Permisos de archivos Página 22Ampliando Conceptos sobre procesos   Página 27Planificación de tareas con CRON  Página 27Instalación de paquetes Página 28Introducción a redes TCP/IP Página 29Compartiendo archivos con NFS Página 29Shell scripting Página 31

Page 4: Curso Linux _ Hector Perez_ RePorTe

4

Introducción  En este curso se explicarán   conceptos que inciden en el conocimiento interno del sistema operativo. A estas alturas más de uno empezará  a preguntarse si es necesario conocer todos  estos detalles para un simple uso de un S.O. Lo cierto es que actualmente existen escritorios  gráficos que permiten hacer muchas cosas de forma intuitiva, tenemos por ejemplo KDE o  GNOME. Sin embargo la amigabilidad tiene un precio; los entornos intuitivos consumen muchos recursos de CPU y memoria. Este curso esta orientado al uso de Linux desde la consola.

Muchos no consideran necesario que sea importante asimilar conceptos básicos previos ya  que la experiencia anterior con otros S.O. más   intuitivos les  indujo a pensar que con el  simple uso del sistema podrían alcanzar ese conocimiento por ellos mismos. Los que tuvieron  la suerte de recibir un buen curso o para los que tuvieron la paciencia de investigar por su  cuenta   los   fundamentos   de   este   S.O.   es   fácil   que   se   enamoren  de   el.  Unix   siempre  ha  despertado este  tipo de reacciones: hay quien  lo adora y hay quien  lo odia.  Los que  lo  adoran aseguran que es un SO sencillo, elegante, potente, seguro y flexible. Los que lo odian  dicen  que  es  difícil  de  usar.   Intentaremos  con este  curso  que   llegue  a  pensar  como  los  primeros.

Héctor Perez

Page 5: Curso Linux _ Hector Perez_ RePorTe

                               5

Historia de GNU/Linux y el copyright

Muchas personas creen que Linux es el primer SO que surge con las características de libre y con los fuentes a disposición, pero esto no es tan así. No podríamos hablar de la historia de Linux sin incluir a GNU ya que este proyecto de la Free Software Foundation fue el comienzo de lo que es Linux hoy en día. La FSF fue creada por Richard Stallman, quién una vez que entró en el M.I.T en 1971 comenzó a dar muestras de su gran habilidad para la programación. El proyecto GNU fue el precursor de lo que es el SO Linux de hoy en día.

Este proyecto comenzó en el año 1984 dándole el nombre recursivo de GNU que significa GNU no es UNIX (GNU's not UNIX), para crear un sistema operativo compatible con UNIX. Este proyecto es el padre de un sinnúmero de programas que actualmente forman parte de cualquier distribución de Linux y por ello es correcto hablar de GNU/Linux en lugar de Linux a secas.

Algunos   de   los   programas   que   se   crearon   a   partir   del   proyecto   GNU   son   el   GCC,   un compilador de lenguaje C, el GNU Emacs, un editor de textos, las librerías GNU de lenguaje C y además uno de los proyectos más grandes como lo es el entorno gráfico GNOME.

La idea era simple; se podía tener todo un SO funcional, libre y gratuito. Pero no hay que engañarnos con el significado de libertad. La libertad del software se basa en que uno es dueño del programa que adquiere y/o desarrolla por ello tiene derecho a obtener sus fuentes y hacer lo que se quiera con él, cambiarlo, mejorarlo y hasta venderlo.

Linux esta regido por lo que se denomina Licencia Pública General de GNU, o GPL por General Public License. La GPL fue desarrollada por la FSF para el proyecto GNU y hace una serie de previsiones sobre la distribución y modificación del software.

Originalmente Linus Torvalds lanzó Linux con una licencia más restrictiva que la GPL que permitía que fuese distribuido libremente pero prohibía lucrar con él. Sin embargo la GPL autoriza a la gente a vender su software, aunque no permite restringir el derecho que tiene el comprador de copiarlo y venderlo a su vez.

Hay que aclarar que libre no significa de dominio público. El software de dominio público pertenece   a   la   humanidad   y   carece   de   copyright.   El   software   regido   por   GPL   si   tiene copyright que pertenece al autor y esta protegido por estas leyes internacionales. El software GPL tampoco es shareware. El shareware es propiedad del autor y exige a los usuarios que paguen cierta cantidad de dinero por usarlo y/o obtener mayores funcionalidades. En cambio el  software GPL puede ser distribuido y usado sin pagar a nadie.  La GPL permite a  los usuarios el modificar los programas y redistribuirlos. Sin embargo, cualquier trabajo derivado de un programa bajo licencia GPL también se tendrá que regir por esta licencia.

Cuando Linus Torvalds comenzó con el desarrollo de Linux, mucho del trabajo ya estaba hecho por el proyecto GNU, y el kernel que Linus Torvalds y un ejército de programadores pudo hacer, fue el pegamento que unió todo el sistema que hoy conocemos.

Page 6: Curso Linux _ Hector Perez_ RePorTe

6

Las bases de GNU/Linux

GNU/Linux es  una  re­implementación de   la   funcionalidad de  Unix  de   libre distribución. Como habíamos dicho,  su núcleo o kernel   fue  desarrollado en sus  comienzos  por  Linus Torvalds.  Fue un desarrollo de muchos programadores de todo del mundo, que gracias a Internet pudieron ir coordinando el proyecto. Una curiosidad es que a pesar de ser en un 95% compatible con la funcionalidad de UNIX, el kernel Linux no usa ni siquiera una línea del UNIX de la empresa AT&T.Es más, como antes dijimos, muy buena parte del software del SO GNU/Linux esta bajo licencia GPL.

Linus Torvalds se inspiró  en otro sistema operativo desarrollado por Andrew Tenenbaum, llamado MINIX, un SO pensado con fines educativos y que Andy Tenenbaum explica muy bien en su Libro Sistemas Operativos. 

La meta de Linus era mejorar este SO que presentaba sus limitaciones por ser un sistema pensado para enseñar, no para fines comerciales. El kernel Linux aprovecho en sus comienzos de  las características que contaba de conmutación de tareas del  flamante Intel­386 y fue escrito en su totalidad en ensamblador. La versión original, la 0.0.1, ni siquiera funcionó y se tuvo que esperar hasta el 5 de octubre de 1991 cuando Linus anunció la versión 0.0.2 donde ya se podía ejecutar el shell GNU Bash y el GCC (compilador de C de GNU). Luego de un muy corto tiempo de liberada la versión 0.0.3, se saltó gracias a la ayuda de una comunidad de programadores que ayudaron en el proyecto, a la versión 0.10. Se alcanzó la versión 0.95 tras muchas revisiones hasta que en el año 1992 se logró la primer versión libre de errores, la 1.0.Hoy el Kernel se encuentra en una versión estable de la serie 2.6.x y sigue evolucionando, adoptando a su paso toda una serie de nuevas tecnologías, que son probadas y arregladas por los desarrolladores y beta­testers antes de que salgan a las masas.Para entender algo más acerca de la versiones, hay que decir que una versión con numero de subversión par es estable. Ej. 2.6.x, siendo x el  número que indica el nivel de revisión o parche. En cambio una versión con número de subversión impar Ej. 2.7.x, es una versión inestable que todavía no es 100% confiable.Hoy GNU/Linux se perfila como uno de los mejores SO que existen, compitiendo con SO's que fueron líderes hasta el momento. Todo gracias a personas como Richard Stallman y Linus Torvalds que vieron que una empresa como esta era posible. También hay que agradecer a Internet, ya que sin su existencia esta tarea hubiera resultado mucho más difícil.

Distribuciones

Linux es un núcleo de un SO pero para tener un SO completo hay que dotarlo de un montón de utilidades, una estructura de directorios, así como de archivos de configuración y scripts para  distintas   tareas.  Un script  es  un  archivo  que  contiene  órdenes  para  el   intérprete  de comandos.Algunas distribuciones incluyen software comercial de su propiedad. Otras en cambio solo incorporan software GPL o similar (Software Libre) Distribuciones libres son Slackware y Debian por ejemplo.  Distribuciones propietarias son Fedora, Suse y Mandriva entre otras.Cada distribución tiene sus propias características que la hacen más o menos adecuada para ciertos usos. Uno de los aspectos mas importantes de las distribuciones es su sistema de actualización de paquetes que permiten actualizar el SO a cada nueva versión teniendo en 

Page 7: Curso Linux _ Hector Perez_ RePorTe

                               7

cuenta las dependencias entre unos paquetes y otros.

Algunos conceptos básicos

Variables de entorno: 

En UNIX las variables del sistema se llaman variables de entorno y para consultar el valor de una variable se utiliza el comando echo 

echo $VAR   "se coloca el signo $ delante del nombre de la variable" 

Directorios: 

En UNIX la estructura de los directorios es en forma de árbol, y para localizar un punto cualquiera hay que utilizar cada uno de los directorios que conducen a ese punto desde el directorio raíz / Ese camino se llama PATH.  

La variable PATH guarda esos caminos necesarios para ubicar los archivos binarios 

echo $PATH

Si   un   comando   no   esta   ubicado   en   ninguno   de   estos   caminos   deberá   ser   referenciado indicando el camino completo. El comando which  se usa para saber donde se encuentra un  binario. 

which  echo 

Los comandos cd mkdir y pwd sirven para cambiar de directorio actual, crear un directorio y averiguar en que directorio nos encontramos actualmente.

Linux es  un  sistema operativo  multiusuario  y  eso   implica  una   filosofía  de  uso  especial. Cuando un usuario va a usar un SO tipo Unix lo primero que debe hacer es identificarse para ser autorizado a abrir una sesión de trabajo. También es multitarea y por ello en el mismo instante  varios  procesos  pueden  estar  corriendo  y  cada  uno  puede  pertenecer   a  usuarios distintos. La información que se guarda en el disco duro también puede pertenecer a distintos usuarios y por esto existen atributos de usuario que se asocian a los archivos. En función de esto habrá cosas que estarán permitidas a ciertos usuarios y a otros no. Los usuarios pueden estar organizados en distintos grupos a fin de poder manejar permisos a nivel de grupo.  Los usuarios y los grupos dentro del sistema se manejan como un número llamado UID y GID respectivamente.

Existe un usuario especial que goza absolutamente de todos los privilegios y que se llama root. Su número de usuario es decir su UID es 0.

EL NUCLEO DEL SISTEMA (Kernel)El  kernel   es   el   encargado  de   realizar   la  mayoría  de   las   funciones  básicas  del   sistema y gestiona entre otras cosas la memoria, los archivos, los usuarios, los procesos, etc.

Page 8: Curso Linux _ Hector Perez_ RePorTe

8

PROCESOSUn proceso a diferencia de un programa es algo vivo, es decir algo que esta funcionando constantemente. A cada proceso le corresponde un número de identificación PID. Además de esto guarda la identificación del usuario propietario UID.

EL MANUAL DEL SISTEMAman es el manual en línea de todos los sistemas tipo UNIX. 

Ejemplo: man ls

INTRODUCCION AL SHELL DE LINUXUna shell no es solo un intérprete de comandos. Una shell es sobre todo un intérprete de un potente lenguaje. Un introductor (en Ingles llamado prompt) es aquello que el interprete de comandos muestra para indicar que esta esperando a que se introduzca una orden.

A continuación veremos algunos de los elementos del lenguaje shell­script

Comandos: son archivos ejecutables

Opciones: generalmente las opciones de un comando son letras precedidas del signo ''­"

Operadores de control:  ||    &    &&  ;   ;;  ()  |

Page 9: Curso Linux _ Hector Perez_ RePorTe

                               9

INICIO Y PRIMEROS PASOS

Al arrancar el sistema tendrá que colocar su nombre de usuario y contraseña. Una cuenta de usuario   proporciona   al   usuario   un   directorio   de   trabajo   predeterminado,   denominado directorio /home o inicial.

Administración de usuariosEn muchos sistemas, el responsable del mantenimiento de las cuentas de usuarios recibe el nombre de administrador del sistema. A este también se lo suele denominar superusuario puesto que controla todo el sistema y en sistemas Linux se denomina root.El administrador del sistema tiene la responsabilidad de administrar a los usuarios. Esta tarea incluye darles de alta para que puedan entrar al sistema, establecer privilegios, crear y asignar directorios, asignar usuarios a grupos y darles de baja cuando sea necesario.Cada usuario deberá tener un nombre de entrada único, además de una contraseña. 

Adición y eliminación de usuariosCuando se da de alta un usuario, el resultado es una entrada en el archivo de contraseñas de usuarios, /etc/passwd.

Para agregar un usuario al sistema: 

adduser  [nombre_de_usuario]

Para eliminar un usuario: 

deluser  [nombre_de_usuario]  "elimina el usuario del sistema pero no elimina su directorio en /home" 

Con esto se logra impedir el ingreso del usuario al sistema pero se conservan sus archivos.

deluser ­­remove­home  [nombre_de_usuario] "elimina el usuario y su directorio en /home"

Se elimina completamente el usuario y todo su directorio de trabajo.

Definición de contraseñas Las contraseñas se definen utilizando el comando passwd. El administrador del sistema debe definir una contraseña para cada usuario que se añada al sistema. Los usuarios pueden cambiar su contraseña al entrar al sistema.El sistema encripta la contraseña y la guarda en el archivo /etc/shadow. Piense que una buena contraseña es un requisito básico para la seguridad, es aconsejable cambiarla de vez en cuando y enseñar a los usuarios a elegir una contraseña adecuada.

Quizás necesitemos cambiar momentáneamente de usuario, por ejemplo, pasar a ser el root para realizar alguna tarea de administración; usamos entonces el comando  su (switch user).

Trabajo con gruposCada usuario es miembro de un grupo. La información sobre los grupos se guarda en el archivo /etc/group. 

Page 10: Curso Linux _ Hector Perez_ RePorTe

10

Para adicionar un nuevo grupo usamos  addgroup [nombre_de_grupo]Para eliminar un grupo usamos  delgroup [nombre_de_grupo]

Para agregar usuarios a un determinado grupo simplemente editamos el archivo /etc/group.

UTILIZACION DE COMANDOS BASICOS

Es   necesario   conocer   algunos   comandos   básicos   para   poder   desplazarse   por   el   sistema. Muchos   de   los   comandos   que   se   presentan   en   los   apartados   siguientes   son,   de   hecho, programas de utilidad que Linux utiliza para ampliar su grupo de comandos. Estos programas se encuentran en los directorios /bin, /sbin y /usr/bin.

Para obtener ayuda inmediata sobre algún comando de Linux escriba man [comando].

Utilización de los comandos de manipulación de directorios

cd   cambia el directorio de trabajo actual

cd ..  vuelve al directorio inmediato anterior

cd /   va directamente al directorio raíz

ls    muestra información acerca de archivos y directorios

mkdir    crea nuevos directorios

rmdir    borra el directorio

Al terminar de trabajar con el sistema deberá "desconectarse" ingresando logout o exit

Page 11: Curso Linux _ Hector Perez_ RePorTe

                               11

GESTION DE ARCHIVOS Y DIRECTORIOS

Utilización de los comandos de manipulación de archivos

cp : copia archivos.

cp  [/desde/nombre de archivo]   [/hasta/nombre de archivo]

mv :  mueve archivos.

mv  [/desde/nombre de archivo]   [/hasta/nombre de archivo]

rm: borra archivos.

rm [nombre de archivo]     

La opción ­r permite borrar un árbol de directorios completo.   

rm ­r nombre de directorio     "use con cuidado esta sentencia"

less: muestra el contenido de un archivo.

Ej   less /etc/passwd

"comandos simulares a less  son  cat  y  more".

clear: borra la pantalla del terminal.

Page 12: Curso Linux _ Hector Perez_ RePorTe

12

ARRANQUE Y APAGADO DEL SISTEMA

Desconexión del sistema El administrador del sistema puede apagar el equipo usando shutdown

shutdown ­h now  apaga el sistema ahora

shutdown ­h 30  apaga el sistema en 30 minutos

Si cambiamos el parámetro h por r hacemos un reinicio del sistema en lugar de apagarlo.

Ej: shutdown ­r 23:00  

COMPRENDER EL PROCESO DE ARRANQUE

Al arrancar, el Kernel de Linux ejecuta el programa  init que se encuentra en el directorio 

/sbin.init inicia todos los procesos que requiere el sistema para ejecutar las tareas, como permitir operaciones de red, utilizar el mouse y funciones básicas como la terminal de E/S. El sistema de niveles de ejecución SysV init provee de un proceso estándar para controlar cuáles programas init lanza o detiene cuando se inicializa un nivel de ejecución.

Los archivos de configuración para SysV init están en el directorio /etc.

init.d/rc0.d/rc1.d/rc2.d/rc3.d/rc4.d/rc5.d/rc6.d/

El  directorio  /etc/init.d/  contiene  los scripts  usados por  el  comando  /sbin/init  cuando se controlan los servicios. Cada uno de los directorios numerados representa los seis niveles de ejecución predeterminados.La idea detrás de los niveles de ejecución de SysV init gira alrededor del hecho que sistemas diferentes se pueden usar de formas diferentes. Por ejemplo, un servidor corre de forma más eficiente sin el  consumo de recursos del sistema excesivo creado por el sistema X. Otras veces, el administrador del sistema puede necesitar operar el sistema en un nivel más bajo de ejecución para realizar tareas de diagnóstico, como reparar corrupción del disco duro en el nivel de ejecución 1.

Page 13: Curso Linux _ Hector Perez_ RePorTe

                               13

Las características de un nivel de ejecución dado determinan qué servicios son detenidos o iniciados   por  init.   Por   ejemplo,   el   nivel   de   ejecución   1   (modo   usuario   único)   detiene cualquier servicio de red, mientras que el nivel 3 arranca estos servicios. Asignando servicios específicos a ser detenidos o iniciados en un nivel dado,  init  puede fácilmente cambiar el modo de la máquina sin que el usuario tenga que manualmente arrancar o detener servicios. 

Niveles de ejecución:              0  Parar          1  Modo texto usuario único          2  Sin usar (usuario­definible)          3  Modo texto multiusuario completo          4 Sin usar (usuario­definible)          5 Modo gráfico multiusuario completo           6 Re­arrancar 

Generalmente, los usuarios utilizan el nivel de ejecución 3 o nivel de ejecución 5 — ambos modos multiusuario. Ya que los niveles de ejecución 2 y 4 no son usados, los usuarios a veces personalizan estos niveles para cubrir necesidades específicas.

El nivel de ejecución por defecto para el sistema está listado en /etc/inittab. Para saber el nivel de ejecución por defecto de un sistema, busque por la línea similar a la que se muestra abajo cerca de la parte superior de /etc/inittab.

id:5:initdefault:

El  nivel  de  ejecución  predeterminado  en  este   ejemplo  es   cinco,   como  indica  el  número después del punto y coma. Para cambiarlo, modifique /etc/inittab como usuario root.

Page 14: Curso Linux _ Hector Perez_ RePorTe

14

SERVICIOS Y DEMONIOSServicios y demonios guardan una estrecha relación con los niveles de ejecución.

El nombre de "servicio" es un poco ambiguo pero generalmente se refiere a un demonio del sistema.

Cada uno de ellos tiene un archivo asociado en /etc/init.d que   es un script que acepta un argumento (podría ser, al menos, "start" o "stop", aunque pueden ser otros complementarios para proveer al usuario de opciones adicionales, por ejemplo "restart", "status"...). 

Demonio: en Unix/Linux se conoce como un programa que permanece en segundo plano ejecutándose continuamente para dar algún tipo de servicio. Ejemplos de demonio, son los servidores de correo, impresora, sistemas de conexión con redes, etc.

Ejemplo: Podemos detener y re­arrancar el servidor de correo sendmail escribiendo:

/etc/init.d/sendmail stop/etc/init.d/sendmail start

SISTEMA DE ARCHIVOSBajo  Linux,   el   espacio  de   archivo  que   resulta   visible   para   los   usuarios   se   basa   en  una estructura de árbol, con la raíz en la parte superior. Los distintos directorios y archivos se ramifican hacia abajo desde la raíz. El directorio superior se conoce como directorio raíz /.

/    /bin    /dev    /etc    /home               /carlos               /maria    /lib    /proc    /root    /sbin    /usr            /bin            /etc            /lib    /tmp     /var              /spool                        /mail                        /news            /adm

Page 15: Curso Linux _ Hector Perez_ RePorTe

                               15

/bin contiene  programas ejecutables (binarios)./sbin contiene programas ejecutables del sistema y solo root tiene permisos para ejecutarlos.

El directorio /etc contiene la mayoría de los archivos de configuración del sistema. Aquí se encuentra por ejemplo el archivo de contraseñas (passwd), así como la lista de archivos que se montaran al iniciar el sistema (fstab). Además están los archivos de comando de inicio de Linux, etc.

/lib  se almacenan aquí   las bibliotecas compartidas que utilizan los distintos programas al ejecutarse.

/dev  contiene   archivos   especiales   que   se   conocen   como   "archivos   de  dispositivos"   y   se utilizan para acceder a los distintos dispositivos de hardware que hay en el sistema.

/proc  es realmente un sistema de archivos virtual. Se utiliza para leer información de los procesos desde la memoria.

/tmp se utiliza para almacenar archivos temporales que crean los programas al ejecutarse.

El directorio /home es el directorio base para los directorios iniciales de los usuarios.

/usr  contiene   varios   subdirectorios   que   a   su   vez   contienen   programas   importantes   del sistema; normalmente en /usr están los paquetes de software que se instalan.

USO BASICO DEL EDITOR VI

VI es el editor estándar en cualquier UNIX  y es de vital importancia su manejo, aunque sea de manera básica. 

Para  abrir el editor simplemente tipee  vi 

A diferencia de otros editores vi    inicia en modo comandos por  lo que para comenzar a escribir deberemos pasar a modo edición  pulsando  a o i.   Una vez que hemos  terminado de editar  deberemos pasar nuevamente a  modo comandos pulsando ESC. Y para guardar el archivo ponemos :w  con lo que se nos pedirá un nombre de archivo. Luego para cerrar el editor y volver al shell ponemos :q   y   si queremos salir sin guardar  :q!   

Page 16: Curso Linux _ Hector Perez_ RePorTe

16

MONTAR Y DESMONTAR SISTEMAS DE ARCHIVOS

Linux utiliza el comando mount para que el usuario pueda montar un sistema de archivos. 

mount  device  mountpoint

device es el dispositivo físico que se quiere montar y mountpoint el punto de montaje en el árbol de archivos donde se desea que aparezca.

Ej :  mount    /dev/cdrom   /cdrom

        mount    /dev/fd0   /floppy

        mount    /dev/hda1  /mnt

        mount    /dev/sda2  /mnt

Para desmontar se usa umount      Ej :  umount  /mnt

Se puede montar sistemas de archivos en el arranque editando /etc/fstab.

INTERPRETE DE COMANDOS

Linux presenta una interfaz de línea de comandos, llamada consola o shell, la cual permite al usuario interactuar con el sistema operativo de una forma amigable. BASH (acrónimo de Bourne­Again Shell) es un intérprete de comandos compatible con sh, puede leer comandos desde la entrada estándar (standar input) o de un archivo.

Una salida típica de un shell de usuario puede verse así:

~ $ _

Si la salida contiene un signo de almohadilla (#), en lugar del signo de dólar, quiere decir que esta loggeado como root.

~ # _

a. Completando comandos:

$ ls /bin/m[tab][tab] mkdir mkfifo mknod more mount mv 

$ ls /bin/mor[tab] $ ls /bin/more

Page 17: Curso Linux _ Hector Perez_ RePorTe

                               17

b. Repitiendo el último comando que se digitó:

$ [UP]

c. Utilizando el historial: 

El comando history mostrará un historial enumerado de los últimos comandos digitados.

$ history  1 cd /home/  2 cd /mnt/cdrom/  3 ls  4 history

para hacer uso de alguno de los comandos digitados, es posible llamarlos utilizando el signo de admiración (!) seguido del número del comando digitado en el historial, por ejemplo:

$ !3 ls arch* domainname@    ln*   sed* awk@ du*  loadkeys*  setterm* bash* echo*  login*  sh@ bunzip2@ ed* ls* shred*

d. Ejecutando una lista de comandos: 

Para ejecutar más de un comando en la línea de entrada, solamente digite cada comando en orden separando cada comandos con un punto y coma (;). Por ejemplo para limpiar la consola y luego desloggearse del sistema puede hacer:

$ clear; logout

e. Redireccionado la entrada y salida: 

Utilice el operador '>' para redireccionar la salida estándar de un comando a un archivo al cual se va a escribir la salida, y el operador '>>' para anexar la salida a un archivo (el archivo puede existir, o no). Por ejemplo:

$ ls > /tmp/contenido.de.bin

f. Mostrando el contenido de un archivo: 

Hay herramientas para ver el contenido de un archivo de texto entre ellas las más comunes son: less, more, most y cat, aunque el comando cat tiene más funcionalidad que solamente mostrar el contenido de un archivo.

Page 18: Curso Linux _ Hector Perez_ RePorTe

18

Del ejemplo anterior:

$ cat /tmp/contenido.de.bin arch* awk@ bash* bunzip2@ bzcat@ bzip2* ... 

O bien se puede direccionar la entrada de cat del archivo contenido.de.bin, de la siguiente forma:

$ cat < /tmp/contenido.de.bin arch* awk@ bash* bunzip2@ bzcat@ bzip2* ...

g. Redireccionando mensajes de error a un archivo: 

Para redireccionar la salida error estándar utilice el operador '>' precedido de '2' (2 representa al archivo de error estándar) luego el archivo al cual se va a escribir el error:

$ ls archivo­que­no­existe 2 > command.error 

Para redireccionar la salida estándar y el error estándar a un mismo archivo haga:

$ ls archivo­que­no­existe &> command.error

por ejemplo, si se quisiera redireccionar la salida estándar a la salida de error estándar se puede hacer lo siguiente:

$ (ls /bin/ 1>&2)>a.txt arch* awk@ bash* bunzip2@ bzcat@ bzip2* ... 

$ cat a.txt

Observará que a.txt no contiene ningún dato, ya que la redirección '> a.txt' recibe la salida estándar,   la cual está  siendo redireccionada al  error estándar,  por  tanto a.txt  se encuentra 

Page 19: Curso Linux _ Hector Perez_ RePorTe

                               19

vacío.

gg. Operador grave: Cuando colocamos algo dentro de comillas graves  ` la shell lo interpreta como un comando.

Ej:   echo date produce ­­­ `date` ­­­

       date > archi­`whoami`­`date +%Y`

h. El background y foreground: 

Usted puede ejecutar comandos sin que estos bloqueen la línea de comandos en su ejecución, a esto se le llama background y regresarlos a la salida en la línea de comandos (foreground). Para ejecutar un comando en background solamente tiene que añadir el operador '&' al final del comando:

$ ls /bin/ > contenido.de.bin & [1] 683 [1] Done     ls /bin/ >contenido.de.bin 

Donde 1 es el número de proceso siendo ejecutado en la shell que se utiliza y 683 es el identificador   del   proceso,   asignado  por   el   kernel.  La  última   línea   le   informa   cuando   el comando finalizó su ejecución.

Ahora bien, si yo estoy utilizando alguna aplicación y la quiero detener para poder ejecutar otro comando, utilizo el keystroke

Ctrl­z

Y para ver la lista de procesos que están siendo ejecutados bajo esa shell:

$ jobs [1]+ Stopped vi

De nuevo el 1 me va a mostrar el número de proceso para dicha shell y 'Stopped' me dice, que el  comando esta  detenido de ejecución en ese  momento,  si  quiero seguir  ejecutando ese proceso en el background, se utiliza el comando bg, seguido por el numero de proceso del shell. En nuestro caso (aunque no tenga mucho sentido ejecutar un editor en background) se utiliza:

$ bg %1 [1]­ vi &

Para regresar un comando proceso al foreground se utiliza el comando fg, seguido por el número de proceso para la terminal. Por ejemplo:

$ fg %1

Page 20: Curso Linux _ Hector Perez_ RePorTe

20

para  'matar'  algún proceso que esté   en bg puedo utilizar  el  comando kill   seguido por  el número del proceso para la shell. Ejemplo:

$ kill %1 [1]+ Stopped vi

i. Tubería entre aplicaciones: 

La característica principal de la shell de Linux (y sistemas parecido­ UNIX) es que no existen programas monolíticos para algo complejo,  sin embargo  la  shell  ofrece comandos de fin sencillo pero que uniéndolos hacen un proceso bastante complejo. Para comunicar programas entre sí, se utiliza el operador '|' (pipe), esto lo que hace es comunicar la salida estándar de un comando con la entrada estándar de otro comando, por ejemplo,  si  quisiéramos contar  la cantidad de archivos en el directorio /dev, podemos utilizar:

$ ls /dev/ | wc ­l 2561 

Donde el  comando `wc ­l'   lo que hace es contar la cantidad de líneas que recibe de una entrada estándar, en este caso el resultado de ls dev.

BUSQUEDA DE ARCHIVOS

El comando find es usado para buscar archivos, su sintaxis es la siguiente : 

find [path] ­name [nombre archivo] 

Ej:   find  /home  ­name dato*

Page 21: Curso Linux _ Hector Perez_ RePorTe

                               21

COPIAS DE SEGURIDAD

Uso de tar

La utilidad  tar  (Tape Archiver) es una herramienta de fácil manejo disponible en todas las versiones de Unix que permite volcar ficheros individuales o directorios completos en un único fichero; inicialmente fue diseñada para crear archivos de cinta (esto es, para transferir archivos de un disco a una cinta magnética y viceversa), aunque en la actualidad casi todas sus versiones pueden utilizarse para copiar a cualquier dispositivo o fichero,  denominado `contenedor'.

c  Crea un contenedor.x  Extrae archivos de un contenedor.t  Testea los archivos almacenados en un contenedor.r  Añade archivos al final de un contenedor.v  Modo verbose.f  Especifica el nombre del contenedor.Z  Comprime o descomprime mediante compress/uncompress.z  Comprime o descomprime mediante gzip.p  Conserva los permisos de los ficheros.

En primer   lugar  debemos saber  cómo crear  contenedores  con  los  archivos  deseados;  por ejemplo, imaginemos que deseamos volcar todo el directorio /export/home/ a la unidad de desquettes /dev/fd0. Esto lo conseguimos con la siguiente orden:

root:~# tar cvf /dev/fd0 /export/home/

En   muchas   situaciones   también   resulta   útil   comprimir   la   información   guardada   (tar   no comprime, sólo empaqueta); esto lo conseguiríamos con las opciones cvzf.

Si  en  lugar  de   (o  aparte  de)  un único  directorio  con  todos  sus   ficheros  y  subdirectorios quisiéramos especificar múltiples archivos (o directorios), podemos indicárselos uno a uno a tar en la línea de comandos; así mismo, podemos indicar un nombre de archivo contenedor en lugar de un dispositivo. Por ejemplo, la siguiente orden creará el fichero /tmp/backup.tar, que contendrá /etc/passwd y /etc/hosts*:

root:~# tar cvf /tmp/backup.tar /etc/passwd /etc/hosts*

Si   lo   que   queremos   es   recuperar   ficheros   guardados   en   un   contenedor   utilizaremos   las opciones xvf (o xvzf si hemos utilizado compresión con gzip a la hora de crearlo). Podemos indicar el archivo o archivos que queremos extraer; si no lo hacemos, se extraerán todos:

root:~# tar xvf /tmp/backup.tar etc/passwd

Una vez creado el contenedor podemos testear su contenido con la opción `t' para comprobar la integridad del archivo, y también para ver qué ficheros se encuentran en su interior:

anita:~# tar tvf /tmp/backup.tar

Page 22: Curso Linux _ Hector Perez_ RePorTe

22

PERMISOS DE ARCHIVOSPara entender mejor el concepto de permisos se tendrá que tener en cuenta que cada usuario puede pertenecer a uno o más grupos. Cada usuario pertenece por lo menos a un grupo, que es establecido en el momento en que el usuario se crea. El administrador del sistema puede agregar al usuario a otros grupos.  Estos grupos son necesarios para poder establecer una política de acceso más organizada dado que en cualquier momento se podría dar a un archivo el acceso a personas de un grupo determinado. Lo único que se tendría que hacer es agregar a los usuarios que se quieran dar permisos a ese grupo.

Como se interpretan los permisosPara poder interpretar los permisos de archivos nada mejor que utilizar el comando ls ­la. Con esto vemos un listado largo de un directorio.

[juan@debian:~]$ ls ­latotal 13drwxr­sr­x   2 juan    user        1024 May  2 09:04 .drwxrwsr­x   4 root     staff       1024 Apr 17 21:08 ..­rw­­­­­­­   1 juan    user        2541 May  2 22:04 .bash_history­rw­r­­r­­   1 juan    user         164 Apr 23 14:57 .bash_profile­rw­r­­r­­   1 juan    user          55 Apr 23 14:44 .bashrc­rwxrwxr­x   1 juan    user           0 Apr 14 19:29 a.out­rwxrwxr­x   1 juan    user          40 Apr 30 12:14 hello.pl­r­­­­­­­­   1 juan    user          64 Apr 29 14:04 hola­rwxrw­r­­   1 juan    user         337 Apr 29 13:57 lista­rw­rw­r­­   1 juan    user         40  Apr 30 12:31 listador­rw­rw­r­­   1 juan    user           0 May  2 09:04 null­rwxrwxr­x   1 juan    user         175 Apr 30 12:30 prue.pl­rwxrwxr­x   1 juan    user          56 Apr 23 15:08 que.sh

Como se puede apreciar en este listado, también están el directorio actual, representado por un   punto.   Y   el   directorio   padre   representado   por   dos   puntos   ..   .   Ellos   también   poseen permisos y atributos que son mostrados. Para ir entendiendo un poco más vamos a explicar que significan los primeros 10 dígitos. Tomemos como ejemplo el siguiente archivo

­rw­r­­r­­   1 juan    user         337 Apr 29 13:57 lista

r : permiso de lectura.w: permiso de escritura.x: permiso de ejecución.

Cambiando permisos

El comando chmod se emplea utilizando símbolos como a,u,g,o que representan a todos (a "all"), al usuario (u), al grupo (g) y a todos los demás (o). Existen símbolos para agregar (+) quitar   (­)  o  dejar   invariantes   los  permisos   (=).  Además   tendrán  que  usarse   los   símbolos característicos para cada tipo de permiso. Para el permiso de lectura (r), para el permiso de escritura (w) y para el permiso de ejecución (x). Solo el dueño del archivo puede cambiarlo con  él;   excepción del   root  que   también   lo  puede  hacer.  Para   ejemplificar  un  cambio  de permisos usaremos el archivo lista.

Page 23: Curso Linux _ Hector Perez_ RePorTe

                               23

[juan@debian:~]$ ls ­l listatotal 1­rwxrw­r­­   1 juan    user         337 Apr 29 13:57 lista[juan@debian:~]$ chmod a­r lista[juan@debian:~]$ ls ­l listatotal 1­­wx­w­­­­   1 juan    user         337 Apr 29 13:57 lista

De esta forma se les ha sacado a todos los grupos y usuarios los permisos de lectura. Algunos ejemplos más

[juan@debian:~]$ chmod u+r lista[juan@debian:~]$ ls ­l listatotal 1­rwx­w­­­­   1 juan    user         337 Apr 29 13:57 lista[juan@debian:~]$ chmod o+w lista[juan@debian:~]$ ls ­l listatotal 1­rwx­w­w­­   1 juan    user         337 Apr 29 13:57 lista[juan@debian:~]$ chmod og­w lista[juan@debian:~]$ ls ­l listatotal 1­rwx­­­­­­   1 juan    user         337 Apr 29 13:57 lista

Ahora bien, esta es la forma simbólica. Pero existe una forma un poco más sistemática que es la forma de representación octal. El comando chmod permite establecer los permisos de un archivo   por   medio   de   un   número   octal.   Comúnmente   nosotros   usamos   para   contar   una representación decimal (0,1,2,3,4,5,6,7,8,9) pero en una representación octal solo se usan 8 números (0,1,2,3,4,5,6,7). Para establecer el permiso habrá que sumar los dígitos octales de acuerdo a una tabla que se dará a continuación. Dado que no se realiza acarreo, la suma será trivial.

Page 24: Curso Linux _ Hector Perez_ RePorTe

24

Permisos en notación octal

Numeración Octal Permiso4000 Establece el número de identificación de usuario al ejecutarse 

SUID [a]2000 Establece el número de identificación de grupo al ejecutarse 

SGID[a]1000 Establece el bit adhesivo[a]0400 Lectura por parte del dueño0200 Escritura por parte del dueño0100 Ejecución por parte del dueño0040 Lectura por parte del grupo0020 Escritura por parte del grupo0010 Ejecución por parte del grupo0004 Lectura por parte de otros0002 Escritura por parte de otros0001 Ejecución por parte de otros

Para dar un ejemplo de la suma que se  tendrá  que realizar,   tomemos un archivo con los permisos expresados en forma simbólica y realicemos la conversión. Para representar ­rwxr­x­­­

  0400      Lectura por parte del dueño+ 0200      Escritura por parte del dueño+ 0100      Ejecución por parte del dueño+ 0040      Lectura por parte del grupo+ 0010      Ejecución por parte del grupo­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­  0750      Resultado

De esta forma si lo que quisiéramos es cambiar los permisos de un archivo, solo se tendría que efectuar la suma necesaria y establecerlo con el comando chmod. Si quisiéramos cambiar los permisos para que el dueño tenga permisos de lectura y escritura y que el grupo y otros solo tengan permisos de lectura, la sintaxis es

[juan@reporte:~]$ chmod 0644 lista[juan@reporte:~]$ ls ­l listatotal 1­rw­r­­r­­   1 juan    user         337 Apr 29 13:57 lista

Cambiando grupos y usuarios

Lo que nos queda por ver es el caso en que se quisiera cambiar el usuario o el grupo del archivo. Para esto se usa el comando chown y su sintaxis es similar a la de chmod pero con la variante que se dan los nombres del usuario y del grupo. Si quisiéramos cambiar el nombre de usuario del archivo lista tendremos

[root@reporte:/home/]# ls ­l lista

Page 25: Curso Linux _ Hector Perez_ RePorTe

                               25

total 1­rw­r­­r­­   1 juan    user         337 Apr 29 13:57 lista[root@reporte:/home/juan]# chown maria lista[root@reporte:/home/juan]# ls ­l listatotal 1­rw­r­­r­­   1 maria    user         337 Apr 29 13:57 lista

Si se quisiera cambiar también el nombre del grupo, se tendría que poner un punto entre el nombre de usuario y el grupo

[root@reporte]# ls ­l listatotal 1­rw­r­­r­­   1 juan    user         337 Apr 29 13:57 lista[root@reporte]# chown maria.ventas lista[root@reporte]# ls ­l listatotal 1­rw­r­­r­­   1 maria    ventas         337 Apr 29 13:57 lista

UMASK

Esta es la abreviatura de user file­creation mode mask o máscara del modo de creación de archivos de usuario y es un número octal  de cuatro dígitos que se utilizan para  fijar   los permisos de los archivos recién creados. Esto puede ocasionar confusión pero en realidad es una   utilidad   que   permite   el   uso   del   sistema   por   múltiples   usuarios   sin   que   peligre   la privacidad. En la mayoría de los Un*x los archivos que son creados por el usuario, poseen permisos 0666 que dan permiso de lectura y escritura a cualquier usuario. En relación con los programas, estos se crean con 0777 donde cualquier usuario puede leer, escribir y ejecutar el programa. Normalmente el administrador del sistema aplica una máscara al  usuario en el archivo .bash_profile y esta es usada para la creación de archivos haciendo una operación simple "AND" bit por bit con el complemento del valor umask bit por bit. La función umask esta integrada al intérprete de comandos. Para ejemplificar el proceso tomemos un archivo creado por el usuario.

  0666      Modo predeterminado de creación de archivos­ 0022      Umask­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­  0644      Modo resultante

El modo resultante es que el dueño tiene permisos de lectura y escritura y los demás y el grupo solo de lectura.

  0666      Modo predeterminado de creación de archivos­ 0077      Umask­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­  0600      Modo resultante

Page 26: Curso Linux _ Hector Perez_ RePorTe

26

El modo resultante es que el dueño tiene permisos de lectura y escritura y los demás y el grupo no tienen ningún permiso. Una forma de darse cuenta de la forma en que funciona el umask es tener en cuenta que el valor 2 inhabilita el permiso de escritura mientras que el valor 7 inhabilita los permisos de lectura escritura y ejecución. 

SUID y SGID

Existen   ocasiones   que   los   usuarios   necesitan   ejecutar   algún   programa   que   requiere   de privilegios. Un ejemplo de esto es el uso del programa passwd para cambiar la contraseña. Sería un error darles a los usuarios los privilegios necesarios para que puedan ejecutar esta clase de programas ya que el  usuario podría cambiarse de grupo o crear una cuenta con privilegios de root. Para que esto no suceda, se implemento en Un*x, un sistema por el cual un programa que cuente con SUID o SGID puede ser ejecutado con los privilegios del dueño y/o grupo del programa. Para que quede más claro se tiene que saber que cada usuario esta identificado por el sistema con un número de identificación tanto para él, como para el grupo. Este número se denomina UID (user ID) para el caso de los usuarios y GID para el caso de los grupos. Por ejemplo, un usuario podría tener un UID 100 y un GID 500. En el caso del root, este tiene UID 0 y GID 0. Más adelante sé verá esto en mayor detalle. Lo que se efectúa con el sistema SUID es una adquisición temporal de un UID o GID distinto al propio cuando se está ejecutando el programa. Cuando un programa cambia de UID se denomina SUID (set­UID: se establece UID) y cuando cambia de GID se denomina SGID (set­GID: se establece GID)  Un programa puede  ser  SUID y  SGID al  mismo  tiempo.  Para  darse  cuenta   si  un programa es SUID o SGID basta con hacer un listado largo con el comando ls ­l y se verá que donde tendría que estar una x, que asigna permisos de ejecución, va a estar una letra s.

[juan@reporte:~]$ ls ­l /usr/bin/passwd­rwsr­sr­­    1 root  bin     36068 2003­06­23 20:40 /usr/bin/passwd*/usr/bin/passwd

Bit adhesivo

En los antiguos sistemas Unix, la memoria era algo esencial y escasa dado su costo. Para poder   aprovechar  más   esta,   se   empleó   una   tecnología  que  mantenía  parte   de  programas esenciales en el área swap de memoria para que pudieran ser usados más rápidamente. Estos archivos así marcados eran los que valía la pena mantener ya que esas partes del programa que se guardaban en memoria también podían ser usadas por otros.

Page 27: Curso Linux _ Hector Perez_ RePorTe

                               27

AMPLIANDO CONCEPTOS SOBRE PROCESOS

Comando ps Muestra los procesos activos. 

ps aux     para ver todos los procesos del sistema.

PID  Es el valor numérico que identifica al proceso.TTY es el   terminal  asociado a ese proceso.  Los  demonios del   sistema no  tienen ningún terminal asociado y en este campo figurara un ?STAT Tienen tres campos que indican el estado del proceso.TIME indica el tiempo de CPU que lleva consumido ese proceso desde que fue arrancado.COMMAND muestra el comando y los argumentos que le fueron comunicados.

Para matar un proceso usamos kill. 

ej :  kill ­9 PID

Otro comando interesante es  top  el cual muestra un ranking de procesos que mas consumen CPU. 

PLANIFICACION DE TAREAS CON CRON

El demonio cron es el que administra la programación de tareas, veremos un ejemplo de esto. Edite un archivo con lo siguiente: 

30  16  *  *  *  cal     

Y sálvelo por ejemplo con el nombre  micron   

Luego utilizaremos  el comando  crontab  para poner dicha tarea en espera para ejecutarse en el tiempo en que fue programada.  

crontab   micron  

El formato que debe usarse es el siguiente: Minutos      hora      mes       dia­del­mes      dia­de­semana    "separado por tabulador"

Hay muchas formas más de configurar el momento de ejecución  como por ejemplo  

10,20,30   *   *   *   *    cal  

Ejecutaría la orden cal cada 10 minutos

Page 28: Curso Linux _ Hector Perez_ RePorTe

28

INSTALACION DE PAQUETES 

Cada distribución linux posee un sistema propio de manejo de paquetes de software, en este caso trataremos el sistema de manejo de paquetes dpkg usado por la distribución Debian. 

Si  bien el  programa dpkg manipula paquetes  generalmente     se  usa  otra  herramienta  que facilita y complementa a dpkg. Estamos hablando de apt.

Instalación:  

apt­get install [paquete]

Eliminación:

apt­get remove [paquete]

Búsqueda de paquetes: 

apt­cache search [paquete]

Inclusive se puede actualizar a una nueva release del sistema: 

apt­get dist­upgrade

"la herramienta apt usa un archivo en donde se especifican las ubicaciones de los servidores de   descarga   de   paquetes   desde   Internet.   Este   archivo   esta   en   /etc/apt     y   su   nombre   es sources.list. Puede editar este archivo y actualizar luego con apt­get update"

Mantenimiento de los sistemas de archivos

Conviene comprobar de vez en cuando los sistemas de archivos para ver si contienen archivos dañados o deteriorados. Usamos para esto el comando fsck  

La forma mas básica del comando es fsck filesystem

­a   arregla automáticamente cualquier problema detectado ­r   pide confirmación antes de repara el sistema de archivos­V modo verbose­A  recorre el archivo /etc/fstab  y trata de comprobar todos los archivos de una sola pasada.

Page 29: Curso Linux _ Hector Perez_ RePorTe

                               29

INTRODUCCION A REDES TCP/IPLa configuración en red TCP/IP de Linux esta controlada por unos archivos en /etc. Estos archivos informan a Linux de su dirección IP,  nombre de sistema, nombre de dominio y controlan las interfaces de red.

/etc/hosts    "Asigna los nombres de sistema a las direcciones IP" /etc/networks  "Asigna los nombres de dominio y de la red"

Inicializar interfaces EthernetEl programa ifconfig es usado para supervisar y cambiar el estado de las interfaces de red.

ifconfig  eth0  192.168.0.1  up    "Activo primer Interfaz de red y le asigno una dirección IP "

ifconfig eth1 down  "desactivo la segunda interfaz de red"

Compartiendo archivos con NFS (Network File System)

El sistema NFS (Network File Sistem) fue desarrollado para permitir montar una partición perteneciente a una máquina remota como si fuese una partición local. Nos proporciona, por  tanto, un método rápido y eficaz de compartir archivos y espacio de disco entre distintas  computadoras de una red que soporten este sistema. 

¿Qué necesitamos?Necesitaremos tener instalado portmap y el paquete nfs­user­server (nfsd) en la maquina que vaya a hacer de servidor de disco.

El portmap nos permitirá realizar conexiones RPC al servidor y es el encargado de permitir  o no el acceso al servidor a los equipos que especifiquemos.

Compartiendo el discoUna vez tenemos los servicios en marcha únicamente nos falta determinar qué queremos compartir.

Debemos editar el archivo /etc/exports e introducir:

/home/curso     192.168.0.0/255.255.255.0(rw)

/var/db     192.168.0.0./255.255.255.0(rw)

Con esto estamos indicando que vamos a exportar /home/curso y /var/db permitiendo acceso a nuestro rango de direcciones locales en modo de lectura/escritura.

Configuración de un equipo cliente NFS.

Ahora que ya tenemos el servidor funcionando vamos a acceder al espacio compartido desde un ordenador cliente.

Page 30: Curso Linux _ Hector Perez_ RePorTe

30

Como root ejecutamos

mount   <servidor>:<directorio compartido>   <punto de montaje>

Ejemplo: 

 mount 192.168.0.2:/home /mnt/nfs

Un simple ls /mnt/nfs nos tendría que permitir ver que ya tenemos acceso al disco del  servidor.

Si queremos que el sistema de archivos NFS sea montado al arrancar deberemos añadir una entrada en /etc/fstab. En nuestro ejemplo añadiríamos

192.168.0.2:/home /mnt/nfs nfs rw,hard,intr 0 0

Page 31: Curso Linux _ Hector Perez_ RePorTe

                               31

Shell scripting

Un shell script es una secuencia ordenada de comandos que puede ser interpretada por el shell o interprete de comandos.

Como primera linea debe indicarse    #!/bin/bash   que en este caso indica que debe interpretarse por el Bash  (Bourne Again Shell). Un ejemplo simple:

#!/bin/bashecho "hola, $USER. aqui tienes la lista de tus archivos"ls  $HOME # lista de archivos

Variables:Cualquier lenguaje de programacion necesita variables.  La difinicion de variables es muy simple:

x=1      o   x="hola mundo"

Operadores:

Operador Descripcion Nº de operandos­n longitud distinta de cero 1­z longitud igual a cero 1­d comprueba si existe directorio 1­f comprueba si existe archivo 1

­eq comprueba si dos enteros son iguales 2­neq opuesto a  ­eq 2

= comprueba igualdad de cadenas 2!= opuesto a  = 2­lt comprueba si operando1 es menor que operando2 2­gt comprueba si operando1 es mayor que operando2 2­le comprueba si operando1 es menor o igual que operando2 2­ge comprueba si operando1 es mayor o igual que operando2 2

Condicionales

if [condicion]then

sentencia1sentencia2..........

elsesentencia3

fi

Page 32: Curso Linux _ Hector Perez_ RePorTe

32

    if [condicion1]    then     sentencia1     sentencia2     ..........    elif [condicion2]    then     sentencia3     sentencia4     ........        elif [condicion3]    then     sentencia5     sentencia6     ........    

    fi

Ejemplos: 

­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­#!/bin/bashif [ 1 = 2 ] then 

echo "HOLA"fi­­­­­­­­­­­­­­­­­­­­­­­­#!/bin/bashX="­n"Y=""if [ $X = $Y ] then

echo "X=Y"fi

­­­­­­­­­­­­­­­­­­­­­­­­#!/bin/bash

if [ ­d "/home/juan" ]thenecho HOLA JUANelseecho NO ESTASfi

Page 33: Curso Linux _ Hector Perez_ RePorTe

                               33

Loops

For

#!/bin/bashfor X in red green bluedo

echo $Xdone­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

 #!/bin/bash for i in `seq 1 10`; do                echo $i done    

­­­­­­­­­­­­­­­­­­­­­­­­­

While

  #!/bin/bash          COUNTER=0         while [  $COUNTER ­lt 10 ]         do             echo The counter is $COUNTER             let COUNTER=COUNTER+1          done         ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

Until

         #!/bin/bash          COUNTER=20         until [  $COUNTER ­lt 10 ]         do             echo COUNTER $COUNTER             let COUNTER­=1         done         ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

 Operadores aritméticos

+ (adición)

­ (sustracción)

* (producto)

/ (división)

% (módulo) 

Page 34: Curso Linux _ Hector Perez_ RePorTe

34

#!/bin/bashecho ""echo " EJEMPLO DE SUMA DE DATOS"echo " Suma de 2 valores "echo ­n "primer valor a sumar: "read numero1echo ­n "segundo valor a sumar: "read numero2numero3=$[numero1+numero2]echo ""echo "Los dos numeros a sumar seran $numero1 mas el $numero2"echo "El total es = $numero3 "

Page 35: Curso Linux _ Hector Perez_ RePorTe

                               35

Prácticas correspondientes al curso de Iniciación al Sistema Operativo GNU/Linux

Práctica 1   Administración de cuentas de usuario y grupos

a)­ Loguearse como root.­ Agregar un usuario "elija un nombre".­ Establecer una contraseña para dicho usuario.­ Desconectar usuario root y loguearse con el usuario antes adicionado.­ Cambiar su contraseña. 

b)  Observe lo que sucede cuando un usuario estándar intenta acceder al contenido de los siguientes archivos de configuración.

cat  /etc/passwd 

cat  /etc/shadow

Que conclusiones saca al respecto? ...................................................................................................................................................................................................................................................

c)   Cuando quiero cambiar de usuario utilizo  .............. 

d)  Explique los 2 niveles de eliminación de usuarios ............................................................................................................................................................................................................................................................................................................

e) Agregue el grupo "curso" al sistema.

f) Edite el archivo /etc/group y agregue su usuario al grupo "curso".  Requiere conocimiento previo de editor vi. Consulte al docente.

g) Elimine el grupo "curso" del sistema. 

Page 36: Curso Linux _ Hector Perez_ RePorTe

36

Practica 2  Archivos y directorios

a) Crear la siguiente estructura de directorios    /practica    /cartas    /documentos     /oficina

/personal    /scripts

b) Utilizar vi para crear el siguiente el siguiente archivo de texto dentro del directorio /practica/documentos/personal

Esto es una practica de edicion con el editor vi.y nuestros nombres son: 

Grabar con el nombre texto1 y salir de vi.

c) Observar el contenido del archivo recien creado.  ...............................................

d) Usar ls ­R  para ver el contenido de los distintos subdirectorios.

e) Usar comando echo y los redireccionadores para agregar sus nombres al final del archivo.

....................................................................................................................................................

f) Mover el archivo texto1 hasta /practica/cartas  y luego copiarlo a /practica/documentos/oficina.

g) borrar el directorio /personalh) borrar el directorio /oficina en forma recursiva.

 

Page 37: Curso Linux _ Hector Perez_ RePorTe

                               37

Práctica 3    Montaje de dispositivos de almacenamiento

a) Coloque un disquete y montelo en /floppy (si no existe este directorio creelo).

Copie en el disquete el archivo  /etc/issue y editelo nuevamente con vi (cambielo por el  mensaje que desee).

b) Renombre el archivo issue por issue.back y copie en su lugar el archivo editado en el disquete.

c) Desmonte el dispositivo.

Page 38: Curso Linux _ Hector Perez_ RePorTe

38

Practica 4  Permisos

a) Crear el siguiente archivo con vi :

#!/bin/shecho ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­echo  HOLA son las `date +%H` horas `date +%M` minutos.echo ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

b) Ponerle permisos de ejecucion y ejecutarlo.

c) Quitarle los permisos de escritura y probar de modificarlo.

d) Quitarle los permisos de lectura y darle permisos de escritura.  Que observa? 

.........................................................................................................................................

e) Extender el uso de chmod usando tanto la notacion octal como la clasica.

f) Loguearse como root y establecerse como dueno del archivo de la practica anterior.

g) Extender el uso de chown para cambiar duenos y grupos. (opcion de recursividad ­R)

Page 39: Curso Linux _ Hector Perez_ RePorTe

                               39

Practica 5

Tareas programadas y copias de seguridad

Se desea hacer una copia de seguridad en el segundo disco IDE (segunda partición) del directorio home cada viernes a las 18 hs.

Búsqueda de archivos

Se desea realizar una búsqueda de : ­­archivos que terminen con "conf" 

            ­­no se sabe en que directorio pueden estar    Crear un archivo llamado "encontrados" con el contenido de la busqueda.                

Shell scripting 

a) Realizar un script que haga una copia de seguridad de la carpeta /home/user/personal en un disquete.

b) Realizar un script que haga un calculo matematico . Ej : raiz cuadrada, superficie de triangulo, etc.

c) Realizar un script que se ejecute al iniciar el sistema.