Aprende GNU/Linux 6

Gestión de ficheros en Linux para dummies

Un sistema de ficheros, llamado comúnmente File system, determina la organización de los datos en un soporte de almacenamiento, y por lo tanto como el sistema operativo gestiona y organiza los ficheros. En este articulo pretendemos hablar sobre la gestión de ficheros en los sistemas GNU/Linux, tipos de fichero, la nomenclatura de los ficheros, rutas, permisos de acceso, etc. Conceptos básicos que todo el mundo debería conocer, no solamente la gente que pretende profundizar. Ademas vamos a ofrecer una lista de comandos básicos que nos van a ayudar a movernos por la jerarquía de los ficheros y gestionarla.

En Linux todo es un fichero

La gestión de ficheros en Linux

Linux es, como todo Unix, un sistema operativo completamente orientado a ficheros. Esto quiere decir que todo ( o casi todo ) se representa con un fichero, tanto los datos ( ficheros de datos de cualquier tipo, como una canción o un programa ) como los periféricos ( ratones, teclado, tarjeta de sonido, etc) o incluso los medios de comunicación ( sockets, tuberías, etc.). Debido a este motivo se podría decir que el sistema de ficheros es el corazón de los sistema Unix, pero evidentemente no todos los ficheros tienen las mismas propiedades.

 

Los tipos de ficheros

En Linux existen tres tipos de ficheros: los directorios o carpetas, los ficheros ordinarios y los especiales.

Las carpetas o directorios

Las carpetas o directorios permiten crear una jerarquía en el disco. Dentro de estas carpetas podemos contener ficheros ordinarios, especiales y otros directorios de manera recursiva.

Un directorio no es mas que un fichero que contiene una lista de los ficheros presentes en este directorio, ni mas ni menos.

Los ficheros ordinarios

También llamados ficheros regulares ( ordinary files ), son los ficheros de toda la vida que contienen datos. Pueden contener cualquier tipo de dato :

Texto, Audio, Imagen, Scripts, Librerías de programación, etc.

Por defecto, nada permite diferenciar unos de otros, Linux no conoce la noción de extensión de fichero como componente interno de la estructura del sistema de ficheros, por lo que la extensión no tiene importancia y se considera simplemente parte del nombre.

 Los ficheros especiales

Existen varios tipos de ficheros especiales pero principalmente sirven de interfaz para los diversos periféricos. Cuando se accede en modo lectura o escritura a estos ficheros se redirigen hacia el periférico ( pasando por el driver asociado si existe ) con la misión de controlarlos.

Ejem : Los drivers de periféricos están en la carpeta /dev, estos drivers son ficheros especiales.

La nomenclatura de los ficheros

Es necesario seguir unas reglas a la hora de poner nombre a los ficheros, validas para los tres tipos de ficheros. Actualmente se puede llegar hasta 255 caracteres ( extensión incluida ) y digo actualmente por que en los sistemas Unix antiguos solamente se podían alcanzar los 14 caracteres. También es muy importante tener en cuenta que Linux distingue entre los nombres de ficheros con mayúsculas y minúsculas. De forma que el nombre del fichero prueba es diferente al de Prueba.

Lla mayoría de los caracteres ( cifras, letras, ciertos signos, caracteres acentuados ) son aceptados, incluyendo el espacio. A pesar de esto es necesario evitar ciertos caracteres reservados en la shell como son : & ; () ~ / \ ` ? –(al principio del nombre) <espacio>.

Las rutas

Las rutas permiten definir una ubicación en el sistema de ficheros. Es la lista de directorios y sub-directorios utilizados para acceder a un sitio determinado de la estructura hasta la posición deseada ( directorio, fichero ).

El nombre de la ruta o path de un fichero es la concatenación, desde la raíz, de todos los directorios que se deben cruzar para acceder a el, que están separados cada uno por el carácter /.

Ejem : /home/usuario1/Documentos/Cuentas.odt

A esto se le llama ruta absoluta ( ruta desde el directorio root ).

Pero también existen las rutas relativas, estas se basan en tu posición actual en el sistema de ficheros. Puedes acceder a la posición que deseas sin tener que marcar la ruta completa precisando la ruta mas corta en relación a tu posición actual dentro de la estructura.

Para las rutas relativas podemos usar tanto el . ( que indica el directorio actual en el que estamos ) como .. ( que indica el directorio superior ).

Ejem : ./Documentos/Música ( Es una ruta relativa al directorio Música dentro del Directorio Documentos que se encuentra en nuestra posición actual)

La virguilla

El símbolo ~ es interpretado por el bash como un alias del directorio personal. De esta forma podemos crear rutas relativas basadas en este carácter. La virguilla no puede ir precedida por ningún carácter. De forma que ~/Documentos es correcto pero /~/Documentos no.

Los permisos de acceso

Linux tiene un sistema de permisos que tiene como cometido asegurar la integridad y el acceso a datos. A cada fichero se le asignan unos privilegios que son los propios, así como autorizaciones de acceso individuales. Cuando se realiza un acceso a un fichero el sistema comprueba si este acceso es autorizado.

A la hora de crear un nuevo usuario, el sistema le asigna un UID ( User Identification ) único. Todos los usuarios están definidos en el fichero passwd de la carpeta /etc. De la misma manera, cada usuario es integrado en, al menos, un grupo. Todos los grupos tienen un identificador único, el GID ( Group Identification ) y están definidos en el archivo group de la carpeta /etc.

El comando id nos muestra esta información por pantalla, tanto los UID como los GID
El comando id

Se asignan un UID y un GID a cada fichero ( a su inodo, del que hablaremos en otro articulo ) que define su propietario y su grupo con privilegios. El usuario asigna permisos al propietario, al grupo con privilegios y al resto de los usuario.

El sistema sigue el siguiente proceso para comprobar que un usuario tiene privilegios sobre el fichero al que intenta acceder.

  1. Compara el UID del usuario con el del fichero. Si es el mismo el usuario es propietario
  2. Si los UID son diferentes, el sistema comprueba si el GID del usuario es el mismo al del fichero, si es el caso, el usuario pertenece al grupo con privilegios del fichero.
  3. Si no se dan ninguno de estos dos casos el usuario ni es el propietario ni pertenece a un grupo con derechos.

Tenemos diferentes tipos de permisos, no es o el todo o nada, de forma que un usuario puede que tenga permisos para leer un archivo pero no pueda modificarlo. La siguiente tabla muestra los diferentes permisos junto a su significado.

Tabla de los diferentes permisos de Linux 

Tratando lo básico
Se puede hablar sobre muchos mas aspectos dentro del tema de los permisos, pero en esta ocasión nos vamos a conformar con lo mas básico, en futuros artículos profundizaremos mas en este aspecto.

La jerarquía de ficheros

Linux utiliza un sistema de ficheros jerárquico, teniendo en cuenta esto es bastante recomendable conocer los diferentes directorios que se encuentran en nuestro sistema. Los siguientes directorios se encuentran en la mayoría de las distribuciones Linux, pero pueden existir pequeñas diferencias.

Jerárquia del sistema de ficheros Linux/mnt, /media : son directorios para montar disquettes, CD-ROMs y otros sistemas de archivos o dispositivos ( El actual es el media, mnt existe por compatibilidad).

/proc: contiene los archivos que reciben o envían información al núcleo.

/bin: contiene ficheros de comandos ejecutables utilizables por todos los usuarios.

/sbin: contiene ejecutables de uso exclusivo por el root. Son los necesarios para arrancar y montar el directorio /usr.

/usr: Programas accesibles a usuarios finales y datos de estos programas que no requieren ser modificados (datos de sólo lectura).

/etc: Archivos de configuración de diversos programas y servicios.

/lib: Librerías indispensables y módulos (especialmente requeridas durante el arranque del sistema).

/dev: Ficheros especiales de los dispositivos conectados (o que podrían conectarse) al ordenador.

/home: Carpetas de usuario

/tmp: Archivos temporales creados por algunos programas, que serán borrados por el sistema operativo durante el arranque.

/root: Carpeta de usuario root

/boot: contiene el núcleo (kernel) e información indispensable para el arranque del sistema.

/var: en este directorio los programas que lo requieran pueden mantener archivos que deban modificarse frecuentemente.

/opt: es un punto de montaje desde el que se instalan los paquetes de aplicación adicionales. Podemos usarla para instalar aplicaciones que no vienen en los repositorios. 

Comandos de gestión de ficheros y directorios

Hoy en día toda la gestión de ficheros se puede hacer mediante interfaz gráfica, aun así la linea de comandos puede llegar a ser muy potente y productiva, por esto mismo os dejo los comandos básicos que nos van a ayudar con este cometido.

Mostrar ruta completa >pwd

Nos muestra la ruta completa del directorio actual.

Contenido del directorio actual >ls

El comando ls nos mostrara el contenido del directorio actual.

Movernos por los directorios >cd

El comando cd sirve para movernos de directorio ( changue directory ).

>cd Documentos  (esto nos situara en la carpeta Documentos).

>cd /etc/systemd/system/ (de esta manera nos situaremos en esta ubicación directamente.)

>cd ..  (subiremos un nivel. Por ejemplo si estamos en home/Documentos y hacemos cd .. nos situaremos en home)

>cd ( sin nada nos llevara a la carpeta de usuario.)

Crear directorios >mkdir

El comando mkdir ( make directory ) nos va permitir crear uno o varios directorios. También podemos crear una estructura completa.

>mkdir dir1 ( creara una carpeta dir1 en la posición actual )

>mkdir -p dir1/dir2 ( creara una carpeta dir2 dentro de otra carpeta dir1 en la situación actual en el sistema de ficheros )

Borrar directorios >rmdir

El comando rmdir ( remove directory ) remueve uno o varios directorios pero no puede remover estructuras. Funciona de la misma manera que mkdir pero sin este detalle de las estructuras.

 Copiar ficheros >cp

El comando cp ( copy ) nos permite copiar uno o varios ficheros.

>cp fichero1 fichero2 ( este comando ara una copia de fichero1 y lo guardara en fichero2)

 Mover o cambiar de nombre a ficheros >mv

El comando mv ( move ) permite mover y/o renombrar un fichero.

>mv fich1 hola/fich1 ( movemos el fichero fich1 a la carpeta hola ).

>mv fich1 fich1.doc ( renombramos el fichero fich1 a fich1.doc ).

 Suprimir ficheros y estructuras >rm

El comando rm ( remove ) eliminara un fichero o varios. También podemos eliminar estructuras. Tenemos que tener en cuenta que el borrado sera definitivo.

>rm fich1 ( Eliminamos fich1 )

>rm -r hola ( suprime la carpeta hola y todo el contenido de esta, tanto ficheros como directorios )

>rm -r dir1/dir2 ( Elimina la estructura dir1/dir2 )

Proximamente
Próximamente vamos a escribir un articulo sobre los sistemas de ficheros en Linux. Los sistemas que existen, conceptos importantes como los inodos, los bloques, etc., como hacer montajes de sistemas y otros aspectos importantes de gestión de los sistemas de ficheros.

Sobre el autor / 

AsierPH

Entusiasta de las tecnologías libres y fundador de OvToaster.com | “Las obras de conocimiento deben ser libres, no hay excusas para que no sea así“

Articulos relacionados

6 comentarios

  1. Dheil 21 Abril, 2014 at 12:02 am -  Responder

    Muy interesante y sencillo. Bien explicado.
    Ánimo y muchas gracias 🙂

    • AsierPH 21 Abril, 2014 at 1:44 pm -  Responder

      Buenas Dheil, me alegro de que te guste 🙂

  2. pelacables 5 Marzo, 2014 at 9:36 am -  Responder

    Carpeta, carptea…. la carpeta es la represetación, en un entorno gráfico, de un directorio.
    Cuanto daño ha hecho Windows.

    • AsierPH 5 Marzo, 2014 at 10:02 am -  Responder

      No te falta razón, pero se pueden utilizar como sinónimo y además para mucha gente que viene de Windows y esta interesada en aprender es mas entendible y lo asocian mejor al concepto de directorio.
      Aun así estoy muy de acuerdo contigo, Microsoft a utilizado durante muchos años su influencia para establecer ciertos términos de sus sistemas. Claro ejemplo es el botón que todos los teclados incluyen con el logotipo de su SO…

  3. Cantim 4 Marzo, 2014 at 7:05 pm -  Responder

    Buena introducción al sistema de archivos!

    • AsierPH 4 Marzo, 2014 at 7:06 pm -  Responder

      Muchas gracias! Poco a poco iremos sacando mas articulos y profundizando mas en el tema 🙂

Deja tu comentario

Tu correo no sera publicado. Los campos requeridos están marcados *