Programación II

25
Programación II Ing. Diego J. Arcusin [email protected] 2 – Sistemas de Archivos

description

2 – Sistemas de Archivos. Programación II. Ing. Diego J. Arcusin [email protected]. Todo en Unix son archivos. Sistema de archivos sencillo y fácil de usar. Archivo = una secuencia de bytes - PowerPoint PPT Presentation

Transcript of Programación II

Page 1: Programación II

Programación II

Ing. Diego J. Arcusin [email protected]

2 – Sistemas de Archivos

Page 2: Programación II

Todo en Unix son archivos

Sistema de archivos sencillo y fácil de usar.

Archivo = una secuencia de bytes

El sistema no impone estructura alguna sobre los

archivos ni asigna significado a su contenido. El

significado de los bytes depende únicamente de

los programas que interpretan el archivo.

Page 3: Programación II

Comandos útiles

od - Octal dump (Vaciado octal) opción –c (interpreta bytes como caracteres)

opción –b (muestra los bytes como números octales)

opción –x (muestra los bytes como números hexadecimales)

file – Indica los tipos de archivo (en base a suposiciones de

acuerdo a su contenido)

du – (Disk Usage) Fue diseñado para indicar cuánto espacio del

disco está ocupado por los archivos de un directorio (incluyendo

todos sus directorios). opción –a (all) Despliega todos los archivos que hay en un directorio.

Page 4: Programación II

Caracteres Especiales

La mayoría de los Sistemas UNIX utiliza el Sistema ASCII para la

representación de Caracteres.

\n 012 Newline (Nueva línea)

\b 010 Backspace (Retroceso)

\r 015 Retorno de Carro

No existe un caracter especial Fin de Archivo. El UNIX identifica el

final de un archivo cuando ya no encuentra datos en él.

Page 5: Programación II

El Directorio de Trabajo

El Directorio de Trabajo es un atributo de un proceso, no

de una persona ni de un programa.

Si un proceso crea un proceso hijo, este hereda el

directorio de trabajo de su padre. Pero si después el hijo

cambia a un nuevo directorio de trabajo, el padre no es

afectado (su directorio de trabajo permanece igual sin

importa qué haga el hijo).

Page 6: Programación II

Más sobre Directorios

Independientemente del tratamiento particular que le da el Kernel a los

directorios, estos residen como archivos ordinarios dentro del sistema

de archivos. Pueden ser leidos como archivos ordinarios, pero no se les puede crear, o

escribir en ellos como tales (El núcleo se reserva esta tarea para conservar la

integridad de la información de los mismos).

El formato de un “archivo” de directorio es una combinación de datos binarios y

de texto. Cada entrada del directorio consiste en 16 bytes: Los dos primeros bytes indican donde se encuentra la información administrativa del

archivo.

Los últimos 14 guardan el nombre del archivo rellenado con caracteres ASCII nulos

(valor 0)

Page 7: Programación II

Introducción a los Permisos

Cada archivo tiene permisos asociados con él, los cuáles indican qué

puede hacerse con el archivo y quién puede hacerlo.

Si bien un usuario inicia sesión mediante su nombre, el sistema reconoce

al usuario por medio de un número conocido como uid.

El Unix permite que distintos usuarios tengan el mismo uid lo cuál los hace

indistinguibles para el sistema (Situación indeseable desde un punto de

vista de seguridad)

Además de un uid se le asigna al usuario un identificador de grupo (group-

id)

El sistema de archivos determina lo que el usuario puede hacer mediante

los permisos otorgados a su uid y group-id

Page 8: Programación II

/etc/passwd

El “Archivo de contraseñas”. Es un archivo de texto ordinario que

contiene toda la información de inicio de sesión de cada usuario.

Los campos del /etc/passwd se encuentran separados por “:” identificador de inicio

Contraseña encriptada

uid

group-id

varios

Home Directory

Shell

El Archivo /etc/group contiene los nombres de grupos y sus

identificadores, y define a los usuarios miembros de los grupos.

Page 9: Programación II

Contraseñas

La contraseña del /etc/passwd se encuentra encriptada para evitar

que pueda ser visualizada por cualquier usuario del sistema. El

proceso de encriptación es de 1 vía. Este sistema permite pasar de

la forma original a la forma codificada pero no viceversa.

Durante el proceso de login, la contraseña ingresada por el usuario

es encriptada y comparada con la contraseña encriptada residente

en el archivo /etc/passwd. Si ambas coinciden se permite el ingreso

de sesión.

Para lograr mayor seguridad, algunos sistemas UNIX contienen las

contraseñas en otros archivos (Por ejemplo: /etc/shadow)

Page 10: Programación II

Permisos

Existen 3 tipos de permisos para cada archivo: leer (Read) - Examinar el contenido del archivo

escribir (Write) – Cambiar su contenido

ejecutar (eXecute) – Ejecutarlo como un programa

Estos permisos se pueden aplicar en forma independiente a: El dueño del archivo (Owner)

El grupo del dueño del archivo (Group)

Los restantes usuarios (World or Others)

Ejemplos: -rw-rw-r— 1 root 5115 Aug 30 19:40 prueba.txt

-rwxrwxr-x 1 root 6348 mar 29 1994 /bin/who

drwxrwxr-x 3 carlos 80 Sep 27 06:11 .

Page 11: Programación II

Permisos (El Set Uid)

Es una idea simple pero elegante que resuelve varios problemas de

seguridad.

La existencia de un permiso “s” en lugar del permiso de ejecución

para el dueño del archivo indica que, cuando el comando se ejecuta,

se le darán los permisos correspondientes al dueño del archivo.

El usuario “toma prestada” la identificación del dueño del archivo

mientras se ejecuta el comando.

Sin embargo es un concepto potencialmente peligroso.

¿Qué pasaría con un archivo cuyo dueño fuera root con permisos –

rwsrwxrwx ?

Page 12: Programación II

Permisos en directorios

Si bien los permisos en los directorios funcionan de manera diferente, la

idea básica es la misma: r – El usuario puede leer el directorio, por lo que,por ejemplo, puede ver que archivos

hay en él por medio de ls)

w – El usuario puede crear y borrar archivos en este directorio (De hecho el usuario

puede escribir sobre el “archivo” del directorio).

Los permisos para borrar archivos son independientes del archivo mismo. Si el

usuario tiene permisos de escritura sobre el directorio puede borrar archivos de él ,

aún los archivos estén protegidos contra escritura.

x – Determina si puede “accederse” o no a un archivo en él.

si se crea un directorio con permisos –x significa que los usuarios pueden acceder a

cualquier archivo que conozcan en el directorio, pero no pueden ejecutar ls sobre él.

Page 13: Programación II

El comando chmod

Permite el cambio de los permisos sobre los archivos.

Posee dos formas para especificar los permisos: Forma Octal

Se asignan 3 dígitos. El primer dígito indica los permisos asignados al dueño,

el segundo al grupo, y el tercero al reso.

Los dígitos especifican los permisos sumando simultáneamente 4 para lectura,

2 para escritura y 1 para ejecución.

Forma Simbólica

Permite activar o desactivar permisos puntuales mediante + y –

Solo los dueños de los archivos pueden cambiar sus permisos.

Utilice man chmod para una descripción completa de este comando.

Page 14: Programación II

Aclaraciones sobre Privacidad

No es posible garantizar con los permisos la completa privacidad

de la información de los usuarios ya que los superusuarios

(Usuario root) pueden leer o modificar cualquier archivo del

sistema.

Si los usuarios requieren mayor privacidad puede utilizar el

comando crypt . Este comando “encripta” un archivo, Modifica el

contenido del mismo de tal forma que sea incomprensible para

cualquier usuario que pueda ver su contenido.

Page 15: Programación II

i-Nodos

Estructura del sistema que almacena información

administrativa de los archivos. Por ejemplo:Fecha de última modificación

Fecha de última utilización (Ejecución o lectura)

Fecha de última modificación al I-nodo (Por ejemplo para un

cambio de permisos)

Permisos

Longitud del archivo

Región del disco donde se encuentra almacenado el archivo

Page 16: Programación II

i-nodos (Cont.)

Los i-nodos “son” los archivos. Lo único que hace la jerarquía de

directorios es proporcionar nombres adecuados a los “archivos”. El

identificador interno es el i-number (el número del i-nodo)

Los 2 primeros bytes para cada archivo dentro del “archivo” del

directorio indican el número del i-nodo correspondiente a ese

archivo.

En realidad un nombre de archivo en un directorio es en realidad un

enlace (link o liga) que une un nombre en la jerarquía de directorios

al archivo real (indicado por el i-nodo). El mismo número-i puede

aparecer en más de un directorio dando lugar a los llamados links

Page 17: Programación II

Links o Ligas

El comando ln permite la creación de links.

Esto permite crear dos nombres para un mismo archivo, para que

este pueda aparecer en dos directorios diferentes.

Dos links a un archivo apuntan al mismo nodo-i por lo que en

cada uno de sus directorios contendrán el mismo i-number.

El comando rm en realidad no borra nodos-i sino que borra

entradas del directorio a sus links. Sólo cuando el último link es

eliminado, entonces el sistema borra el nodo-i, y en consecuencia

los datos.

Page 18: Programación II

Dispositivos

El Unix abstrae a todos los periféricos (discos, unidades de Cd,

impresoras, terminales, etc.) como archivos. Los archivos de dispositivos residen en el directorio /dev Por ejemplo en lugar de tener rutinas especiales para tratar a una

diskettera, existe un archivo /dev/fd0

Dentro del Kernel todas las referencias a ese archivo se traducen en los

comandos de Hardware necesarios para acceder a la diskettera. Por

ejemplo, una programa que lee el archivo /dev/fd0 en realidad leerá el

contenido del diskette montado en esa unidad. Existen dos tipos de dispositivos:

Dispositivos de Caractéres, y Dispositivos de bloque.

Page 19: Programación II

Dispositivos

Ejemplos de algunos archivos de dispositivoshda (Disco duro a) lp0 (Impresora de líneas 0) tty (Terminales)

/dev/null Archivo especial para descarte.

Page 20: Programación II

Preguntas

?

Page 21: Programación II

Ejercicios

2.1. Cree un archivo de texto llamado “ejemplo” mediante el vi y luego analice la

información brindada por los siguientes comandos:$ cat ejemplo$ od –c ejemplo$ od –cb ejemplo$ file ejemplo

2.2. Ejecute el siguiente comando y analice sus resultados:$ file /bin /bin/vi /usr/src/cmd/vi.c /usr/man/man1.vi.1

2.3. Analice el siguiente comando. ¿Cuál es la diferencia en su resultado?$ du /etc $cd /etc; du;

2.4. Podría sugerir un comando para encontrar el archivo “find” mediante el uso del

comando du.

2.5. Analice el comando od –cb / ¿Qué significa el resultado?

Page 22: Programación II

Ejercicios (cont)

2.6. Investigue que opción de ls debería utilizar para permitir que ls –l . muestre información

acerca de un directorio en lugar de información de los archivos contenidos en dicho

directorio

2.7. ¿Para que sirve el comando newgrp?

2.8. Intente el siguiente comando: $date > . ¿Qué ocurre?¿Porqué?

2.9. ¿Para que sirven las opciones –c y –u del comando ls? ¿Con qué criterio ordena la opción –

t?¿Cómo se podrá modificar este criterio?

2.10. Analice para que sirve la opción –i de ls.

2.11. a) Transformar los siguientes permisos a Octales:

rwxr-xr-x r-xr--r-- rw-r----- r-x--x--x

b) Transformar los siguientes permisos octales en simbólicos:

644 755 610 631 777 700 4755

c) Fijar, en modo simbólico, los permisos de test.out en modo 754.

d) Fijar, en modo Octal, los permisos de test.out en modo rwxr-x--x.

Page 23: Programación II

Ejercicios (cont)

2.12. -rwsr-xr-x 1 victor docentes 29024 ene 1 16:29 ejecuta -rw-rw-r-- 1 victor docentes 2300 may 18 09:37 prueba.txt -rw-r--r-- 1 victor docentes 5895 may 15 12:08 index.htm -rwxr-xr-x 1 victor docentes 29024 ene 1 16:29 borratodo -rwxr--r-- 1 victor docentes 29024 ene 1 16:29 leer drwxrwxrwt 2 victor soporte 1024 may 1 17:23 practicos drwxr-xr-x 2 victor soporte 1024 oct 16 1998 navegador drwxrwx--x 2 victor soporte 1024 may 11 7:29 cashflow drwxrwxr-x 2 victor soporte 1024 jul 7 6:54 redes drwxr-xr-x 2 diego docentes 1024 jun 17 19:35 procedimientosDada la salida del comado ls y suponiendo que el usuario diego, del grupo docentes, tiene acceso al presente listado. Indicar:a) Archivos de los que puede mostrar su contenido.b) Archivos que puede ejecutar como programa.c) Archivos en los que puede modificar contenido.d) Subdirectorios en los que puede ingresar.e) Subdirectorios en que puede grabar.f) Subdirectorios en los que puede borrar archivos que no sean de él.g) Subdirectorios en los que puede ejecutar programas contenidos en ellos.

Page 24: Programación II

Ejercicios (cont)

2.13. Fijar los permisos del directorio dirnotas de modo que todos lo puedan leer y

recorrer, pero sólo el dueño pueda modificar sus archivos:

a) en modo simbólico; b) en modo Octal

2.14 Modificar para que el grupo también pueda modificar archivos

2.15. Ejecute ls –l /etc/passwd . Analice los permisos del archivo. ¿Quién es el

dueño del archivo?

2.16. Si el archivo de contraseñas sólo tiene permiso de escritura para el dueño

(root) cómo es posible que el comando passwd ejecutado por cualquier

usuario permita cambiar la contraseña, y por lo tanto, cambiar el contenido

de /etc/passwd

2.17. Investigue el comando umask. Modifique su .profile para que todos los

archivos que cree sólo tengan permiso de lectura y escritura para usted.

Page 25: Programación II

Ejercicios (cont)

2.18. Indique dónde muestra el comando ls –l información acerca de los links que

posee un archivo

2.19. Al utilizar el comando mv para mover el archivo de un directorio a otro. ¿Son

los datos los que se mueven? ¿Qué información interna piensa usted que se

modifica?

2.20. Visualice los dispositivos existentes en /dev con el comando ls –l /dev

¿Puede determinar cuáles dispositivos son de caracter y cuáles de bloque?

2.21. Trasládese al directorio /usr/bin y ejecute ls –F . Identifique dos vínculos y 5

archivos binarios.

2.22. Averigüe dónde se encuentran las contraseñas en su sistema.