Sie sind auf Seite 1von 39

1

Iniciaci ó n al Sistema Operativo Linux

Septiembre de 2006

Profesor: Hé ctor Perez E­mail: hperez@buenosaires.edu.ar

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

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.

Í

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

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

ndice

ú squeda de Archivos

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

11

GESTION DE ARCHIVOS Y DIRECTORIOS

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

cp : copia archivos.

cp [/desde/nombre de archivo]

mv : mueve archivos.

mv [/desde/nombre de archivo]

rm: borra archivos.

rm [nombre de archivo]

[/hasta/nombre de archivo]

[/hasta/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.

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@ bunzip2@ ed* ls* shred*

ln* sed* awk@ du* loadkeys* setterm* bash* echo* login* sh@

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

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

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

Ellos tambi é n poseen

permisos y atributos que son mostrados. Para ir entendiendo un poco m á s vamos a explicar

un punto. Y el directorio padre representado por dos puntos

que significan los primeros 10 d ígitos. Tomemos como ejemplo el siguiente archivo

­rw­r­­r­­

1 juan

user

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

Cambiando permisos

337 Apr 29 13:57 lista

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­­

[juan@debian:~]$ chmod a­r lista [juan@debian:~]$ ls ­l lista total 1

­­wx­w­­­­

1 juan

user

337 Apr 29 13:57 lista

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­­­­

[juan@debian:~]$ chmod o+w lista [juan@debian:~]$ ls ­l lista

1 juan

user

337 Apr 29 13:57 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

Permiso

4000

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ñ o

0200

Escritura por parte del dueñ o

0100

Ejecució n por parte del dueñ o

0040

Lectura por parte del grupo

0020

Escritura por parte del grupo

0010

Ejecució n por parte del grupo

0004

Lectura por parte de otros

0002

Escritura por parte de otros

0001

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

+ Escritura por parte del dueñ o

+ Ejecuci ó n por parte del dueñ o

+ Lectura por parte del grupo

+ Ejecuci ó n por parte del grupo

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

0200

0100

0040

0010

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­­

[root@reporte:/home/juan]# chown maria lista [root@reporte:/home/juan]# ls ­l lista total 1

user

­rw­r­­r­­

1 juan

user

337 Apr 29 13:57 lista

1 maria

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­­

[root@reporte]# chown maria.ventas lista [root@reporte]# ls ­l lista total 1

­rw­r­­r­­

1 juan

user

337 Apr 29 13:57 lista

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­­

/usr/bin/passwd

1 root bin

36068 2003­06­23 20:40 /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

­r

arregla automá ticamente cualquier problema detectado pide confirmació n antes de repara el sistema de archivos

arregla autom á ticamente cualquier problema detectado pide confirmaci ó n antes de repara el sistema

­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

/etc/networks "Asigna los nombres de dominio y de la red"

"Asigna los nombres de sistema a las direcciones IP"

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>:<directorio compartido>

Ejemplo:

mount 192.168.0.2:/home /mnt/nfs

<punto de montaje>

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

interpretarse por el Bash (Bourne Again Shell).

#!/bin/bash

Un ejemplo simple:

que en este caso indica que debe

#!/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º 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

else

fi

sentencia1

sentencia2

sentencia3

32

if [condicion1]

then

sentencia1

sentencia2

elif [condicion2]

then

sentencia3

sentencia4

elif [condicion3]

then

fi

Ejemplos:

sentencia5

sentencia6

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

#!/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

33

Loops

For

#!/bin/bash for X in red green blue do

echo $X

done

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

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

done

echo $i

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

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)

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

/scripts

/oficina

/personal

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

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.

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.

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.