Curso Linux _ Hector Perez_ Reporte

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Curso Linux _ Hector Perez_ Reporte as PDF for free.

More details

  • Words: 8,542
  • Pages: 39
                              

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

1

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.

                              

3

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

Página 1 Página 2 Página 2 Página 3 Página 4 Página 5 Página 6 Página 6 Página 7 Página 8 Página 8 Página 8 Página 8 Página 9 Página 9 Página 9 Página 9 Página 9 Página 10 Página 10 Página 11 Página 12 Página 12 Página 14 Página 14 Página 15 Página 16 Página 16 Página 20 Página 21 Página 22 Página 27 Página 27 Página 28 Página 29 Página 29 Página 31

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

                              

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.

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 

                              

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.

8

PROCESOS Un 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 SISTEMA

man es el manual en línea de todos los sistemas tipo UNIX.  Ejemplo: man ls

INTRODUCCION AL SHELL DE LINUX Una 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:  ||    &    &&  ;   ;;  ()  |

                              

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 usuarios En 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 usuarios Cuando 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 grupos

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

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

                              

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.

11

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.

                              

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.

14

SERVICIOS Y DEMONIOS Servicios 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 ARCHIVOS Bajo   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

                              

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!   

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

                              

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.

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 

                              

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

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*

                              

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  x  t  r  v  f  Z  z  p 

Crea un contenedor. Extrae archivos de un contenedor. Testea los archivos almacenados en un contenedor. Añade archivos al final de un contenedor. Modo verbose. Especifica el nombre del contenedor. Comprime o descomprime mediante compress/uncompress. Comprime o descomprime mediante gzip. 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

22

PERMISOS DE ARCHIVOS

Para 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 permisos Para 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 ­la total 13 drwxr­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.

                              

23

[juan@debian:~]$ ls ­l lista total 1 ­rwxrw­r­­   1 juan    user         337 Apr 29 13:57 lista [juan@debian:~]$ chmod a­r lista [juan@debian:~]$ ls ­l lista total 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 lista total 1 ­rwx­w­­­­   1 juan    user         337 Apr 29 13:57 lista [juan@debian:~]$ chmod o+w lista [juan@debian:~]$ ls ­l lista total 1 ­rwx­w­w­­   1 juan    user         337 Apr 29 13:57 lista [juan@debian:~]$ chmod og­w lista [juan@debian:~]$ ls ­l lista total 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.

24 Permisos en notación octal Numeración Octal 4000 2000 1000 0400 0200 0100 0040 0020 0010 0004 0002 0001

Permiso Establece el número de identificación de usuario al ejecutarse  SUID [a] Establece el número de identificación de grupo al ejecutarse  SGID[a] Establece el bit adhesivo[a] Lectura por parte del dueño Escritura por parte del dueño Ejecución por parte del dueño Lectura por parte del grupo Escritura por parte del grupo Ejecución por parte del grupo Lectura por parte de otros Escritura por parte de otros 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 lista total 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

                              

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 lista total 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 lista total 1 ­rw­r­­r­­   1 juan    user         337 Apr 29 13:57 lista [root@reporte]# chown maria.ventas lista [root@reporte]# ls ­l lista total 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

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.

                              

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

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.

                              

29

INTRODUCCION A REDES TCP/IP

La 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 Ethernet El 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 disco Una 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.

30

Como root ejecutamos mount   <servidor>:    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

                              

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/bash echo "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 ­z ­d ­f ­eq ­neq = != ­lt ­gt ­le ­ge

longitud distinta de cero longitud igual a cero comprueba si existe directorio comprueba si existe archivo comprueba si dos enteros son iguales opuesto a  ­eq comprueba igualdad de cadenas opuesto a  = comprueba si operando1 es menor que operando2 comprueba si operando1 es mayor que operando2 comprueba si operando1 es menor o igual que operando2 comprueba si operando1 es mayor o igual que operando2

Condicionales if [condicion] then sentencia1 sentencia2 .......... else sentencia3 fi

Nº de operandos 1 1 1 1 2 2 2 2 2 2 2 2

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

Ejemplos:  ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ #!/bin/bash

if [ 1 = 2 ]  then  echo "HOLA" fi

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

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

if [ ­d "/home/juan" ] then echo HOLA JUAN else echo NO ESTAS fi

                              

Loops For #!/bin/bash for X in red green blue do echo $X done ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­  #!/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) 

33

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

                              

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. 

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 /personal h) borrar el directorio /oficina en forma recursiva.

 

                              

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.

37

38

Practica 4  Permisos

a) Crear el siguiente archivo con vi : #!/bin/sh echo ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ 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)

                              

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.

Related Documents

Curso Linux
June 2020 4
Curso Linux
November 2019 15
Hector
May 2020 17