Página principal

Introduccion. 1 Antecedentes históricos


Descargar 277.59 Kb.
Página1/4
Fecha de conversión18.07.2016
Tamaño277.59 Kb.
  1   2   3   4
INTRODUCCION.

1.1 Antecedentes históricos.

El S.O. Unix fué creado a finales de la década de los 60 sobre la base de varios trabajos realizados conjuntamente por el MIT y Laboratorios BELL . Dichos trabajos (proyecto MULTICS) iban encaminados a la creació ;n de un macrosistema de computación que diese servicio a miles de usuarios . Si bien el proyecto fracasó , posiblemente por intentar abarcar demasiado contando con unos elementos hardware limitados en ésa época , influyó ; decisivamente sobre la evolución de los sistemas informáticos posteriores .

Un antiguo componente de dicho proyecto (Ken Thompson) desarrolló por su cuenta un sistema operativo monousuario con la característica principal de un sistema de archivos jerárquico .

El sistema encontró muchos entusiastas y se hizo portable al reescribirse casi íntegramente en lenguaje "C" , y se suministró en código fuente a las universidades como objeto de formació ;n. Así, la universidad de California en Berkeley retocó dicho sistema ( fundamentalmente , comunicaciones y diversas utilidades como el editor "vi" ) , y liberó lo que luego sería el BSD , uno de los dos "dialec tos" principales del UNIX.

Actualmente , existen dos corrientes las cuales cada vez poseen más elementos comunes : la BSD 4.2 y ls System V R 4.

1.2 Generalidades.

El S.O. Unix se encarga de controlar y asignar los recursos físicos del ordenador ( hardware ) y de planificar tareas . Podemos establecer tres elementos principales dentro de éste S.O. :

- El núcleo del sistema operativo ( kernel ) , el escalón más bajo que realiza tareas tales como el acceso a los dispositivos (terminales , discos , cintas ...) .

- El intérprete de comandos ( shell ) es el interfase básico que ofrece UNIX de cara al usuario . Además de ejecutar otros programas , posee un lenguaje propio así como numerosas características adicio nales que se estudiarán en un capítulo posterior .

- Utilidades "de fabrica" ; normalmente se trata de programas ejecutables que vienen junto con el Sistema Operativo ; algunas de ellas son :

- Compiladores : C , assembler y en algunos casos Fortran 77 y C++.

- Herramientas de edición : Editores (vi,ex) , formateadores (troff) , filtros ...

- Soporte de comunicaciones : Herramientas basadas en TCP/IP (telnet,ftp ...)

- Programas de Administración del Sistema (sysadm , sa , va ..... )

- Utilidades diversas y juegos ( éste último se suele instalar aparte ).

2-ORDENES BASICAS.

2.1 Conexión y desconexión.

Para acceder al sistema , éste presenta el mensaje de login , con el que quiere significar algo así como "introduce el usuario con el que quieres abrir una sesión" .

UNIX(r) System V Release 4.2

login:

Una vez tecleado el usuario que se quiere y haber pulsado RETURN , solicita una palabra de paso (password) , la cual , como es natural , no se verá en pantalla aunque se escriba .



UNIX(r) System V Release 4.2

login:antonio

Password:

$

 



Tanto el nombre del usuario como la palabra de paso han de ser escritas "de golpe" , es decir , no se pueden dar a los cursores para modificar ningún carácter y mucho menos la tecla de Backspace , Ins , Del ... . Esto es debido a que , tanto éste carácter como los aplicados a los cursores son caracteres válidos en nombres de usuario y en palabras de paso.

El sistema , una vez aceptado el nombre del usuario ( el cual como es obvio habrá sido asignado por el Administrador , así como la palabra de paso ) , lanza por pantalla unos mensajes de bienvenida y termina con el s&iacut e;mbolo denominado "prompt" , símbolo configurable (como casi todo en UNIX) y que suele ser un ‘$’ ó un ‘#’.

Existe en todos los sistemas UNIX un superusuario llamado "root" , que puede hacer absolutamente lo que quiera en el sistema. Además , hay algunos usuarios especiales , dependiendo del sistema que se trate con má s privilegios de los normales ( admin ó sa ó sysadm , usuario de administración del equipo , uucp como usuario de comunicaciones ) y el resto , que corresponden a usuarios normales.

El programa que está en éste momento mostrando el prompt es la shell ó intérprete de comandos. Con éste prompt indica algo así como "preparado para que me escribas el comando que quieres ej ecutar" .

Cada comando debe finalizar en un RETURN , el cual funcionalmente se asemeja a la orden "AR" en la mili ( El sargento dice "firmes" , pero nadie se mueve hasta que da el RETURN , es decir , "AR" ).

También es significativa la diferencia entre mayúsculas y minúsculas ; no es lo mismo "cal" que "CAL" . El primero es un comando de calendario ; el segundo no existe y la shell se queja de que no lo encuentra :

$ cal

January 1995



S M Tu W Th F S

1 2 3 4 5 6 7

8 9 10 11 12 13 14

15 16 17 18 19 20 21

22 23 24 25 26 27 28

29 30 31


$ CAL

UX:sh: ERROR: CAL: Not found (no existe ningún comando "CAL" !)

Para terminar la sesión, se tecleará el comando "exit" , lo que provocará la aparición del mensaje de login :

$ exit


UNIX(r) System V Release 4.2

login:


efecto que puede también conseguirse apagando y encendiendo el terminal (en terminales "civilizados") ó pulsando Ctrl D (Tecla de "Control" y tecla "D" a la vez). Puede que en su terminal alg una de éstas dos cosas no funcione : piense que en UNIX casi todo es configurable .

2.2 Conceptos : grupo,directorio de trabajo , shell , tipo de terminal.

Cada usuario , aparte de la palabra de paso , posee unos determinados atributos los cuales básicamente son :

- Grupo : A cada usuario , en el momento de su creación , se le asigna uno ( ó varios , si la versión del sistema es moderno ) . La misión de ésto radica en agrupar usuarios en "grupos" car a a permitir y a denegar accesos en el sistema. Para ver a que grupo pertenecemos , se puede ejecutar el comando "id" , el cual producirá un resultado similar al siguiente :

$ id

uid=129(jose) gid=1(other)



Como era de esperar , el comando nos contesta con siglas en inglés ; "uid" (UserID) , identificador de usuario , un número y un nombre (129 y jose) ; "gid" (GroupID) , identificador de grupo , un n&uacu te;mero y un nombre (1 y other).

- Directorio de trabajo : Al iniciar una sesión (tras hacer "login") , cada usuario "cae" en un determinado directorio prefijado . Este habrá sido fijado por el administrador en el momento de la creaci& oacute;n , y normalmente estará situado en "/home/jose" , "/users/acct/jose" ó similar. No existe un estándar sobre ésto y puede ser cualquier subdirectorio del sistema , incluída la raíz.

Para visualizar cual es nuestro directorio , podemos escribir el comando "pwd" (Print Working Directory) inmediatamente después de haber hecho "login" .

- Shell : Si bien nos hemos referido de forma genérica a la shell existen diversas versiones asignables a usuarios , de las cuales podemos citar algunas :

- la Bourne shell ("sh") : Una de las más antiguas y , por tanto , más seguras.

- la Korn shell ("ksh") : Basada en la de Bourne pero más moderna y con más funcionalidades.

- la C-Shell ("csh") : Preferida en entornos BSD y bastante potente aunque más criptica que las dos anteriores.

Veremos más adelante las características de cada una de ellas con más detalle.

- Características del Terminal : Dependiendo de cómo se tenga configurado el terminal , la sesión se comporta de una manera determinada frente los siguientes caracteres especiales :

- Control + C (INTR) : Interrumpe el programa que se está ejecutando en ese momento.

- Control + H (ERASE) : Borra el último carácter escrito.

- Control + D (EOF) : Termina la sesión ; posee un efecto similar a escribir "exit" .

2.3 : Comandos (who/date/man/who am i/logname)

En UNIX , un comando se invoca escribiendo su nombre y , separados por blancos , los argumentos opcionales. Como antes , se debe pulsar RETURN una vez se ha escrito la orden correspondiente.

El comando "who" informa de los usuarios que se hallan presentes en el sistema .

$ who


jose ttyp05 Ene 27 10:45

conta1 ttyp15 Ene 27 11:05

carmen syscons Ene 27 10:48

Si deseamos saber quienes somos ( cara al sistema , claro - el unix y la filosofía son cosas distintas) , usaremos el comando "who am i".

A veces , no coinciden el usuario con el que uno se ha conectado (con login) y el usuario efectivo. Ya se verá más adelante algo más sobre éste tema. En éste caso , el comando que muestra con qú e usuario se ha hecho la conexión será "logname".

Los campos corresponden al usuario , terminal asociado y fecha de conexión.

El comando "date" permite ver la fecha y hora del sistema y también fijarla ; si escribimos "date" a secas :

$ date


Mon Jan 4 18:46:12 GMT 1995

Y si intentamos cambiarla , por motivos obvios , sólamente podremos hacerlo como el usuario "root" (Las implicaciones que el cambio de fecha trae consigo en relación con los backups incrementales , así com o cualquier proceso dependiente de la hora , pueden ser importantes).

No obstante , hay veces que se debe hacer ; en éstos casos , todos los menús de administración de cualquier equipo UNIX traen el comando "Change Date/Time". No obstante , podemos dar desde "root" el siguiente comando :

date -u 1202120094

para cambiar a día 02 del mes 12 a las 12.00 del año 1994. (El formato para date es MESMESDIADIAHORAHORAMINUTOMINUTOAÑO).

 

2.4 Archivos y directorios



Uno de los primeros "manuales" de UNIX (La definición del BSD) , establecía que en Unix "todo son ficheros". Tenemos varios tipos :

- Fichero "normal" con sus variantes que más tarde veremos . Es algo que , referido a un nombre , contiene una secuencia determinada de caracteres (bytes). El sistema operativo no impone ningún tipo de formato ni de registro. Ejemplos de ficheros "normales" puede ser el que nos creamos con algún editor , conteniendo un documento. Por ejemplo , el fichero "/etc/motd" es un fichero cuyo contenido es el mensaje del día . Si ejecutam os el comando "cat" (ver el contenido de un fichero), tendríamos una salida como ésta :

$ cat /etc/motd

***************************************************

© 1981-95 AT&T Unix System Laboratories

Bienvenido al equipo XXXXXXXXXXX

***************************************************

El mismo comando "cat" es un fichero , lo que ocurre es que , en vez de contener "letras" legibles , contiene código binario que sólo el equipo es capaz de comprender. Podemos probar ésto haciend o :

$ cat /bin/cat

kjsdñkqbehls wqej jsdf sdcaj

dfkjsadf df asldfj af ^C ^C ^B aasd ( .... BASURILLA .... )

Pues también son ficheros normales aquellos que contienen programas compilados (ejecutables).

-Directorios , que son ficheros cuyo contenido son nombres de ficheros. Funcionalmente , se comportan de la misma manera que en sistemas tipo MS-DOS.

-Ficheros especiales .Ya que es el propio sistema operativo el que debe ocuparse de los detalles "sucios" de acceso a dispositivos , la apuesta de los creadores y continuadores de UNIX fué el de homogeneizar todos &eacu te;stos accesos vía fichero. De tal forma , si tenemos un fichero correspondiente a una impresora , bastará escribir en él para que salga en papel ; de la misma manera , si deseamos ver lo que una cinta Exabyte , DAT ó Streamer contiene debe ser suficiente con "leer" lo que el fichero de acceso a ésos dispositivos contiene.

Si bien la nomenclatura varía entre sistemas , normalmente todos éstos tipos residen en el directorio "/dev". Podemos citar algunos de ellos:

/dev/lp0,/dev/lp1 : Primera y segunda impresora en paralelo.

/dev/tty00,/dev/tty01 .... : Terminales ó modems en conexión serie.

/dev/eth0 : Primera placa ethernet

/dev/dsk/c0d0s0 : Primera partición del disco "0" en la controladora "0"

/dev/rmt/0 : Unidad de cinta Stremer con rebobinado automático.

Podemos crear un archivo de múltiples formas ; utilizando un editor , mediante un programa ó utilizando algún comando. Unicamente se tendrá en cuenta , a la hora de escoger nombres para los ficheros , las sig uientes reglas :

- El nombre no podrá exceder de 255 letras (14 en versiones UNIX anteriores a la R2.1)

- Utilizar caracteres "normales" (Si bien se puede usar cualquier carácter , desechar aquellos que no sean A-Z /a-z / 0-9) Especial atención merecen aquellos ficheros cuyo primer carácter es el punto " ;." , ya que se consideran "ocultos" en la medida en que determinados comandos , al detectar este hecho , los ignoran.

- Vamos a crear un fichero cuyo contenido sea "hola" :

$ echo "hola" > tonto

$

(... parece que no ha ocurrido nada ... )



$ cat tonto

hola


$

(efectivamente - ahora , el comando "ls" nos da un listado de los ficheros)

$ ls

tonto


$ ls -a

.

..



tonto

.profile


$

Ahora parece que el fichero "tonto" ha criado! Lo que ocurre es que estamos en nuestro directorio de trabajo , y ahí existe desde el principio un fichero "oculto" (el .profile) el cual sólo podemos list ar utilizando la opción "-a" (all) del ls. Además de ésto, aparecen el "punto" (.) y el "punto-punto" , sinónimos de "directorio actual" y "directorio anterior".

Primero , vamos a ver en qué directorio estamos , para lo cual emplearemos el comando "pwd" (Print Working Directory).

$ pwd


/usr/jose

$ ls


tonto

Nuestro directorio de trabajo es "/usr/jose" y tenemos dentro del mismo el fichero "tonto" . Utilizando los conceptos de "." y ".." , podemos ejecutar el comando "ls" pasando los mismos como argumentos :

$ ls . ( listar el contenido del directorio "actual" ; funciona igual que "ls" a secas )

tonto


$ ls ..

jose


paco

antonio


bin

(....)


Estamos diciendo que nos liste el "directorio anterior" , es decir , "/usr" .

Podemos hacer lo mismo cambiando al directorio anterior y ejecutando "ls" : nos cambiamos de directorio usando el comando "cd" (Change Directory) , con direccionamiento absoluto ( indicando todo el camino de subdirec torios desde el directorio "raiz" (/) :

$ cd /usr

$ pwd


/usr

$ ls


jose

paco


antonio

bin


(...)

O bien , cambiando con direccionamiento relativo , y se dice así por ser relativo al directorio donde estamos trabajando :

$ cd .. ( nos cambiamos al directorio anterior , es decir , a "/usr" )

$ pwd


/usr

ls

jose



paco

antonio


bin

(...)


Para volver a nuestro directorio "origen" (home directory) , bastaría con ejecutar el comando "cd" a secas ; él vuelve siempre al mismo sitio , en éste caso , a "/usr/jose" estemos dond e estemos.

Si queremos crear un nuevo directorio emplearemos en camino absoluto ó relativo el comando "mkdir" con el argumento "nombre_del_directorio_que_queremos_crear" . Para eliminarlo , ejecutaremos "rmdir" con el mismo argumento :

$ mkdir nuevo

$ ls


tonto

nuevo


Tenemos ahora el fichero de siempre y un directorio que se llama "nuevo". Pero escribiendo "ls" no vemos a simple vista ninguna diferencia ; hay que dar la opción "-F" ó "-l" :

$ ls -F


tonto

nuevo/


$ ls -l

-rw-r--r-- 1 jose sys 4 Mar 1 11:07 tonto

drw-r--r-- 1 jose sys 84 Mar 1 11:07 nuevo

(la letra "d" al principio del listado largo nos indica que se trata de un directorio)

$ cd nuevo

$ pwd


/usr/jose/nuevo

(.. nos hemos cambiado al directorio nuevo ..)

$ cd ..

$ pwd


/usr/jose

( .. homes vuelto ... )

$ rmdir nuevo

$ ls


tonto

( .. ! ya no está .. )

2.4.5 Tipos de archivos.

Si bien UNIX no impone una estructura a ningún fichero , éstos tendrán características comunes dependiendo para lo que sirvan ; podemos agrupar éstos en varios tipos :

- Ejecutables . Nornalmente se trata de programas compilados y contienen código binario ininteligible para la mayoría de los humanos pero no así para la máquina. Ejemplos de éstos ficheros pueden ser l os ficheros "/bin/ls" , "/bin/cat/" ... Todos ellos deben tener activados los permisos de ejecución que más tarde veremos.

- Binarios , englobando dentro de ésta categoría aquellos que son empleados por programas capaces de entender su contenido ( un fichero indexado accesible desde COBOL , por ejemplo ) pero no legibles.

-Texto , correspondientes a aquellos ficheros que contienen registros de caracteres terminados en "nueva línea" y normalmente son legibles. Ejemplo de fichero de texto puede ser el "/etc/motd" , "/etc/pas swd" y cualquiera que haya sido confeccionado con el editor.

- Dispositivo. Cualquier fichero asignado a un dispositivo físico ; normalmente residen a partir del subdirectorio "/dev" y son ficheros de terminales , de particiones de discos , de puertos de impresora .... Dentro de ésta categoría podemos incluir el fichero especial "/dev/null" , el cual tiene como misión el que cualquier cosa que se le mande es desechada.

Cualquier fichero de tipo dispositivo puede tener dos categorías : bien de tipo "caracter" , ó "raw mode" ( lee y escribe "de golpe" ) ó de tipo "bloque" ó "cooked mode" ( lee y escribe a trozos según el tamaño de buffer que tenga asignado).

Si se tienen dudas acerca del tipo de fichero , podemos ejecutar el comando "file .

$ file /bin/ls

/bin/ls: ELF 32-bit MSB executable M88000 Version 1

( Ejecutable dependiente del procesador 88000 de Motorola )

$ file /dev/null

character special

2.4.6 Tipos de acceso / permisos.

En cualquier sistema multiusuario es preciso que existan métodos que impidan que un determinado usuario pueda modificar ó borrar un fichero confidencial, ó incluso leer su contenido. Asimismo , determinados comandos ( apagar la máquina , por ejemplo ) deben estar permitidos exclusivamente a determinados usuarios , quedando inoperantes para los demás.

En UNIX , éstos métodos radican en que cada fichero tiene un propietario , que es el usuario que creó el fichero. Además , los usuarios están divididos en grupos , asignación que normalmente se lleva a cabo por el Administrador del sistemas , dependiendo de la afinidad de las tareas que realizan. El fichero anterior tiene también un grupo , que es el grupo del usuario que lo ha creado . UNIX distingue tres tipos de acceso - lectura , escr itura y ejecución - sobre el usuario que lo ha creado , los usuarios del mismo grupo que el que lo creó y todos los demás usuarios .

Por todo lo anteriormente dicho , un fichero puede tener cualquier combinación de los tres tipos de acceso sobre tres tipos de usuarios : el creador , los de su grupo y todos los demás ( otros cualquiera que no cumplan nin guna de las dos condiciones anteriores ). Para ver lso permisos de un fichero cualquiera , empleamos el comando "ls -l" (formato largo) :

$ ls -l


-rw-r--r-- 1 jose sys 4 Mar 1 11:07 tonto

drw-r--r-- 1 jose sys 84 Mar 1 11:07 nuevo

Los campos que lo componen son :

-rw-r--r-- : tipo de fichero ( la primera raya ; en el caso de "nuevo" , una "d" significa que es un directorio , y una raya "-" significa fichero normal ) y 3 grupos de tres correspondientes , los tres primeros , a permisos del usuario ; los tres siguientes , a los del grupo , y los tres últimos , a todos los demás.

jose : Usuario que creó el fichero.

sys : Grupo del creador.

4 : Tamaño en bytes.

Mar 1 11:07 : Fecha de creación ó de última modificación.

tonto : Nombre del fichero.

Cada grupo de tres elementos pueden ser "rwx" , que son : permiso para leer , permiso para escribir y permiso para ejecutar. Una raya significa "carece de permiso para (.)" .

Por tanto , el fichero "tonto" puede ser leído y escrito (y , por tanto , borrado) , por el usuario "jose" . Cualquier otro usuario , sea del grupo "sys" ó no , tiene permisos sólo de lectura.

En el caso de directorios , todo igual salvo que en éste caso la "x" de ejecutar no tendría sentido ; por ello , aquí éste carácter significa "el usuario X puede cambiarse a éste directorio" .

Para darle ó quitarle permisos a un fichero ó directorio , se emplea el comando chmod . La máscara es un número octal de hasta un máximo de cuatro cifra s correspondiente a sumar los siguientes números :

1 : Permiso de ejecución.

2 : Permiso de escritura.

4 : Permiso de lectura.

Por tanto , para darle máximos permisos al fichero "tonto" , ejecutaremos el comando :

$ chmod 777 tonto

$ ls tonto

-rwxrwx rwx 1 jose sys 4 Mar 1 11:07 tonto

al darle tres sietes ( 1 + 2 + 4 = 7 ) , el fichero se queda con la máscara rwx.

Si queremos sólo lectura para creador , grupo y otros , el comando sería "chmod 444 tonto" y así sucesivamente.

En determinadas ocasiones puede ser necesario cambiar de propietario a un fichero ó directorio ; para ello utilizamos el comando "chown ". Igual pasa con los grupos ; el com ando es "chgrp "

$ chown juan tonto

$ ls tonto

-rwxrwxrwx 1 juan sys 4 Mar 1 11:07 tonto

$ chgrp conta tonto

$ ls tonto

-rwxrwxrwx 1 jose conta 4 Mar 1 11:07 tonto

Pero , cuando creamos un fichero , que permisos coge por defecto ? El valor de "umask" que tenemos asignado en la sesión complementado con 666 (rw-rw-rw). El comando "umask" a secas nos devuelve dicho valor : /P

$ umask

022


En éste caso , 666-022 = 644 , es decir , cualquier fichero que creemos con un editor ó con otros comandos serán creados con permisos 644 (rw-r--r--) .

Para cambiar la máscara , usamos el comando umask con la nueva máscara que le quieremos dar :

$ umask 000

En cuyo caso , todos los ficheros a partir del ése momento , y hasta que finalice la sesión , serán creados con "barra libre" para todo el mundo.

2.4.8 Manipulación de ficheros.

Podemos examinar una primera tanda de comandos hermanos , que son los siguientes:

cp

mv

ln

"cp" copia el primer argumento al segundo. Valen caminos relativos , es decir

$ cp tonto /tmp

$ cp tonto /tmp/nuevo

$ cp /home/jose/tonto /tmp/tonto

producirían el mismo resultado ; copian el fichero desde el directorio actual al /tmp.

El comando "mv" se comporta igual salvo que el fichero original desaparece ; es similar al "RENAME" de MS-DOS.

El comando "ln" hace que pueda existir un contenido con varios nombres :

$ ln tonto tonto1

$ ls -l tonto*

-rw-r--r-- 2 jose sys 4 Mar 1 11:07 tonto

-rw-r--r-- 2 jose sys 4 Mar 1 11:07 tonto1

ahora "tonto" y "tonto1" hacen referencia al mismo contenido ; por tanto , cualquier cambio que realicemos en uno se verá en el otro, y si borramos ahora el fichero "tonto" , quedará el " tonto1" con el mismo contenido , que sólo será borrado al borrar el último de los ficheros lincados a su contenido.

Debido a la naturaleza del propio comando , no se pueden hacer enlaces (links) entre ficheros ó directorios situados en sistemas de ficheros distintos.

Para éste último caso , existe una opción del comando "ln" , el "ln -s" (link simbólico) ; crea un enlace simbólico entre dos entidades pero sólo como una referencia ; en &e acute;ste caso si el fichero original se borra , el link queda suelto y el contenido irrecuperable.

  1   2   3   4


La base de datos está protegida por derechos de autor ©espanito.com 2016
enviar mensaje