En este artículo veremos de forma detallada el sistema de ficheros en Linux y como se distribuyen estos para hacer funcionar este sistema operativo de código libre. Una de las principales diferencias que implementa Linux frente a otros sistemas operativos, es el sistema de ficheros y para llegar a ser buenos usuarios y utilizar de forma correcta el sistema, necesitaremos ver sus características fundamentales.
El sistema de ficheros, particiones, así como sus permisos son parte fundamental de la estructura de un sistema operativo, y no es algo distinto en Linux. Repasaremos de forma concisa estas características para conocer de forma más profunda el funcionamiento de ellos.
Sistema de particiones
Comenzamos por supuesto, por la estructura básica en la que se sostiene el sistema, esta no es otra que el sistema de particiones y el formato de ellas. A diferencia de Windows, Linux no maneja las particiones mediante la asignación de letras para cada unidad, y esto es algo que siempre debemos tener presente.
En este caso tenemos siempre particiones primarias, en donde se instala el sistema operativo, se almacenan ficheros, etc, y particiones lógicas que se utilizan por ejemplo para la memoria virtual. Una agrupación de particiones lógica forma una partición extendida.
Nomenclatura de particiones en Linux
Estas particiones y unidades se nombran de una forma distinta respecto de Windows, sin letras y en forma de directorios. Dependiendo de la arquitectura del disco duro que utilicemos podremos tener varias nomenclaturas para ellas:
Básicamente podemos identificar que las interfaces SATA llevan como nombre sdxX y que las unidades IDE llevan como nombre hdxX. Por lo demás la nomenclatura es la misma. Las unidades de almacenamiento SSD y USB también se llamarán como las unidades SATA.
Tipos de sistemas de ficheros para particiones Linux
Sabiendo cómo se nombran las particiones, vamos a ver qué sistema de ficheros utilizan estas para almacenar todos los datos del sistema. Sabremos ya que en Windows son de tipo ntfs.
Además del propio sistema de ficheros que utiliza Linux para instalarse, también es compatible con el de otros sistemas como Windows o MAC con el objetivo de facilitar el intercambio de información entre ellos. Será necesario instalar algún que otro paquete extra para añadir esta funcionalidad, concretamente ntfs-3g aunque, en el caso de Ubuntu, ya está disponible de forma nativa ésta.
- ext: del inglés (extended file system) es el sistema de ficheros transaccional nativo para sistemas operativos Linux, sea cual sea su distribución. Dispone de distintas evoluciones que hace de este sistema fichero, uno de los mejores jamás creados.
ext2: con este sistema se mejoran las prestaciones de la primera versión, soportando ficheros de hasta 2 TB de tamaño y particiones de hasta 4 TB. El tamaño máximo del volumen puede ser de 16 TB. - ext3: en este caso tendremos soporte para ficheros de 2 TB y volúmenes de hasta 32 TB.
- ext4: es la versión actual de este sistema, en el que se soportan ficheros de hasta 16 TB y volúmenes de hasta 1000 PB. Además, la gestión de energía y optimización de acceso y escritura también está mejorado de forma considerable.
Además del sistema de fichero nativo, soporta otro tipo de sistema de ficheros para interactuar con ficheros almacenamos en ellos:
- msdos: podremos montar unidades con sistema de ficheros FAT16 propios de MS-DOS.
- vfat: o FAT32 para la compatibilidad con sistemas operativos Windows 9x o superiores, y sistemas de archivos propios de unidades de almacenamiento USB.
- ntfs: sistema de ficheros que introdujo Microsoft a partir de los sistemas Windows 2000 y XP, en funcionamiento hasta día de hoy. Mediante el paquete nfts-3g podremos leer, escribir y ejecutar ficheros de esta partición.
- iso9660: sistema de ficheros que utilizan los CD-ROM.
- hfs y hfs+: sistema a de ficheros propio de MAC OSX.
Montaje y desmontaje de una partición
En Linux, todos los elementos se tratan como si de ficheros y directorios se tratasen, y esto también incluye los volúmenes y particiones. Para poder utilizar un sistema de ficheros que no sea el propio en donde está instalado el sistema, necesitaremos montarlo previamente. Para ello, cada partición se enlaza mediante la operación de montaje con otra estructura de directorios de la que cuelga, como si de una carpeta se tratara. Actualmente, no es necesario utilizar el terminar para montar particiones típicas como las de Windows o las unidades de almacenamiento extraíble. Eso sí, si tenemos una versión server de Linux, sí que necesitaremos hacer esto de forma manual. Además, forma parte del funcionamiento más básico del sistema y debemos de conocerlo.
Organización de directorios en Linux
La organización de directorios de Linux se lleva a cabo mediante una jerarquía establecida mediante el FHS (Filesystem Hierarchy Estándar) en el que se definen la distribución y nombres de ficheros y directorios de Linux.
La estructura de directorios y ficheros de Linux se organiza en forma de árbol invertido, es decir, desde un directorio principal denominado “/” o directorio raíz, cuelgan absolutamente todos los demás, incluso las particiones cuando son montadas. Los principales directorios que cuelgan de raíz son:
- /bin: contiene los comandos básicos del sistema y que tienen permisos de ejecución para todos los usuarios del sistema (la mayoría de ellos).
- /boot: Contiene los comandos de arranque del sistema como el kernel. En nuestra máquina, podremos tener instalados varios kernels y arrancar del que nosotros queramos, algo impensable en un sistema Windows. En este directorio también se encuentra el cargador de arranque grub. Cuando actualizamos un sistema Linux a un nuevo kernel, se creará una nueva entrada en el grub para arrancar desde el nuevo o desde el antiguo.
- /dev: contiene los archivos especiales para los dispositivos hardware de nuestro equipo. Además de las unidades de almacenamiento.
- /etc: directorio que almacena todos los ficheros de configuración del sistema. Todos los usuarios pueden ver los ficheros, pero solo el root puede modificarlos.
- /home: en este directorio se almacenan todos los directorios de trabajo de los usuarios creados en el sistema. El funcionamiento es similar a “mis documentos” en Windows.
- /lib: directorio en donde se almacenan las librerías básicas para trabajar en el sistema.
- /media: este directorio está destinado al montaje y desmontaje de las unidades de almacenamiento como particiones, USB y CD-ROM. Es opcional, y además en según qué distribución tendrá un nombre distinto, por ejemplo /mnt.
- /sbin: comandos que solamente puede usar el root, para la administración del sistema.
- /proc: lugar en donde se almacenan de forma dinámica las listas de procesos que se ejecutan en el sistema y las estructuras de datos del sistema.
- /root: directorio especial del súper usuario de Linux, por supuesto, solamente el root podrá escribir dentro de este directorio.
- /tmp: directorio exclusivamente destinado a la información temporal. Podremos incluso crear una partición exclusiva para /tmp.
- /usr: directorio en donde se almacenan los programas que nosotros instalamos, y que no forman parte del sistema operativo básico.
- /var: directorio que almacena ficheros de datos como log del sistema, datos administrativos, etc.
Gestión de permisos de los ficheros y directorios de Linux
En Linux, cada fichero tiene un propietario, que será casi siempre, el usuario que lo creó. Además, este usuario pertenecerá a un grupo determinado. Nosotros podremos modificar tanto usuarios como grupos cuando queramos, y añadir o borrar los que creamos convenientes.
Visita este tutorial para ver cómo gestionar usuarios y grupos en Linux
Básicamente el sistema asigna permisos sobre un fichero o directorio atendiendo a tres categorías de usuarios distintas:
- Propietario del fichero: primer grupo de letras
- Grupo de pertenencia del usuario: segundo grupo de letras
- Resto de usuarios: tercer grupo de letras
En cada grupo de letras que hemos comentado, está formada por tres caracteres que en los que podrán distinguiste:
- r: permiso de lectura
- w: permiso de escritura
- x: permiso de ejecución
- -: permiso denegado para la posición en la que esté el carácter.
Ver permisos de ficheros y directorios en Linux
Veámoslo en un par de ejemplos, para ello tendremos que utilizar el comando ls seguido de la opción -l para ver los permisos:
ls -l Fichero.odt -rw-rw-r- - 1 ayudalinux ayudalinux 8123 dic 30 17:56 Fichero.odt
Vemos que al principio se muestran estos tres grupos de caracteres, comenzando por la izquierda:
- -: el primer guion nos indicará si es un fichero (-) o un directorio (d)
- rw-: el propietario “ayudalinux” tiene permisos de escritura y lectura. Al no ser un programa, no existirán permisos de ejecución.
- rw-: el grupo de usuarios que pertenezcan a “ayudalinux” tienen permisos de lectura y escritura sobre el fichero.
- r- -: otro usuario distinto solamente tendrá permisos de lectura sobre el fichero. Excepto el root que puede hacer lo que quiera.
ls -l drwxr-xr-x 6 ayudalinux ayudalinux 4096 dic 30 17:56 Descargas
En este caso tenemos un directorio, denotado con el carácter “d” al principio de la cadena de permisos. Para el caso de los directorios, los permisos significan lo siguiente:
- rwx: el propietario del directorio podrá leer el contenido de éste, además podrá escribir dentro de directorio (w) y también entrar dentro (x).
- r-x: los usuarios que pertenezcan al grupo “ayudalinux” podrán, leer y entrar en el directorio, pero no escribir.
- r-x: Lo mismo, en este caso para los usuarios que no pertenezcan al grupo ni sean propietarios.
Los permisos de un fichero estarán condicionados por el directorio que los contengan.
Modificar permisos de un fichero en Linux
Para modificar los permisos de un fichero o directorio, tendremos que hacer uso del comando “chmod”. Este comando asigna los permisos mediante una notación octal para referirse a los tres grupos de permisos de cada elemento. Dispone también de otra llamada notación nemónica, pero con la primera nos basta para hacerlo todo.
chmod <permisos> fichero
Solamente el propietario del fichero o directorio y el root podrán cambiarle los permisos al elemento. Vamos a ver cómo utilizar la notación de permisos para chmod:
Realmente es muy intuitivo y sencillo de utilizar.
Vamos a verlo con un ejemplo cambiándole los permisos al fichero que antes hemos creado:
chmod 400 Fichero.odt -r- - - - - - - - 1 ayudalinux ayudalinux 8123 dic 30 17:56 Fichero.odt
Solamente tendremos permisos de lectura para el propietario, si ahora abrimos el fichero para editarlo, no podremos hacerlo, aunque seamos el propietario de él.
chmod 777 Fichero.odt -rwxrwxrwx 1 ayudalinux ayudalinux 8123 dic 30 17:56 Fichero.odt
Ahora, por el contrario, absolutamente todo el mundo podrá leer y editar este fichero.
Cambiar de usuario un fichero o directorio en Linux
Para finalizar, vamos a ver cómo cambiar el propietario de un fichero o directorio. Para hacer esto utilizaremos los comandos “chown “ y “chgrp”. Como hemos visto en el apartado anterior, cada elemento tendrá un usuario propietario y el grupo al que pertenece éste. Mediante estos comandos podremos modificar estos usuarios para cambiar de manos el fichero. Veamos cómo hacerlo:
chown root Fichero.odt -rwxrwxrwx 1 root ayudalinux 8123 dic 30 17:56 Fichero.odt
chgrp root Fichero.odt -rwxrwxrwx 1 root root 8123 dic 30 17:56 Fichero.odt
Vemos que en los distintos indicadores que representan usuario y grupo del fichero, ahora en lugar de aparecer “ayudalinux” aparece “root”
Pues esto es todo lo que más o menos debe conocer de forma básica del sistema de ficheros en Linux. Es información muy interesante para usuarios que se estén iniciado en el mundo del software libre y quieran tener claro el funcionamiento básico del sistema.
Por supuesto todo esto será aplicable a la interfaz gráfica del sistema, ya que la Shell es solamente un medio más de interacción con el sistema. Esperamos, ante todo, que la información haya sido de utilidad.