Conociendo el sistema de archivos de Linux
Una de las primeras cosas que debemos comenzar a conocer cuando empezamos a interactuar con Linux, es su sistema de archivos, sobre todo si venimos de un sistema operativo como Microsoft Windows.
Linux, al igual que Windows ,organiza sus archivos en una estructura jerarquica de directorios, o sea, que estan organizados en una estructura de arbol de directorios (tambien llamadas carpetas) que pueden contener archivos u otros directorios. El primer directorio dentro de su sistema de archivos es llamado el Directorio Raiz, el cual contiene todos los archivos y subdirecorios de la jerarquia.
Cuando comenzamos a interactuar con el sistema de archivos de Linux, vamos a notar dos diferencias principales con respecto a Windows; la primera y más obvia, es que Linux a diferencia de Windows, utiliza barra (“/”), en lugar de la contrabarra(“\”) para separar sus directorios; y la segunda gran diferencia que vamos a notar es que Linux no utiliza letras para distingir los diferentes discos en sus rutas de archivos o directorios; es más, Linux directamente no hace distinción entre los diferentes discos que podamos poseer, todo comienza en su directorio raiz. Así, por ejemplo en Windows podríasmos tener la siguiente ruta:
C:\Usuarios\Raul\Documentos\blog.doc
Que indica que el documento “blog.doc” esta ubicado dentro del directorio “Documentos”, el cual esta ubicado dentro del directorio “Raul”, el cual a su vez esta ubicado dentro del directorio “Usuarios” que se encuentra dentro del disco al que se le ha asignado la denominación de “C” (generalmente el disco principal).
Este mismo ejemplo en Linux, tendría la siguiente estructura:
/home/raul/Documentos/blog.doc
Como vemos no no existe ninguna letra que designe al disco donde se encuentra alojado el archivo y utilizamos la barra en lugar de la contrabarra para separar los diferentes subdirectorios de la ruta.
Los directorios principales de Linux
El sistema operativo Linux, nos proporciona una estructura estandar de directorios, los cuales son comunes a todas sus distribuciones y a la mayoria de los sitemas operativos derivados de Unix. Esta estructura estandar es utilizada para organizar los diferentes archivos y programas que el sistema utiliza comunmente.
- /: Es el Directorio Raiz, el directorio de mas alto nivel dentro del sistema de archivos de Linux, todos los restantes directorios se ubican dentro de él.
- /bin: Es el directorio binario. Este directorio contiene las principales aplicaciones y comandos que utiliza el sistema operativo Linux.
- /dev: Es el directorio de dispositivos. Este directorio contiene los archivos de dispositivos, los cuales son utilizados para comunicarse con los diferentes dispositivos que posee nuestra computadora.
- /etc: Este directorio contiene los archivos de configuración del sistema.
- /home: En este directorio Linux crea los directorios de los diferentes usuarios del sistema; este directorio va a contener todos los subdirectorios donde los usuarios guardan sus archivos.
- /lib: Es el directorio biblioteca. En el se alojan las diferentes bibiotecas de funciones que el sistema y las diferentes aplicaciones utilizan.
- /media: Este directorio es utilizado cuando se montan en el sistema de archivos dispositivos removibles.
- /mnt: Este directorio, al igual que /media, es utilizado comunmente como el lugar donde el sistema monta dispositivos removibles.
- /opt: Es el directorio opcional. En este directorio es tipicamente utilizado para instalar paquetes de sofware de terceros, que no tienen relacion con el funcionamiento general del sistema.
- /root: En este directorio generalmete se ubican todos los archivos generados por el usuario root del sistema.
- /sbin: El directorio binario de sistema. Aquí se ubican generalmente las aplicaciones que son ejecutadas unicamente por el superusuario del sistema.
- /tmp: El directorio temporal. En el los archivos temporales son creados y posteriormente eliminados.
- /usr: Un directorio jerarquico que contiene los archivos que pueden ser utilizados por los usuarios normales del sistema. Así, por ejemplo dentro de /usr/bin se alojaran los programas que pueden ser ejecutados por los usuarios del sistema sin necesidad de poseer permisos de superusuario.
- /var: El directorio variable. Este directorio contiene otros directorios con contenido variable, como por ejemplo los logs del sistema, que generalmente se alojan dentro de la ruta /var/log
Los permisos de archivos en Linux
Linux, desde su concepción, fue diseñado para ser utilizado por multiples usuarios. por esta razón cuenta con un sistema de seguridad de permisos para asegurarse de que sus archivos y directorios puedan ser utilizados y accedidos solo por los usuarios con los privilegios necesarios para hacerlo.
El sistema de permisos de Linux esta basado en el tradicional modelo de usuarios y grupos utilizado en los sistemas operativos tipo Unix. Los usuarios y grupos son las dos entidades básicas que el sistema utiliza para determinar quien tiene acceso a que archivo y quien puede realizar una accion determinada.
Toda persona que ingrese al sistema operativo Linux, debe hacerlo a traves de una cuenta de usuario, que consiste en un nombre y una contraseña, y al cual se le especifica una carpeta dentro del directorio estandar /home, la cual contendra toda la informacion de configuracion del usuario asi como tambien los archivos que ese usuario vaya creando en el sistema.
A su vez, todos los usuarios de Linux pertenecen a uno o mas grupos. Un grupo permite a multiples usuarios compartir acceso a un conjunto de permisos sobre un objeto del sistema, como puede ser un archivo, un directorio o un dispositivo.
Para ver los permisos sobre un archivo o directorio determinado, podemos utilizar el comando “ls” que nos listara la informacion sobre los directorios y archivos de una ruta especificada. Por ejemplo el siguiente comando
1 |
ls -l /home/raul |
nos dara un resultado como el siguiente:
Como vemos este comando nos esta brindando la información detallada sobre los diferentes archivos y directorios que se encuentran incuídos en la ruta que le pasamos como argumento.
La información que nos va a interesar de este resultado es la que corresponde a la primer columna, que es la que nos dice los diferentes permisos que posee cada archivo o directorio. Esta informacion pueder ser dividida en 4 secciones:
- El primer caracter, que corresponde al tipo de objeto que estamos observando. Si se trata de un guion (-), se refiere a que ese objeto es un archivo; y si se trata de una “d”, se refiere a que el objeto es un directorio.
- y 3 conjuntos de 3 caracteres, que corresponden a los permisos que el owner (el usuario que creo el objeto), el grupo del owner y el resto de los usuarios posee sobre el objeto. Los valores principales de estos conjuntos de 3 caracteres son “r”, que es el permiso de lectura, significa que ese archivo o directorio puede ser leido; “w” , que es el permiso de escritura, y significa que se puede escribir dentro de ese objeto; y “x”, que es el permiso de ejecucion, y que para un archivo significa que puede ser ejecutado y para un directorio significa que podemos navegarlo en busca de sus subdirectorios. Si alguno de estos permisos no existe en nuestro grupo de permisos, en lugar de r, w, o x aparecera el guion (-).
Así, por ejemplo si tomamos la primer linea de nuestro resultado, tenemos los siguiente:
1 |
-rw-rw-r-- 1 raul raul 7993 Jan 17 2012 apache2.conf |
Si nos quedamos con la primer columna, y la agrupamos en las 4 secciones antes mencionadas, obtendríamos lo siguiente.
tipo | usuario | grupo | resto |
– | rw- | rw- | r– |
Lo que significa que estamos en presencia de un archivo (el guion(-) como primer caracter); sobre los que el usuario que lo creo puede escribir y leer (rw- en el primer trio de caracteres siguientes); y a su vez los usuarios que pertenezcan al grupo del owner pueden leer y escribir (rw- en el segundo trio de caracteres) y sobre el cual solo tienen permisos de lectura el resto de los usuarios del sistema(r– en el tercer trio de caracteres).
El comando “ls” cuando se ejecuta con el parametro “-l”, como en este caso, tambien nos brinda la información sobre quien es el usuario owner del objeto y el grupo al que corresponde. Esto lo podemos ver en la tercer y cuarta columna respectivamente del resultado que nos devuelve este comando; en nuestro ejemplo, podemos ver que el owner es el usuario raul y que el grupo al que pertenece tambien es raul.
Con esto finalizo esta introduccion al sistema de archivos de Linux, obviamente dentro del universo de este genial sistema operativo, siempre hay muchas cosas por aprender; de momento si quieren ir conociendo alguno de los comandos para moverse por los diferentes directorios de Linux, pueden visitar el siguiente artículo.
Saludos!