sábado, 18 de diciembre de 2010

5.5 Mecanismos de protección

Dominios de protección

Muchos objetos del sistema necesitan protección, tales como la CPU, segmentos de memoria, unidades de disco, terminales, impresoras, procesos, archivos, bases de datos, etc.

Cada objeto se referencia por un nombre y tiene habilitadas un conjunto de operaciones sobre él.

Un dominio es un conjunto de parejas (objeto, derechos):

  • Cada pareja determina:
    • Un objeto.
    • Un subconjunto de las operaciones que se pueden llevar a cabo en él.

Un derecho es el permiso para realizar alguna de las operaciones.

Es posible que un objeto se encuentre en varios dominios con “distintos” derechos en cada dominio.

Un proceso se ejecuta en alguno de los dominios de protección:

  • Existe una colección de objetos a los que puede tener acceso.
  • Cada objeto tiene cierto conjunto de derechos.

Los procesos pueden alternar entre los dominios durante la ejecución, una llamada al S.O. provoca una alternancia de dominio, en algunos S.O. los dominios se llaman anillos, una forma en la que el S. O. lleva un registro de los objetos que pertenecen a cada dominio es mediante una matriz:

  • Los renglones son los dominios.
  • Las columnas son los objetos.
  • Cada elemento de la matriz contiene los derechos correspondientes al objeto en ese dominio, por ej.: leer, escribir, ejecutar.

Lista de control de acceso

Las “matrices de protección” son muy grandes y con muchos lugares vacíos:

  • Desperdician espacio de almacenamiento.
  • Existen métodos prácticos que almacenan solo los elementos no vacíos por filas o por columnas.

La lista de control de acceso (ACL: access control list):

  • Asocia a cada objeto una lista ordenada con:
    • Todos los dominios que pueden tener acceso al objeto.
    • La forma de dicho acceso (ej: lectura (r), grabación (w), ejecución (x)).

Una forma de implementar las ACL consiste en:

  • Asignar tres bits (r, w, x) para cada archivo, para:
    • El propietario, el grupo del propietario y los demás usuarios.
  • Permitir que el propietario de cada objeto pueda modificar su ACL en cualquier momento:
    • Permite prohibir accesos antes permitidos.

Capacidades

La matriz de protección también puede dividirse por renglones:

  • Se le asocia a cada proceso una lista de objetos a los cuales puede tener acceso.
  • Se le indican las operaciones permitidas en cada uno.
  • Esto define su dominio.

La lista de objetos se denomina lista de posibilidades y los elementos individuales se llaman posibilidades.

Cada posibilidad tiene:

  • Un campo tipo:
    • Indica el tipo del objeto.
  • Un campo derechos:
    • Mapa de bits que indica las operaciones básicas permitidas en este tipo de objeto.
  • Un campo objeto:
    • Apuntador al propio objeto (por ej.: su número de nodo-i).

Los principales métodos de protección son:

  • Arquitectura marcada:
    • Necesita un diseño de hardware en el que cada palabra de memoria tiene un bit adicional:
      • Indica si la palabra contiene una posibilidad o no.
      • Solo puede ser modificado por el S.O.
  • Lista de posibilidades dentro del S.O.:
    • Los procesos hacen referencia a las posibilidades mediante su número.
  • Lista de posibilidades cifrada dentro del espacio del usuario:
    • Cada posibilidad está cifrada con una clave secreta desconocida por el usuario.
    • Muy adecuado para sistemas distribuidos.

Generalmente las posibilidades tienen derechos genéricos aplicables a todos los objetos, por ej.:

  • Copiar posibilidad:
    • Crear una nueva posibilidad para el mismo objeto.
  • Copiar objeto:
    • Crear un duplicado del objeto con una nueva posibilidad.
  • Eliminar posibilidad:
    • Eliminar un dato dentro de la lista-c sin afectar al objeto.
  • Destruir objeto:
    • Eliminar en forma permanente un objeto y una posibilidad.

Canales encubiertos

5.4 Seguridad

Los sistemas de archivos generalmente contienen información muy valiosa para sus usuarios, razón por la que los sistemas de archivos deben protegerla.

El entorno de seguridad

Se entenderá por seguridad a los problemas generales relativos a la garantía de que los archivos no sean leídos o modificados por personal no autorizado; esto incluye aspectos técnicos, de administración, legales y políticos.

Dos de las más importantes facetas de la seguridad son:

  • La pérdida de datos.
  • Los intrusos.

Algunas de las causas más comunes de la pérdida de datos son:

  • Actos y hechos diversos, como incendios, inundaciones, terremotos, guerras, revoluciones, roedores, etc.
  • Errores de hardware o de software, como fallas en la CPU, discos o cintas ilegibles, errores en los programas, etc.
  • Errores humanos, por ej., entrada incorrecta de datos, mal montaje de cintas o discos, ejecución incorrecta de programas.

Respecto del problema de los intrusos, se los puede clasificar como:

  • Pasivos: solo desean leer archivos que no están autorizados a leer.
  • Activos: desean hacer cambios no autorizados a los datos.

Algunos tipos de intrusos son los siguientes:

  • Curiosidad casual de usuarios no técnicos.
  • Conocidos (técnicamente capacitados) husmeando.
  • Intentos deliberados por hacer dinero.
  • Espionaje comercial o militar.

También debe señalarse la posibilidad del ataque del caballo de Troya:

  • Modificar un programa normal para que haga cosas adversas además de su función usual.
  • Arreglar las cosas para que la víctima utilice la versión modificada.

Además debe considerarse la posibilidad de ataques al estilo del gusano de Internet:

  • Fue liberado por Robert Tappan Morris el 02/11/88 e hizo que se bloquearan la mayoría de los sistemas Sun y Vax de Internet.
  • Constaba de un programa arrancador y del gusano propiamente dicho.

Una forma de probar la seguridad de un sistema es contratar un grupo de expertos en seguridad, conocido como el equipo tigre o equipo de penetración, cuyo objetivo es intentar penetrar el sistema de seguridad para descubrir sus falencias y proponer soluciones.

Fallas de seguridad famosas

Ataques genéricos contra la seguridad

Los virus computacionales:

  • Constituyen una categoría especial de ataque.
  • Son un enorme problema para muchos usuarios.
  • Son fragmentos de programas que se añaden a programas legítimos con la intención de infectar a otros.
  • Un virus difiere de un gusano en lo siguiente:
    • Un virus está a cuestas de un programa existente.
    • Un gusano es un programa completo en sí mismo.
  • Los virus y los gusanos intentan diseminarse y pueden crear un daño severo.
  • Generalmente se propagan a través de copias ilegítimas de programas.
  • Comúnmente los virus se ejecutan e intentan reproducirse cada vez que se ejecuta el programa que los aloja.
  • Frecuentemente los problemas con los virus son más fáciles de evitar que de curar:
    • Utilizar software original adquirido en comercios respetables.
    • No utilizar copias “piratas”.
    • Efectuar controles rigurosos y frecuentes con programas antivirus actualizados.
    • Trabajar con metodología y disciplina rigurosa en el intercambio de discos y en las copias a través de redes de comunicación de datos.

Principios de diseño para la seguridad

El diseño del sistema debe ser público, ya que pensar que el intruso no conocerá la forma de funcionamiento del sistema es un engaño.

El estado predefinido debe ser el de no acceso, dado que los errores en donde se niega el acceso válido se reportan más rápido que los errores en donde se permite el acceso no autorizado.

Verificar la autorización actual:

  • El sistema no debe:
    • Verificar el permiso.
    • Determinar que el acceso está permitido.
    • Abandonar esta información para su uso posterior.
  • El sistema tampoco debe:
    • Verificar el permiso al abrir un archivo y no después de abrirlo, pues un acceso habilitado permanecería como válido aunque haya cambiado la protección del archivo.

El mecanismo de protección debe ser simple, uniforme e integrado hasta las capas más bajas del sistema:

  • Dotar de seguridad a un sistema inseguro es casi imposible.
  • La seguridad no es una característica que se pueda añadir fácilmente.

El esquema de seguridad debe ser sicológicamente aceptable:

  • Los usuarios no deben sentir que la protección de sus archivos les implica demasiado trabajo:
    • Podrían dejar de proteger sus archivos.
    • Se quejarían en caso de problemas.
    • No aceptarían fácilmente su propia culpa

Verificación de autenticidad de usuarios

Muchos esquemas de protección se basan en la hipótesis de que el sistema conoce la identidad de cada usuario.

La identificación de los usuarios se conoce como la autentificación de los usuarios.

Muchos métodos de autentificación se basan en:

  • La identificación de algo conocido por el usuario.
  • Algo que posee el usuario.
  • Algo que es el usuario.

Contraseñas

Son la forma de autentificación más utilizada, son de fácil comprensión e implementación, deben almacenarse cifradas (encriptados).

Una mejora al esquema de contraseñas consiste en:

  • Asociar un número aleatorio de “n” bits a cada contraseña.
  • El número aleatorio se modifica al cambiar la contraseña.
  • El número se guarda en el archivo de contraseñas en forma no cifrada.
  • Se concatenan la contraseña y el número aleatorio y se cifran juntos.
  • El resultado cifrado se almacena en el archivo de contraseñas.
  • Se aumenta por 2 n el espectro de búsqueda: a esto se llama salar el archivo de contraseñas.

Una protección adicional consiste en hacer ilegible el archivo de contraseñas encriptados.

Otra protección adicional consiste en que el sistema sugiera a los usuarios contraseñas generadas según ciertos criterios; con esto se evita que el usuario elija contraseñas muy sencillas.

También es conveniente que el sistema obligue al usuario a cambiar sus contraseñas con regularidad; se puede llegar a la contraseña de una sola vez.

Identificación Física

Una posibilidad es la verificación de si el usuario tiene cierto elemento (generalmente una tarjeta plástica con una banda magnética), que generalmente se combina con una contraseña.

Otro aspecto consiste en la medición de características físicas difíciles de reproducir:

  • Huellas digitales o vocales.
  • Firmas.
  • Longitud de los dedos de las manos.

Medidas Preventivas

· Limitar los intentos de acceso fallidos y registrarlos.

· Registrar todos los accesos.

· Tender trampas para atrapar a los intrusos.

domingo, 12 de diciembre de 2010

5.3 Implementación de sistemas de archivos

Se consideran aspectos tales como:

  • La forma de almacenamiento de archivos y directorios.
  • La administración del espacio en disco.
  • La forma de hacerlo de manera eficiente y confiable.

Se deben tener presentes problemas tales como la “fragmentación” creciente del espacio en disco:

  • Ocasiona problemas de performance al hacer que los archivos se desperdiguen a través de bloques muy dispersos.

Implementación de archivos

El aspecto clave de la implantación del almacenamiento de archivos es el registro de los bloques asociados a cada archivo.

Algunos de los métodos utilizados son los siguientes:

  • Asignación contigua:
    • Los archivos son asignados a áreas contiguas de almacenamiento secundario.
    • Las principales ventajas son:
      • Facilidad de implantación, ya que solo se precisa el número del bloque de inicio para localizar un archivo.
    • Los principales defectos son:
      • Se debe conocer el tamaño máximo del archivo al crearlo.
      • Produce una gran fragmentación de los discos.
  • Asignación por lista enlazada:
      • Las entradas en el directorio de usuarios apuntan al primer bloque de cada archivo.
      • Cada uno de los bloques de longitud fija que forman un archivo contiene dos partes:
        • Un bloque de datos, Un apuntador al bloque siguiente.
  • Asignación por lista enlazada empleando índices:
    • Los apuntadores son colocados en varios bloques de índices separados:
      • Cada bloque de índices contiene un número fijo de elementos.
      • Cada entrada contiene un identificador de registros y un apuntador a ese registro.
      • Si es necesario utilizar más de un bloque de índices para describir un archivo, se encadena una serie de bloques de índices.
  • Nodos-i (nodos índices):

Se asocia a cada archivo una pequeña tabla, llamada nodo-i (nodo índice):

Contiene los atributos y direcciones en disco de los bloques del archivo.

Se traslada del disco a la memoria principal al abrir el archivo.

Implementación de directorios

Para abrir un archivo el S.O. utiliza información del directorio:

  • El directorio contiene la información necesaria para encontrar los bloques en el disco.
  • El tipo de información varía según el sistema.

La principal función del sistema de directorios es asociar el nombre del archivo con la información necesaria para localizar los datos.

Un aspecto íntimamente ligado con esto es la posición de almacenamiento de los atributos:

  • Una posibilidad es almacenarlos en forma directa dentro del dato del directorio.
  • Otra posibilidad es almacenar los atributos en el nodo-i en vez de utilizar la entrada del directorio.

Administración del espacio en disco

Existen dos estrategias generales para almacenar un archivo de “n” bytes, Asignar “n” bytes consecutivos de espacio en el disco:

  • Tiene el problema de que si un archivo crece será muy probable que deba desplazarse en el disco, lo que puede afectar seriamente al rendimiento.

Tamaño del bloque:

Dada la forma en que están organizados los bloques, el sector, la pista y el cilindro son los candidatos obvios como unidades de asignación.

Hay que recordar que el tiempo de lectura de un bloque de disco es la suma de los tiempos de:

  • Búsqueda.
  • Demora rotacional.
  • Transferencia.

Registro de los bloques libres:

Se utilizan por lo general dos métodos:

  • La lista de bloques libres como lista ligada.
  • Un mapa de bits.

Mapa de bits:

  • Un disco con “n” bloques necesita un mapa de bits con “n” bits.
  • Los bloques libres se representa con “1” y los asignados con “0” (o viceversa).
  • Generalmente este método es preferible cuando existe espacio suficiente en la memoria principal para contener completo el mapa de bits.

Confiabilidad del sistema de archivos

Es necesario proteger la información alojada en el sistema de archivos, efectuando los resguardos correspondientes.

De esta manera se evitan las consecuencias generalmente catastróficas de la pérdida de los sistemas de archivos.

Las pérdidas se pueden deber a problemas de hardware, software, hechos externos, etc.

Se utilizan soluciones por hardware y por software.

La solución en hardware:

  • Consiste en dedicar un sector del disco a la lista de bloques defectuosos.
  • Al inicializar el controlador por primera vez:
    • Lee la “lista de bloques defectuosos”.
    • Elige un bloque (o pista) de reserva para reemplazar los defectuosos.
    • Registra la asociación en la lista de bloques defectuosos.
    • En lo sucesivo, las solicitudes del bloque defectuoso utilizarán el de repuesto.

La solución en software:

  • Requiere que el usuario o el sistema de archivos construyan un archivo con todos los bloques defectuosos.
  • Se los elimina de la “lista de bloques libres”.
  • Se crea un “archivo de bloques defectuosos”:
    • Esta constituido por los bloques defectuosos.
    • No debe ser leído ni escrito.
    • No se debe intentar obtener copias de respaldo de este archivo.

Respaldos (copias de seguridad o de back-up):

Los respaldos pueden consistir en efectuar copias completas del contenido de los discos (flexibles o rígidos).

Una estrategia de respaldo consiste en dividir los discos en áreas de datos y áreas de respaldo, utilizándolas de a pares:

  • Se desperdicia la mitad del almacenamiento de datos en disco para respaldo.
  • Cada noche (o en el momento que se establezca), la parte de datos de la unidad 0 se copia a la parte de respaldo de la unidad 1 y viceversa.

Rendimiento del sistema de archivos

El acceso al disco es mucho más lento que el acceso a la memoria:

  • Los tiempos se miden en milisegundos y en nanosegundos respectivamente.
  • Se debe reducir el número de accesos a disco.

La técnica más común para reducir los accesos a disco es el bloque caché o buffer caché:

  • Se utiliza el término ocultamiento para esta técnica (del francés “cacher”: ocultar).
  • Un caché es una colección de bloques que pertenecen desde el punto de vista lógico al disco, pero que se mantienen en memoria por razones de rendimiento.

Uno de los algoritmos más comunes para la administración del caché es el siguiente:

  • Verificar todas las solicitudes de lectura para saber si el bloque solicitado se encuentra en el caché.
  • En caso afirmativo, se satisface la solicitud sin un acceso a disco.
  • En caso negativo, se lee para que ingrese al caché y luego se copia al lugar donde se necesite.

Una técnica importante para aumentar el rendimiento de un sistema de archivos es la reducción de la cantidad de movimientos del brazo del disco (mecanismo de acceso):

  • Se deben colocar los bloques que probablemente tengan un acceso secuencial, próximos entre sí, preferentemente en el mismo cilindro.
  • Los nodos-i deben estar a mitad del disco y no al principio, reduciendo a la mitad el tiempo promedio de búsqueda entre el nodo-i y el primer bloque del archivo.

Sistemas de archivos estructurados por diario

5.2 Directorios

Generalmente son utilizados por los S.O. para llevar un registro de los archivos. En muchos sistemas son a su vez también archivo.

Sistemas de directorio jerárquicos

El directorio contiene un conjunto de datos por cada archivo referenciado.

Una posibilidad es que el directorio contenga por cada archivo referenciado:

  • El nombre.
  • Sus atributos.
  • Las direcciones en disco donde se almacenan los datos.

Otra posibilidad es que cada entrada del directorio contenga:

  • El nombre del archivo.
  • Un apuntador a otra estructura de datos donde se encuentran los atributos y las direcciones en disco.

Al abrir un archivo el S.O.:

  • Busca en su directorio el nombre del archivo.
  • Extrae los atributos y direcciones en disco.
  • Graba esta información en una tabla de memoria real.
  • Todas las referencias subsecuentes al archivo utilizarán la información de la memoria principal.

El número y organización de directorios varía de sistema en sistema:

  • Directorio único: el sistema tiene un solo directorio con todos los archivos de todos los usuarios.
  • Un directorio por usuario: el sistema habilita un solo directorio por cada usuario.
  • Un árbol de directorios por usuario: el sistema permite que cada usuario tenga tantos directorios como necesite, respetando una jerarquía general.

Nombres de ruta

Cuando el sistema de archivos está organizado como un árbol de directorios se necesita una forma de determinar los nombres de los archivos.

Los principales métodos para nombres de los archivos son:

  • Ruta de Acceso Absoluta:
    • Cada archivo tiene una ruta de acceso absoluta.
    • Consta de la ruta de acceso desde el directorio raíz hasta el archivo.
    • Los componentes de la ruta de acceso se separan mediante algún carácter llamado “separador”.
  • Ruta de Acceso Relativa:
    • Se utiliza junto con el concepto de directorio de trabajo o directorio activo.
    • Todos los nombres que no comiencen en el directorio raíz se toman en relación con el directorio de trabajo.
    • El nombre absoluto de la ruta de acceso siempre funciona, sin importar cual sea el directorio de trabajo.

Operaciones con directorios

Las llamadas al sistema permitidas para el manejo de los directorios tienen variación de sistema a sistema.

Las más comunes son las siguientes:

  • Create (crear): se crea un directorio vacío.
  • Delete (eliminar): se elimina un directorio, que debe estar vacío.
  • Opendir (abrir directorio): se pueden leer los directorios:
    • Antes de poder leer un directorio, éste debe ser abierto.
  • Closedir (cerrar directorio): cuando se ha leído un directorio, éste debe ser cerrado para liberar el espacio correspondiente de la tabla interna.
  • Readdir (leer directorio): regresa la siguiente entrada en un directorio abierto, sin importar el tipo de estructura de directorios que se utilice.
  • Rename (cambiar de nombre): cambia el nombre de un directorio de manera similar al cambio para archivos.
  • Link (ligar): es una técnica que permite que un archivo aparezca en más de un directorio.
  • Unlink (desligar): se elimina una entrada del directorio.

5.1 Archivos

Nombre de archivos

Los archivos son un mecanismo de abstracción, proporcionan una manera de almacenar información y después poder usarla y leerla. Cuando un proceso crea un archivo este le asigna un nombre. Cuando un proceso termina, el archivo sigue existiendo, mientras este archivo sigue vigente por así decirlo, mientras otros procesos pueden acceder a él utilizando su mismo nombre.

Algunos sistemas de archivos distinguen entre las letras mayúsculas y minúsculas, mientras que otros no.

Muchos SO utilizan nombres de archivo con dos partes, separadas por un punto:

  • La parte posterior al punto es la extensión de archivo y generalmente indica algo relativo al archivo, aunque las extensiones suelen ser meras convenciones.

Estructura de archivos

Los archivos pueden estructurarse de tres clases, las cuales son: secuencia de bytes, secuencia de registros y árbol. Los programas de usuario pueden poner cualquier cosa que deseen los archivos y darles cualquier nombre que crean conveniente.

  • Secuencia de bytes”:
    • El archivo es una serie no estructurada de bytes.
    • Posee máxima flexibilidad.
    • El S. O. no ayuda pero tampoco estorba.
  • “Secuencia de registros”:
    • El archivo es una secuencia de registros de longitud fija, cada uno con su propia estructura interna.
  • “Árbol ”:
    • El archivo consta de un árbol de registros, no necesariamente de la misma longitud.
    • Cada registro tiene un campo key (llave o clave) en una posición fija del registro.
    • El árbol se ordena mediante el campo de clave para permitir una rápida búsqueda de una clave particular.

Tipos de archivos

UNIX tiene archivos especiales por bloques y por caracteres.

· Los archivos regulares son los que contienen información del usuario.

· Los directorios son archivos del sistema que sirven para mantener la estructura del sistema de archivos.

· Los archivos especiales por caracteres están relacionados con E/S y sirven para modelar dispositivos de E/S.

· Los archivos especiales por bloques sirven para modelar discos.

Los archivos normales por lo regular son archivos ASCII o archivos binarios. Los archivos ASCII consisten en líneas de texto. El encabezado comienza con lo que se conoce como un número mágico, este identifica al archivo como ejecutable.

Archivo binario es un archivo de archivado, de UNKs, este archivo consiste en una colección de procedimientos de biblioteca (módulos) compilado pero no enlazados.

El sistema operativo determina cual programa debe ejecutarse basándose en la extensión del archivo.

Acceso a archivos

Los primeros sistemas operativos ofrecían un solo tipo de acceso a los archivos: acceso secuencial. Los archivos secuenciales pueden “rebobinarse “, y pueden leerse tantas veces como sea necesario. Son apropiados cuando el medio de almacenamiento es cinta magnética, no disco.

Los archivos cuyos bytes o registros se pueden leer en cualquier orden se denominan archivos de acceso aleatorio.

Se utilizan dos métodos para especificar el punto donde debe iniciarse la lectura. El primero, la operación READ indica la posición del archivo en la que se debe comenzar a leer. El segundo, la operación especial SEEK, para establecer la posición actual. Después de un SEEK, el archivo se puede leer secuencialmente a partir de la posición que este actualmente.

Atributos de archivos

Todo archivo tiene un nombre y datos. Los sistemas operativos asocian información adicional a cada archivo. Llamamos a esos datos adicionales atributos del archivo.

Los primeros cuatros atributos se refieren a la protección del archivo e indica quien puede acceder a él y quién no. En algunos sistemas el usuario debe presentar una contraseña para poder acceder a un archivo.

Las banderas son bits o campos cortos que controlan o habilitan alguna propiedad específica. Los archivos ocultos, no aparecen en los listados de los archivos. La bandera de archivado es un bit que indica si el archivo ya se respaldo o no. La bandera temporal permite marcar un archivo para que sea borrado automáticamente cuando el proceso que lo creo termina.

Los campos de longitud de registro, posición de la llave y longitud de la llave solo están presentes en los archivos cuyos registros pueden consultarse empleando una llave.

Los diversos tiempos mantienen un registro de cuando se creó el archivo, cuando se accedió a el por última vez y cundo se modifico por última vez. El tamaño actual indica que tan grande es el archivo actualmente.

Operaciones con archivos

Los archivos existen para almacenar información que se pueda recuperar. Los sistemas ofrecen distintas operaciones de almacenamiento y recuperación. Las llamadas al sistema más comunes relacionadas con archivos son:

  • Create (crear): el archivo se crea sin datos.
  • Delete (eliminar): si el archivo ya no es necesario debe eliminarse para liberar espacio en disco. Ciertos S.O.
  • Open (abrir): antes de utilizar un archivo, un proceso debe abrirlo.
  • Close (cerrar): cuando concluyen los accesos, los atributos y direcciones del disco ya no son necesarios, por lo que el archivo debe cerrarse y liberar la tabla de espacio interno.
  • Read (leer): los datos se leen del archivo; quien hace la llamada debe especificar la cantidad de datos necesarios y proporcionar un buffer para colocarlos.
  • Write (escribir): los datos se escriben en el archivo, en la posición actual.
  • Append (añadir): es una forma restringida de “write”. Solo puede añadir datos al final del archivo.
  • Seek (buscar): especifica el punto donde posicionarse.
  • Get attributes (obtener atributos): permite a los procesos obtener los atributos del archivo.
  • Set attributes (establecer atributos): algunos atributos pueden ser determinados por el usuario y modificados luego de la creación del archivo.
  • Rename (cambiar de nombre): permite modificar el nombre de un archivo ya existente.