Tipos de archivo

De doc.ubuntu-es
(Diferencias entre revisiones)
Saltar a: navegación, buscar
(Permisos)
(Ver también...)
(No se muestran 15 ediciones intermedias realizadas por 2 usuarios)
Línea 1: Línea 1:
=== Enlaces===
 
 
* https://help.ubuntu.com/ubuntu/desktopguide/es/install-file.html
 
 
==El Sistema de Archivos==
 
==El Sistema de Archivos==
  
Línea 8: Línea 5:
 
Para conocer las propiedades de un Sistema de Archivos, comencemos por definir que es un archivo:
 
Para conocer las propiedades de un Sistema de Archivos, comencemos por definir que es un archivo:
 
   
 
   
Con frecuencia, se define a un archivo informático, como una entidad lógica formada por un conjunto de bytes, ubicados sobre un sistema de almacenamiento (temporal o permanente), que responde a las características de unicidad,ubicación y reglas de manipulación.
+
:''Con frecuencia, se define a un archivo informático, como una entidad lógica formada por un conjunto de bytes, ubicados sobre un sistema de almacenamiento (temporal o permanente), que responde a las características de unicidad,ubicación y reglas de manipulación''.
  
* La propiedad de unicidad de un archivo, radica en que éste es en si mismo una entidad, con una asignación de espacio finito, susceptible de ser modificado internamente en tamaño y contenido
+
* La '''propiedad de unicidad''' de un archivo, radica en que éste es en si mismo una entidad, con una asignación de espacio finito, susceptible de ser modificado internamente en tamaño y contenido
  
* Su localización exacta, determina la existencia del mismo, incluso vacío de contenido, pero con límites de propiedad inherente al espacio físico asignado por las variables ortogonales en cuanto a su asentamiento en el soporte que lo contiene.Un fichero no puede existir sin esta cualidad.
+
* Su '''localización exacta''', determina la existencia del mismo, incluso vacío de contenido, pero con límites de propiedad inherente al espacio físico asignado por las variables ortogonales en cuanto a su asentamiento en el soporte que lo contiene. Un fichero no puede existir sin esta cualidad.
  
* Y unas reglas de manipulación. Es decir, tendrá un propietario, asignación de lecto_escritura y ejecución, compartibles/no compartibles, variables/ no variables, aspectos que podrán modificarse, de acuerdo con las reglas que puedan establecerse en la vida útil del archivo.
+
* Y unas '''reglas de manipulación'''. Es decir, tendrá un propietario, asignación de lecto_escritura y ejecución, compartibles/no compartibles, variables/ no variables, aspectos que podrán modificarse, de acuerdo con las reglas que puedan establecerse en la vida útil del archivo.
  
 
La función "vital" de un archivo es poder ser leído, y como tal debe de ser localizado lo mas fácilmente posible dentro de la unidad de soporte que lo contiene.
 
La función "vital" de un archivo es poder ser leído, y como tal debe de ser localizado lo mas fácilmente posible dentro de la unidad de soporte que lo contiene.
  
Esta unidad, que puede ser un disco duro, una cinta, un CD o cualquier unidad susceptible de almacenar información, necesita un Sistema de Ficheros,para organizar la información y tener acceso a ella de forma eficiente y rápida.
+
Esta unidad, que puede ser un disco duro, una cinta, un CD o cualquier unidad susceptible de almacenar información, necesita un '''Sistema de Ficheros''', para organizar la información y tener acceso a ella de forma eficiente y rápida.
 +
 
 +
No entraremos aquí en los detalles de almacenamiento  volátil, o sea en memoria de semiconductores como la memoria RAM, que mantiene la información mientras dure el flujo eléctrico. Dedicaremos un apartado para esta información.
  
No entraremos aquí en los detalles de almacenamiento  volátil, o sea en memoria de semiconductores como la memoria RAM, que mantiene la información mientras dure el flujo eléctrico. Dedicaremos un apartado para esta información.
 
 
Nos centraremos en el mas común, es decir el disco duro
 
Nos centraremos en el mas común, es decir el disco duro
  
La denominación archivo es equivalente a fichero.
+
La denominación '''archivo es equivalente a fichero'''.
 +
 
 +
Existen ''archivos especiales'' que representan a los dispositivos físicos, existen archivos ''directorios'', para organizar otros archivos y los ''archivos simples'', encargados de almacenar toda la información, incluso programas. El fácil hacerse a la idea de que existen infinidad de archivos simples.
 +
 
 +
Como definimos que toda la información que se escribe en el disco se considera un archivo, existen diferencias importantes en cuanto al contenido de los ficheros. Principalmente la que define a archivos de "texto" y los archivos binarios.
 +
 
 +
'''Los archivos de "texto"''' pueden contener documentos, memorandums, scripts, cartas, etc. y estarán escritos en código ASCII. (El código ASCII es el encargado de representar todos los caracteres del texto).
 +
Estos archivos podrán editarse y modificarse  con un editor de texto tipo, vi, emacs, gedit, ..etc.
 +
 
 +
'''Los archivos binarios''', por el contrario  contienen datos no de texto, por ej: imágenes. No pueden verse con un editor. Estos archivos sólo tienen sentido para los programas que lo ejecutan. Por ej: Se escribe un programa en C, por lo tanto lo que se edita está en modo texto, pero, la máquina no puede entender este lenguaje, así que debe de traducirse a un lenguaje que la máquina pueda leer.
 +
 
 +
Es necesario un '''Compilador''', o sea, un programa que convierta el modo texto a lenguaje máquina. El archivo resultante, (aquel que la máquina puede leer) se llama '''binario'''.
 +
 
 +
:''El programa que se queda en C, se llama Archivo fuente, o simplemente, fuente.''
 +
:''El programa que guarda los datos del programa en código máquina ( o sea binario), se llama ejecutable''.
 +
 
 +
Mas técnicamente. Los archivos de cualquier índole se almacenan en la máquina en series de bits, o sea, en código binario ( valores 0 y 1 ó activado desactivado). Estos bits se agrupan en grupos de 8 para formar 1 byte. Así, el código ASCII contiene los datos para la representación de los caracteres. Por ej:
 +
 
 +
:Para la letra " A " el byte formado por 0 1 0 0 0 0 0 0 , indica que para este carácter sólo está activado el bit 7 en el byte.
 +
:Para la letra " a ", que es un carácter diferente en Unix, los bits activados son otros ---> 0 1 1 0 0 0 0 1.
 +
 
 +
El código ASCII utiliza sólo 7 bits de los 8 del byte. El octavo, localizado en el extremo izquierdo siempre se configura en 0.
 +
 
 +
Los archivos binarios también almacenan datos en bytes, pero a diferencia de los de texto, utilizan los 8 bits.
 +
 
 +
==Tipos de Archivos==
 +
La letra que precede a la descripción es el indicador, o sea identifica el tipo de archivo  cuando hacemos un listado de ellos con el comando <code>ls</code>
 +
 
 +
{| border="0" style="background:LightBlue;" cellpadding="2" cellspacing= "6" align="center"
 +
!Identificador!!align="left"|Tipo de Archivo
 +
|-
 +
|align="center"|_
 +
|Archivos sencillos
 +
|-
 +
|align="center"|d
 +
|Directorios
 +
|-
 +
|align="center"|l
 +
|Vínculos simbólicos(flexible, blandos)
 +
|-
 +
|align="center"|c
 +
|Dispositivos de caracteres
 +
|-
 +
|align="center"|b
 +
|Dispositivos de bloques
 +
|-
 +
|align="center"|p
 +
|Tuberías (pipe) con nombre (FIFO)
 +
|-
 +
|align="center"|s
 +
|Socket (conector para comunicaciones (TCP/IP)
 +
|}
  
===Tipos de Archivos===
 
La letra que precede a la descripción es el indicador, o sea identifica el tipo de archivo  cuando hacemos un listado de ellos con el comando ls
 
  
 
 
:'''-''' --->Archivos sencillos u ordinarios
 
:'''d''' -->Directorios
 
:'''l''' --->Vínculos simbólicos (flexibles, blandos)
 
:'''c''' -->Dispositivo de caracteres
 
:'''b''' -->Dispositivos de bloques
 
:'''p''' -->Tuberías (pipe) con nombre (FIFO)
 
:'''s''' -->Socket (conector para comunicación TCP/IP)
 
  
 
A modo de ejemplo:
 
A modo de ejemplo:
Línea 46: Línea 85:
 
7899188 -rw-r--r--  1 root root  226 2006-05-22 16:25 udev.conf</pre>
 
7899188 -rw-r--r--  1 root root  226 2006-05-22 16:25 udev.conf</pre>
  
'''''Los archivos sencillos'''''
+
===Los archivos sencillos===
 
:Se emplean para almacenar información y datos en dispositivos de almacenamiento secundario, que por regla general es el disco duro. (obviamente, también pueden ser almacenado en cintas, memorias..etc).
 
:Se emplean para almacenar información y datos en dispositivos de almacenamiento secundario, que por regla general es el disco duro. (obviamente, también pueden ser almacenado en cintas, memorias..etc).
:Un archivo sencillo puede contener desde un programa (Java, C++, C, Perl), como imágenes, textos, sonido, gráficos, etc. En Unix/Linux no existe diferencia a la hora de clasificar estos archivos por su contenido, para el núcleo, todos son iguales, sólo es un flujo de :bytes. Otra cosa es el tratamiento que hacen de los mismos la aplicaciones. Estas sí se encargan de verificar la naturaleza de los archivos a :procesar y obrar en consecuencia al contenido de los mismos.Los nombres de los archivos puede asignarse de manera arbitraria. El nombre asociado a un archivo sólo representa una función lógica, no de dependencia física. Sólo existen unas pequeñas restricciones:
+
:Un archivo sencillo puede contener desde un programa (Java, C++, C, Perl), como imágenes, textos, sonido, gráficos, etc. En Unix/Linux no existe diferencia a la hora de clasificar estos archivos por su contenido, para el núcleo, todos son iguales, sólo es un flujo de bytes. Otra cosa es el tratamiento que hacen de los mismos las aplicaciones. Estas sí se encargan de verificar la naturaleza de los archivos, a procesar y obrar en consecuencia al contenido de los mismos.Los nombres de los archivos pueden asignarse de manera arbitraria. El nombre asociado a un archivo sólo representa una función lógica, no de dependencia física. Sólo existen unas pequeñas restricciones:
  
 
::* nombre no mayor de 255 caracteres
 
::* nombre no mayor de 255 caracteres
Línea 55: Línea 94:
 
::* tener en cuenta que un nombre comenzado con un punto, significa un archivo oculto.
 
::* tener en cuenta que un nombre comenzado con un punto, significa un archivo oculto.
  
:Los archivos en Unix/Linux no necesitan extensión, al ser ser tratados en principio sin formato predeterminado, aunque puede hacerse como recurso referencial, con una o mas extensiones que indiquen la naturaleza del contenido. Por ej: los archivos pertenecientes al lenguaje C, suelen llevar la extensión .c. Los imágenes; .gif ; textos, .txt..etc.
+
:Los archivos en Unix/Linux no necesitan extensión, al ser ser tratados en principio sin formato predeterminado, aunque puede hacerse como recurso referencial, con una o mas extensiones que indiquen la naturaleza del contenido. Por ej: Las imágenes: .gif ; textos: .txt..etc. Aunque algunas aplicaciones necesiten de extensiones en los archivos, como algunos compiladores de C ( nombre_archivo.c),  html -- para algunos navegadores web.
  
'''''Los directorios'''''
+
===Los directorios===
:son archivos que contienen a su vez otros archivos que a veces también pueden ser otros directorios. En Unix/Linux, los directorios tienen una forma determinada
+
:son archivos que contienen a su vez otros archivos que a veces también pueden ser otros directorios comunmente llamados subdirectorios. En Unix/Linux, los directorios tienen una forma determinada
 
   
 
   
 
::::'''número de i-nodo + nombre del directorio'''
 
::::'''número de i-nodo + nombre del directorio'''
  
:El número i-nodo tiene 2 Bytes, siendo siempre un número entero.ReInstalar_aplicacionespresenta el valor de un índice que opera dentro de una lista en el disco.Su propósito es facilitar la búsqueda de los archivos, ya que en la lista que forma, se almacenan características de los archivos representados, como tamaño, fecha de creación, bloque asignado, permisos, enlaces, pero no el nombre.  
+
:El número i-nodo tiene 2 Bytes, siendo siempre un número entero.Representa el valor de un índice que opera dentro de una lista en el disco.Su propósito es facilitar la búsqueda de los archivos, ya que en la lista que forma, se almacenan características de los archivos representados, como tamaño, fecha de creación, bloque asignado, permisos, enlaces, pero no el nombre.  
  
 
:Físicamente, un archivo no se almacena de forma contínua en el dispositivo de almacenamiento, es decir, puede estar repartido en varios bloques, (fragmentación). A diferencia de Windows, Linux tiende a la continuidad del espacio físico en el reparto de los bloques de asignación. Debido a esto, es necesario la existencia de una estructura adicional que "reúna" los distintos fragmentos del archivo para ser leído.
 
:Físicamente, un archivo no se almacena de forma contínua en el dispositivo de almacenamiento, es decir, puede estar repartido en varios bloques, (fragmentación). A diferencia de Windows, Linux tiende a la continuidad del espacio físico en el reparto de los bloques de asignación. Debido a esto, es necesario la existencia de una estructura adicional que "reúna" los distintos fragmentos del archivo para ser leído.
Línea 68: Línea 107:
 
:Ésta es la función principal de la lista de i-nodos. En todos los directorios aparecen  dos ficheros ocultos representados por  " . "  y  " .. "  El primero " . " se refiere al directorio actual y el segundo " .. " al directorio padre, es decir al directorio al que cuelga en orden de jerarquía del Sistema de Ficheros. Obviamente el directorio / (root) principal, carece de este fichero oculto.
 
:Ésta es la función principal de la lista de i-nodos. En todos los directorios aparecen  dos ficheros ocultos representados por  " . "  y  " .. "  El primero " . " se refiere al directorio actual y el segundo " .. " al directorio padre, es decir al directorio al que cuelga en orden de jerarquía del Sistema de Ficheros. Obviamente el directorio / (root) principal, carece de este fichero oculto.
  
'''''Enlaces'''''
+
===Enlaces===
 
:Es un fichero cuya función es permitir enlaces a elementos del sistema de archivos desde cualquier punto de la jerarquía del mismo.Un enlace no es mas que un nombre que apunta a un determinado recurso del sistema de ficheros, físico o lógico.Dependiendo de su función los clasificamos en,
 
:Es un fichero cuya función es permitir enlaces a elementos del sistema de archivos desde cualquier punto de la jerarquía del mismo.Un enlace no es mas que un nombre que apunta a un determinado recurso del sistema de ficheros, físico o lógico.Dependiendo de su función los clasificamos en,
 
                                                                                                          
 
                                                                                                          
Línea 81: Línea 120:
 
::En el caso de borrado de un fichero original ( y lógicamente todos los enlaces fuertes asociados a él), los enlaces simbólicos quedan inconsistentes o perdidos.  
 
::En el caso de borrado de un fichero original ( y lógicamente todos los enlaces fuertes asociados a él), los enlaces simbólicos quedan inconsistentes o perdidos.  
  
::Estos enlaces son  articulados en Linux como ficheros independientes, conteniendo una referencia, el inodo, la cual apunta a la ubicación real del archivo. Estos enlaces usan un path_name (ruta) que puede ser absoluta, cuando comienza en " / " o relativa de acuerdo con la ubicación del enlace. Un enlace simbólico, no puede moverse una vez creado porque se romperá, a diferencia de los enlaces fuertes.Otra carcterística es carecen de permisos  o estado por su cuenta. En su defecto usan los permisos del fichero al que apuntan.  
+
::Estos enlaces son  articulados en Linux como ficheros independientes, conteniendo una referencia, el inodo, la cual apunta a la ubicación real del archivo. Estos enlaces usan un path_name (ruta) que puede ser absoluta, cuando comienza en " / " o relativa de acuerdo con la ubicación del enlace. Un enlace simbólico, no puede moverse una vez creado porque se romperá, a diferencia de los enlaces fuertes.Otra carcterística es que carecen de permisos  o estado por su cuenta. En su defecto usan los permisos del fichero al que apuntan.  
  
 
::En si mismo, se considera que el enlace propiamente dicho tiene todos los permisos activados.Los cantidad bytes ocupados por el enlace es igual a la longitud de la ruta que contiene, mas el carácter nulo del final.
 
::En si mismo, se considera que el enlace propiamente dicho tiene todos los permisos activados.Los cantidad bytes ocupados por el enlace es igual a la longitud de la ruta que contiene, mas el carácter nulo del final.
  
'''''Dispositivos de caracteres y bloques'''''
+
===Dispositivos de caracteres y bloques===
 
:Son archivos especiales cuya principal función es la comunicación con un dispositivo de hardware. De acuerdo con la naturaleza del hardware, se denominan de caracteres, (consola, puertos de serie etc) o de bloques, (discos, memorias, ..etc).Estos archivos pueden entenderse como puntos de unión entre el núcleo y los controladores (drivers) de dispositivos como pueden ser  /dev/tty0,  /dev/null, /dev/hda
 
:Son archivos especiales cuya principal función es la comunicación con un dispositivo de hardware. De acuerdo con la naturaleza del hardware, se denominan de caracteres, (consola, puertos de serie etc) o de bloques, (discos, memorias, ..etc).Estos archivos pueden entenderse como puntos de unión entre el núcleo y los controladores (drivers) de dispositivos como pueden ser  /dev/tty0,  /dev/null, /dev/hda
  
'''''Tuberías con nombre'''''
+
===Tuberías con nombre===
 
:Archivos localizados para la comunicación entre procesos, son una via de intercambio de datos. Se gestionan mediante el método FIFO (First In-First Out), el primer byte introducido por el emisor será el primero en ser extraído por el receptor. Su comunicación es unidireccional.Este tipo de fichero es localizado mediante una ruta, como cualquier fichero normal. Puede ser borrado como cualquier archivo.  
 
:Archivos localizados para la comunicación entre procesos, son una via de intercambio de datos. Se gestionan mediante el método FIFO (First In-First Out), el primer byte introducido por el emisor será el primero en ser extraído por el receptor. Su comunicación es unidireccional.Este tipo de fichero es localizado mediante una ruta, como cualquier fichero normal. Puede ser borrado como cualquier archivo.  
 
:Por supuesto puede verse con el comando ls.Otra de sus características es que pueden intercomunicar procesos de especies diferentes, es decir, pueden comunicar y sincronizar procesos  de la misma máquina, sin necesidad de que lo hereden por medio de la llamada fork.
 
:Por supuesto puede verse con el comando ls.Otra de sus características es que pueden intercomunicar procesos de especies diferentes, es decir, pueden comunicar y sincronizar procesos  de la misma máquina, sin necesidad de que lo hereden por medio de la llamada fork.
  
'''''Socket'''''
+
===Socket===
 
:son archivos para comunicación entre procesos locales. Se pueden ver como archivos, pero no pueden ser leídos y escritos salvo por los procesos directamente relacionados con la comunicación de la que son objeto.
 
:son archivos para comunicación entre procesos locales. Se pueden ver como archivos, pero no pueden ser leídos y escritos salvo por los procesos directamente relacionados con la comunicación de la que son objeto.
  
===Atributos de los archivos===
+
==Atributos de los archivos==
  
 
:La necesidad de establecer atributos a los archivos para su operativa, es particularmente intensa en Unix/Linux. De esto deriva la seguridad del Sistema y la posibilidad del trabajo multiusuario debidamente compartimentado. Es decir, cada usuario está "protegido" en su espacio asignado dentro del Sistema. Por extensión esto también deriva en la seguridad en general, lo que hace que en Unix/Linux,sea menos fácil la propagación de virus y demás código malicioso. Para ver algunos atributos del archivo vnc.conf hacemos:
 
:La necesidad de establecer atributos a los archivos para su operativa, es particularmente intensa en Unix/Linux. De esto deriva la seguridad del Sistema y la posibilidad del trabajo multiusuario debidamente compartimentado. Es decir, cada usuario está "protegido" en su espacio asignado dentro del Sistema. Por extensión esto también deriva en la seguridad en general, lo que hace que en Unix/Linux,sea menos fácil la propagación de virus y demás código malicioso. Para ver algunos atributos del archivo vnc.conf hacemos:
Línea 110: Línea 149:
 
:Por último, el nombre del archivo, en este caso, '''vnc.conf'''.
 
:Por último, el nombre del archivo, en este caso, '''vnc.conf'''.
  
====Otros atributos especiales====
+
===Otros atributos especiales===
  
 
:el siguiente listado representa otro tipo de atributo de ficheros,aplicables en condiciones especiales, principalmnte a la hora de compartir permisos con usuarios de sistemas "muy poblados" en el que los privilegios de cada usuario o de cada grupo, necesitan especificaciones especiales.
 
:el siguiente listado representa otro tipo de atributo de ficheros,aplicables en condiciones especiales, principalmnte a la hora de compartir permisos con usuarios de sistemas "muy poblados" en el que los privilegios de cada usuario o de cada grupo, necesitan especificaciones especiales.
Línea 149: Línea 188:
 
   Z        El archivo está sucio</pre>
 
   Z        El archivo está sucio</pre>
  
 
+
==Permisos==
 
+
===Permisos===
+
 
+
 
+
 
+
+
  
 
:El acceso a los diferentes archivos en un sistema Unix/Linux, plantea un nivel de estructura avanzado, en el sentido que, la funcionalidad y principalmente la seguridad, a todos los niveles, es el principal objetivo del Sistema.
 
:El acceso a los diferentes archivos en un sistema Unix/Linux, plantea un nivel de estructura avanzado, en el sentido que, la funcionalidad y principalmente la seguridad, a todos los niveles, es el principal objetivo del Sistema.
Línea 218: Línea 251:
 
este fichero tendría activados los permisos de '''lectura escritura''' para el usuario, sólo '''lectura''' para el grupo y sólo '''lectura''' para otros.
 
este fichero tendría activados los permisos de '''lectura escritura''' para el usuario, sólo '''lectura''' para el grupo y sólo '''lectura''' para otros.
  
 +
====Nomenclatura Octal====
 
:Existe otra forma para nombrar  los permisos de manera mas sencilla, pero no por ello menos eficaz. Conocido como sistema OCTAL, se trata de convertir la representación binaria en octal, es decir, representación numérica en base 8.  
 
:Existe otra forma para nombrar  los permisos de manera mas sencilla, pero no por ello menos eficaz. Conocido como sistema OCTAL, se trata de convertir la representación binaria en octal, es decir, representación numérica en base 8.  
 
:Mas claramente:
 
:Mas claramente:
  
{|style="background:CornSilk;" border="0" cellspacing="6" cellpadding="2"  
+
{|style="background:CornSilk;" border="0" cellspacing="6" cellpadding="2" align="center"
 
|+'''''CONVERSION'''''
 
|+'''''CONVERSION'''''
 
!Binario!!Octal
 
!Binario!!Octal
 
|-
 
|-
|000
+
|align="center" |000
|0
+
|align="center" |0
 
|-
 
|-
|001
+
|align="center" |001
|1
+
|align="center" |1
 
|-
 
|-
|010
+
|align="center" |010
|2
+
|align="center" |2
 
|-
 
|-
|011
+
|align="center" |011
|3
+
|align="center" |3
 
|-
 
|-
|100
+
|align="center" |100
|4
+
|align="center" |4
 
|-
 
|-
|101
+
|align="center" |101
|5
+
|align="center" |5
 
|-
 
|-
|110
+
|align="center" |110
|6
+
|align="center" |6
 
|-
 
|-
|111
+
|align="center" |111
|7
+
|align="center" |7
 
|}
 
|}
  
 
 
::Como puede apreciarse en la tabla anterior, la nomenclatura octal, nos permite representar con sólo una cifra, la disposición de los permisos activados por medio de los bits correspondientes para cada grupo de tres bits, es decir usuario, grupo y otros.
+
:Como puede apreciarse en la tabla anterior, la nomenclatura octal, nos permite representar con sólo una cifra, la disposición de los permisos activados por medio de los bits correspondientes para cada grupo de tres bits, es decir usuario, grupo y otros.
::De esta forma el número 777 delante de un archivo, supone permisos totales para todos los grupos,.( u g o )
+
:De esta forma el número 777 delante de un archivo, supone permisos totales para todos los grupos,.( u g o )
 +
 
 +
:En la tabla siguiente, podemos ver la conversión completa entre los distintos tipos de nomenclaturas para la asignación de permisos.
 +
:La manipulación efectiva de los ficheros, requiere un conocimiento previo de estas caracteristicas, además de la posibilidad de asignar "permisos especiales" que veremos a continuación
  
  
Línea 263: Línea 300:
 
|-
 
|-
 
|align="center" |_  _  _
 
|align="center" |_  _  _
|000
+
|align="center" |000
|0
+
|align="center" |0
 
|align="left" |Todos los permisos desactivados
 
|align="left" |Todos los permisos desactivados
 
|-
 
|-
 
|align="center" |_  _  x
 
|align="center" |_  _  x
|001
+
|align="center" |001
|1
+
|align="center" |1
 
|Permiso de ejecución activado
 
|Permiso de ejecución activado
 
|-
 
|-
 
|align="center" |_  w  _
 
|align="center" |_  w  _
|010
+
|align="center" |010
|2
+
|align="center" |2
 
|Permiso de escritura
 
|Permiso de escritura
 
|-
 
|-
 
|align="center" |_  w  x
 
|align="center" |_  w  x
|011
+
|align="center" |011
|3
+
|align="center" |3
 
|Permisos de escritura y ejecución
 
|Permisos de escritura y ejecución
 
|-
 
|-
 
|align="center" |r  _  _
 
|align="center" |r  _  _
|100
+
|align="center" |100
|4
+
|align="center"|4
 
|Permiso sólo de lectura
 
|Permiso sólo de lectura
 
|-
 
|-
 
|align="center" |r  _  x
 
|align="center" |r  _  x
|101
+
|align="center" |101
|5
+
|align="center" |5
 
|Lectura y ejecución
 
|Lectura y ejecución
 
|-
 
|-
 
|align="center" |r  w  _
 
|align="center" |r  w  _
|110
+
|align="center" |110
|6
+
|align="center" |6
 
|Lectura y escritura
 
|Lectura y escritura
 
|-
 
|-
 
|align="center" |r  w  x
 
|align="center" |r  w  x
|111
+
|align="center" |111
|7
+
|align="center" |7
 
|Todos los permisos activados
 
|Todos los permisos activados
 
|}
 
|}
  
 
+
== Ver también ==
 
+
*[[Sistema de archivos]]
+
*[[Usuarios y grupos]]
Estoy en ello, sigo después
+
*[[Formatos de paquetes]]
 
+
'''En construcción. Seguirá con  Permisos, atributos especiales, Descripción de los directorios asociados a root.  Interioridades del sistema de archivos (Bloques lógicos, Volumenes lógicos, fragmentación interna y externa), Sistemas transacionales, Montaje y desmontaje. Configuración fstab, Umask, etc.
+
'''
+
 
+
+
 
+
  
  

Revisión de 17:52 16 ene 2008

Contenido

El Sistema de Archivos

¿Que es un archivo?

Para conocer las propiedades de un Sistema de Archivos, comencemos por definir que es un archivo:

Con frecuencia, se define a un archivo informático, como una entidad lógica formada por un conjunto de bytes, ubicados sobre un sistema de almacenamiento (temporal o permanente), que responde a las características de unicidad,ubicación y reglas de manipulación.
  • La propiedad de unicidad de un archivo, radica en que éste es en si mismo una entidad, con una asignación de espacio finito, susceptible de ser modificado internamente en tamaño y contenido
  • Su localización exacta, determina la existencia del mismo, incluso vacío de contenido, pero con límites de propiedad inherente al espacio físico asignado por las variables ortogonales en cuanto a su asentamiento en el soporte que lo contiene. Un fichero no puede existir sin esta cualidad.
  • Y unas reglas de manipulación. Es decir, tendrá un propietario, asignación de lecto_escritura y ejecución, compartibles/no compartibles, variables/ no variables, aspectos que podrán modificarse, de acuerdo con las reglas que puedan establecerse en la vida útil del archivo.

La función "vital" de un archivo es poder ser leído, y como tal debe de ser localizado lo mas fácilmente posible dentro de la unidad de soporte que lo contiene.

Esta unidad, que puede ser un disco duro, una cinta, un CD o cualquier unidad susceptible de almacenar información, necesita un Sistema de Ficheros, para organizar la información y tener acceso a ella de forma eficiente y rápida.

No entraremos aquí en los detalles de almacenamiento volátil, o sea en memoria de semiconductores como la memoria RAM, que mantiene la información mientras dure el flujo eléctrico. Dedicaremos un apartado para esta información.

Nos centraremos en el mas común, es decir el disco duro

La denominación archivo es equivalente a fichero.

Existen archivos especiales que representan a los dispositivos físicos, existen archivos directorios, para organizar otros archivos y los archivos simples, encargados de almacenar toda la información, incluso programas. El fácil hacerse a la idea de que existen infinidad de archivos simples.

Como definimos que toda la información que se escribe en el disco se considera un archivo, existen diferencias importantes en cuanto al contenido de los ficheros. Principalmente la que define a archivos de "texto" y los archivos binarios.

Los archivos de "texto" pueden contener documentos, memorandums, scripts, cartas, etc. y estarán escritos en código ASCII. (El código ASCII es el encargado de representar todos los caracteres del texto). Estos archivos podrán editarse y modificarse con un editor de texto tipo, vi, emacs, gedit, ..etc.

Los archivos binarios, por el contrario contienen datos no de texto, por ej: imágenes. No pueden verse con un editor. Estos archivos sólo tienen sentido para los programas que lo ejecutan. Por ej: Se escribe un programa en C, por lo tanto lo que se edita está en modo texto, pero, la máquina no puede entender este lenguaje, así que debe de traducirse a un lenguaje que la máquina pueda leer.

Es necesario un Compilador, o sea, un programa que convierta el modo texto a lenguaje máquina. El archivo resultante, (aquel que la máquina puede leer) se llama binario.

El programa que se queda en C, se llama Archivo fuente, o simplemente, fuente.
El programa que guarda los datos del programa en código máquina ( o sea binario), se llama ejecutable.

Mas técnicamente. Los archivos de cualquier índole se almacenan en la máquina en series de bits, o sea, en código binario ( valores 0 y 1 ó activado desactivado). Estos bits se agrupan en grupos de 8 para formar 1 byte. Así, el código ASCII contiene los datos para la representación de los caracteres. Por ej:

Para la letra " A " el byte formado por 0 1 0 0 0 0 0 0 , indica que para este carácter sólo está activado el bit 7 en el byte.
Para la letra " a ", que es un carácter diferente en Unix, los bits activados son otros ---> 0 1 1 0 0 0 0 1.

El código ASCII utiliza sólo 7 bits de los 8 del byte. El octavo, localizado en el extremo izquierdo siempre se configura en 0.

Los archivos binarios también almacenan datos en bytes, pero a diferencia de los de texto, utilizan los 8 bits.

Tipos de Archivos

La letra que precede a la descripción es el indicador, o sea identifica el tipo de archivo cuando hacemos un listado de ellos con el comando ls

Identificador Tipo de Archivo
_ Archivos sencillos
d Directorios
l Vínculos simbólicos(flexible, blandos)
c Dispositivos de caracteres
b Dispositivos de bloques
p Tuberías (pipe) con nombre (FIFO)
s Socket (conector para comunicaciones (TCP/IP)


A modo de ejemplo:

$ ls -ila udev
total 20
7897186 drwxr-xr-x   3 root root 4096 2006-08-06 01:20 .
7897089 drwxr-xr-x 128 root root 8192 2007-04-21 03:04 ..
7899187 drwxr-xr-x   2 root root 4096 2006-11-28 22:30 rules.d
7899188 -rw-r--r--   1 root root  226 2006-05-22 16:25 udev.conf

Los archivos sencillos

Se emplean para almacenar información y datos en dispositivos de almacenamiento secundario, que por regla general es el disco duro. (obviamente, también pueden ser almacenado en cintas, memorias..etc).
Un archivo sencillo puede contener desde un programa (Java, C++, C, Perl), como imágenes, textos, sonido, gráficos, etc. En Unix/Linux no existe diferencia a la hora de clasificar estos archivos por su contenido, para el núcleo, todos son iguales, sólo es un flujo de bytes. Otra cosa es el tratamiento que hacen de los mismos las aplicaciones. Estas sí se encargan de verificar la naturaleza de los archivos, a procesar y obrar en consecuencia al contenido de los mismos.Los nombres de los archivos pueden asignarse de manera arbitraria. El nombre asociado a un archivo sólo representa una función lógica, no de dependencia física. Sólo existen unas pequeñas restricciones:
  • nombre no mayor de 255 caracteres
  • no usar meta-caracteres del SHELL
  • evitar comenzar con un número
  • tener en cuenta que un nombre comenzado con un punto, significa un archivo oculto.
Los archivos en Unix/Linux no necesitan extensión, al ser ser tratados en principio sin formato predeterminado, aunque puede hacerse como recurso referencial, con una o mas extensiones que indiquen la naturaleza del contenido. Por ej: Las imágenes: .gif ; textos: .txt..etc. Aunque algunas aplicaciones necesiten de extensiones en los archivos, como algunos compiladores de C ( nombre_archivo.c), html -- para algunos navegadores web.

Los directorios

son archivos que contienen a su vez otros archivos que a veces también pueden ser otros directorios comunmente llamados subdirectorios. En Unix/Linux, los directorios tienen una forma determinada
número de i-nodo + nombre del directorio
El número i-nodo tiene 2 Bytes, siendo siempre un número entero.Representa el valor de un índice que opera dentro de una lista en el disco.Su propósito es facilitar la búsqueda de los archivos, ya que en la lista que forma, se almacenan características de los archivos representados, como tamaño, fecha de creación, bloque asignado, permisos, enlaces, pero no el nombre.
Físicamente, un archivo no se almacena de forma contínua en el dispositivo de almacenamiento, es decir, puede estar repartido en varios bloques, (fragmentación). A diferencia de Windows, Linux tiende a la continuidad del espacio físico en el reparto de los bloques de asignación. Debido a esto, es necesario la existencia de una estructura adicional que "reúna" los distintos fragmentos del archivo para ser leído.
Ésta es la función principal de la lista de i-nodos. En todos los directorios aparecen dos ficheros ocultos representados por " . " y " .. " El primero " . " se refiere al directorio actual y el segundo " .. " al directorio padre, es decir al directorio al que cuelga en orden de jerarquía del Sistema de Ficheros. Obviamente el directorio / (root) principal, carece de este fichero oculto.

Enlaces

Es un fichero cuya función es permitir enlaces a elementos del sistema de archivos desde cualquier punto de la jerarquía del mismo.Un enlace no es mas que un nombre que apunta a un determinado recurso del sistema de ficheros, físico o lógico.Dependiendo de su función los clasificamos en,
  • Fuertes o duros.Son aquellos enlaces que no se diferencian en nada del archivo original.
Debemos de entender que un fichero, es un conjunto de Bytes que ocupa una zona en algún dispositivo, y su nombre no es mas que un enlace fuerte a él. Es decir, un enlace fuerte es otro nombre para un mismo fichero, ya que apunta a un inodo específico.
Todos los enlaces fuertes que apuntan a un mismo archivo, mantienen su estructura de permisos, propiedad, etc. Si creamos varios enlaces fuertes sobre un fichero, tendríamos varias copias lógicas del mismo, pero sólo existiría una copia física del mismo, ya que todos apuntan a zona "física" que es el espacio que ocupa el fichero original.Esto da como resultado que un fichero no desaparece hasta que no se borran todos los enlaces que apuntan a él. Los enlaces fuertes a un fichero se almacenan en la estructura del inodo que lo representa.
No se pueden crear enlaces fuertes a directorios ni a ficheros que estén en una partición diferente. A diferencia de los enlaces simbólicos, los enlaces fuertes no se rompen cuando se mueve uno de los archivos a otra ubicación.Con los enlaces fuertes, se mantiene un contador de enlaces en el inodo de cada archivo, de forma que, cuando el contador cae a " 0 ", se borra el inodo y los bloques de datos son liberados para su nuevo uso.De esta forma, una vez que un archivo posee un enlace fuerte, cualquier "copia" que se borre, no afecta a las demás que quedarán intactas. Por regla general, los archivos tienen un único enlace. Los directorios tendrán tantos enlaces como subdirectorios tenga.
  • Débiles o simbólicos.Son enlaces que apuntan al nombre del fichero, no a su contenido.
En el caso de borrado de un fichero original ( y lógicamente todos los enlaces fuertes asociados a él), los enlaces simbólicos quedan inconsistentes o perdidos.
Estos enlaces son articulados en Linux como ficheros independientes, conteniendo una referencia, el inodo, la cual apunta a la ubicación real del archivo. Estos enlaces usan un path_name (ruta) que puede ser absoluta, cuando comienza en " / " o relativa de acuerdo con la ubicación del enlace. Un enlace simbólico, no puede moverse una vez creado porque se romperá, a diferencia de los enlaces fuertes.Otra carcterística es que carecen de permisos o estado por su cuenta. En su defecto usan los permisos del fichero al que apuntan.
En si mismo, se considera que el enlace propiamente dicho tiene todos los permisos activados.Los cantidad bytes ocupados por el enlace es igual a la longitud de la ruta que contiene, mas el carácter nulo del final.

Dispositivos de caracteres y bloques

Son archivos especiales cuya principal función es la comunicación con un dispositivo de hardware. De acuerdo con la naturaleza del hardware, se denominan de caracteres, (consola, puertos de serie etc) o de bloques, (discos, memorias, ..etc).Estos archivos pueden entenderse como puntos de unión entre el núcleo y los controladores (drivers) de dispositivos como pueden ser /dev/tty0, /dev/null, /dev/hda

Tuberías con nombre

Archivos localizados para la comunicación entre procesos, son una via de intercambio de datos. Se gestionan mediante el método FIFO (First In-First Out), el primer byte introducido por el emisor será el primero en ser extraído por el receptor. Su comunicación es unidireccional.Este tipo de fichero es localizado mediante una ruta, como cualquier fichero normal. Puede ser borrado como cualquier archivo.
Por supuesto puede verse con el comando ls.Otra de sus características es que pueden intercomunicar procesos de especies diferentes, es decir, pueden comunicar y sincronizar procesos de la misma máquina, sin necesidad de que lo hereden por medio de la llamada fork.

Socket

son archivos para comunicación entre procesos locales. Se pueden ver como archivos, pero no pueden ser leídos y escritos salvo por los procesos directamente relacionados con la comunicación de la que son objeto.

Atributos de los archivos

La necesidad de establecer atributos a los archivos para su operativa, es particularmente intensa en Unix/Linux. De esto deriva la seguridad del Sistema y la posibilidad del trabajo multiusuario debidamente compartimentado. Es decir, cada usuario está "protegido" en su espacio asignado dentro del Sistema. Por extensión esto también deriva en la seguridad en general, lo que hace que en Unix/Linux,sea menos fácil la propagación de virus y demás código malicioso. Para ver algunos atributos del archivo vnc.conf hacemos:
$ ls -ila vnc.conf
7897276 -rw-r--r-- 1 root root 4622 2006-02-20 13:05 vnc.conf
El primer número corresponde al i-nodo. Se muestra en el listado porque hemos usado la opción "i" (ila, la "l" y la "a" corresponden a las otras dos opciones).
El segundo carácter es el bit asignado para el tipo de archivo, en este caso un guión ( - ), que nos dice que se trata de un archivo simple. Si en lugar de un guión, apareciera una " d ", sabríamos que se trata de un directorio. Y así con todas las definiciones de archivos que hemos visto en el apartado tipos de archivos. Esta asignación evita tener que asignarle una extensión para su clasificación, por lo menos para la máquina. Otra cosa es que, el creador del archivo quiera ponerle una extensión para su comodidad, pero no será mas que parte del nombre del archivo y nada tendrá que ver con su clasificación.
La secuencia que sigue, rw-r--r--, es la asignación de permisos para la manipulación del fichero por parte del usuario, el grupo, (al que pertence el usuario) y otros. Esto lo veremos detalladamnte en el apartado Permisos.
El " 1 " que aparece seguidamente, hace referencia a que este archivo tiene un enlace.
Le sigue el nombre del propietario, root en este caso, y el grupo al que pertenece el usuario, en este caso también root
4622 es el tamaño del fichero en bytes, seguido de la fecha de creación y la hora.
Por último, el nombre del archivo, en este caso, vnc.conf.

Otros atributos especiales

el siguiente listado representa otro tipo de atributo de ficheros,aplicables en condiciones especiales, principalmnte a la hora de compartir permisos con usuarios de sistemas "muy poblados" en el que los privilegios de cada usuario o de cada grupo, necesitan especificaciones especiales.
Para dar cabido a éstos, se habilitan bits especiales dentro del rango de permisos del fichero conocidos conocidos como SETUID y SETGID. Corrientemente, el primero se nombra como SUID. El nombre está formado por la abreviatura de Set User ID y Set Group ID.
Su función tiene como objetivo proporcionar a los usuarios del sistema la posibilidad de ejecutar binarios con privilegios superiores a los normales, por regla general con función temporal de acuerdo a tareas concretas.
Para hacernos una idea de la potencia de esta activación de los bits de permisos, los enumeraremos en la siguiente tabla,
  A         Cuando se accede al archivo, la fecha del mismo no se modifica

  a         Sólo se puede agregar contenido al archivo

  D         Se aplica al Directorio, los cambios efectuados en él, se aplican sincrónicamente.

  d         La herramienta  dump para backup omitirá el archivo.

  E         Muestra que un archivo comprimido, tiene un error de compresión

  I         Se usa en directorios para indicar que estos están indexados con en árbol de hash.

  i         El archivo queda sin modificarse

  j         Los datos se escriben primero al journal del sistema ext3 antes de escribirse en el propio archivo 

  s         Cuando se borre el archivo, se llenará con ceros

  S         Igual que D pero para archivos simples

  T         Sirve para considerar a un directorio como si estuviera en el primer nivel de directorios.

  t         Hace que el archivo no posea un fragmento al final combinado con otro archivo.

  u         Cuando se elimina un archivo se guarda el contenido del mismo

  X         El contenido crudo se un archivo comprimido se puede acceder directamente.

  Z         El archivo está sucio

Permisos

El acceso a los diferentes archivos en un sistema Unix/Linux, plantea un nivel de estructura avanzado, en el sentido que, la funcionalidad y principalmente la seguridad, a todos los niveles, es el principal objetivo del Sistema.
Al ser, primordialmente, un sistema multiusuario, la integridad de los datos así como la debida reserva sobre las acciones permitidas a cada uno de los usuarios dentro del Sistema, deben de estar reguladas de tal forma que la comunicación con el núcleo, sea fluída.
Asimismo, la comunicación con el exterior, en gran medida estará protegida por esta estructura, tanto por lo que sale como por lo que entra al Sistema. Esta estructuración, digamos jerarquía, es una de las principales consecuencias de que sea complicado que se pueda escribir codigo malicioso sobre el Sistema. Por supuesto que no es infalible y como veremos mas adelante, hemos de tener cuidado con determinadas asignaciones, que permitirían importantes agujeros en la seguridad.
La sistema de permisos en Unix/linux tiene muchos elementos y funcionalidades, existiendo varias formas de implementarlos como veremos a continuación.
Unix establece para cada archivo una asignación combinada entre el propietario (usuario) del fichero, el grupo al que pertence el usuario y el resto de usuarios.

Esto se representa para su identificación con la convención

u ---> usuario (propietario)
g ---> grupo al que pertence el usuario
o ---> otros (others) el resto

Se utiliza " a " de (all) para designar todos los usuarios.

Nota. Siempre que se liste un fichero, la asignación de permisos aparecerá en este orden ( u g o ).

El Sistema de ficheros asigna tres bits para cada elemento de esta representación, por lo que en total tendremos nueve (9) bits.
Así:
u - - -
g - - -
o - - -
Mas adelante veremos que existe la posibilidad de agregar un bit a cada grupo para las asignaciones de permisos especiales por ejemplo Setuid, Setgid, etc.
Este grupo de tres bits para cada elemento, se utiliza para implementar los permisos de lectura, escritura y ejecución, cuya representación nemotécnica es:
        r --> read     (lectura)      Si un usuario tiene otorgado este permiso podrá, - si se trata de un directorio, listar su contenido
                                                                                       - en el caso de un archivo simple, leer su contenido 
        
        w --> write    (escritura)    Este permiso activado permite modificar el archivo que lo posee,
                                      en caso de ser un directorio,se podrán modificar y borrar ficheros contenidos en su interior

        x --> eXecute  (ejecución)    Teniendo este permiso activado, podrá ejectuar los ficheros desde la línea de comandos.
                                      En caso de ser un directorio, el usuario que lo posea
                                      tendrá acceso a las funciones de lectura- escritura
Así. si hacemos un listado con el comando ls -l de cualquier archivo, por ejemplo del archivo pares.py, obtendremos:
$ ls -l pares.py
-rw-r--r-- 1 gustavo gustavo 130 2007-02-17 00:53 pares.py

vemos que, de acuerdo con lo establecido anteriormente, este archivo tiene permiso de lectura-escritura (rw) para el propietario ( u ), sólo permiso de lectura (r) para el grupo ( g ) y sólo lectura (r) para el resto ( o ).

Nota: no confundir el primer guión que aparece en el listado, éste no pertenece a los bits asignados a los permisos sino al atributo del fichero que lo define como archivo simple.

Profundizando un poco vemos que, cada uno de los bits asignados tiene la opción de estar activado o no (o sea, valor 0 y 1 solamente). Por lo tanto, podríamos representar todo esto de forma binaria,
	u  ---> 1 0 0 
   	g  ---> 0 0 0
	o  ---> 0 0 0

sólo está activado el bit correspondiente a lectura, por lo tanto este fichero tendría asignado solamente para este usuario el permiso de lectura. Ningún permiso para el resto de los usuarios

Si fuese,

	u  ---> 1 1 0
  	g  ---> 1 0 0
	o  ---> 1 0 0

este fichero tendría activados los permisos de lectura escritura para el usuario, sólo lectura para el grupo y sólo lectura para otros.

Nomenclatura Octal

Existe otra forma para nombrar los permisos de manera mas sencilla, pero no por ello menos eficaz. Conocido como sistema OCTAL, se trata de convertir la representación binaria en octal, es decir, representación numérica en base 8.
Mas claramente:
CONVERSION
Binario Octal
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7


Como puede apreciarse en la tabla anterior, la nomenclatura octal, nos permite representar con sólo una cifra, la disposición de los permisos activados por medio de los bits correspondientes para cada grupo de tres bits, es decir usuario, grupo y otros.
De esta forma el número 777 delante de un archivo, supone permisos totales para todos los grupos,.( u g o )
En la tabla siguiente, podemos ver la conversión completa entre los distintos tipos de nomenclaturas para la asignación de permisos.
La manipulación efectiva de los ficheros, requiere un conocimiento previo de estas caracteristicas, además de la posibilidad de asignar "permisos especiales" que veremos a continuación



COMBINATORIA DE PERMISOS
NEMOTECNICO BINARIO OCTAL DESCRIPCION
_ _ _ 000 0 Todos los permisos desactivados
_ _ x 001 1 Permiso de ejecución activado
_ w _ 010 2 Permiso de escritura
_ w x 011 3 Permisos de escritura y ejecución
r _ _ 100 4 Permiso sólo de lectura
r _ x 101 5 Lectura y ejecución
r w _ 110 6 Lectura y escritura
r w x 111 7 Todos los permisos activados

Ver también

Herramientas personales