1 / 25

Programación II

2 – Sistemas de Archivos. Programación II. Ing. Diego J. Arcusin info@digikol.com.ar. Todo en Unix son archivos. Sistema de archivos sencillo y fácil de usar. Archivo = una secuencia de bytes

Download Presentation

Programación II

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 2 – Sistemas de Archivos Programación II Ing. Diego J. Arcusin info@digikol.com.ar

  2. 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.

  3. 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.

  4. 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.

  5. 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).

  6. 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)

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

  8. /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.

  9. 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)

  10. 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 .

  11. 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 ?

  12. 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.

  13. El comando chmod • Permite el cambio de los permisos sobre los archivos. • Posee dos formas para especificar los permisos: • Forma OctalSe 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ólicaPermite 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.

  14. 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.

  15. 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

  16. 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

  17. 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.

  18. 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/fd0Dentro 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.

  19. Dispositivos • Ejemplos de algunos archivos de dispositivos • hda (Disco duro a) • lp0 (Impresora de líneas 0) • tty (Terminales) • /dev/null Archivo especial para descarte.

  20. Preguntas ?

  21. 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?

  22. 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.

  23. 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 soporte1024 may 1 17:23 practicos  drwxr-xr-x 2 victor soporte1024 oct 16 1998 navegador  drwxrwx--x 2 victor soporte1024 may 11 7:29 cashflow  drwxrwxr-x 2 victor soporte1024 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 alpresente 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.

  24. 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.

  25. 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.

More Related