Adentrándonos en las profundidades de GNU/Linux
En el último capítulo conocimos lo básico de Linux, las distribuciones más utilizadas y amigables …
leer másEn el último capítulo nos adentramos en las profundidades de GNU/Linux, explorando la gestión de usuarios, la organización del sistema de archivos y la configuración básica del entorno. Aprendimos sobre la importancia del usuario root, la administración de usuarios y grupos, y la estructura jerárquica del sistema de archivos. Estos conceptos son fundamentales para comprender el funcionamiento de Linux y prepararnos para tareas más avanzadas.
En este capítulo, vamos a profundizar en la gestión de permisos de archivos y directorios, un aspecto crucial para mantener
la seguridad y el control en un sistema multiusuario como GNU/Linux. Además, abordaremos el uso de umask
para definir
permisos predeterminados en nuevos archivos y directorios, proporcionando una base sólida para cualquier usuario o administrador
de sistemas.
Los ficheros en Linux tienen permisos asociados que controlan quién puede leer, escribir o ejecutarlos. Como en cualquier sistema operativo moderno en los que múltiples usuarios pueden acceder a los mismos recursos, es importante tener un sistema de control para determinar qué usuarios pueden hacer qué con los ficheros. GNU/Linux no iba a ser menos, su sistema de permisos se enfoca en tres categorías:
Para ver los permisos de un fichero, se puede usar el comando ls -l
:
ls -l archivo.txt
La salida de este comando mostrará algo como:
drwxr-xr-x 2 user group 4096 mar 10 12:34 .
drwxr-xr-x 4 user group 4096 mar 10 12:30 ..
-rw-r--r-- 1 user group 220 mar 10 12:34 .bash_logout
-rw-r--r-- 1 user group 3771 mar 10 12:34 .bashrc
-rw-r--r-- 1 user group 807 mar 10 12:34 .profile
-rwxr-xr-x 1 user group 98 mar 10 12:34 script.sh
El primer grupo de caracteres es el de los permisos, empieza por el tipo de fichero (d para directorio, - para fichero normal y l para enlace simbólico). Los siguientes tres caracteres indican los permisos del propietario, los siguientes los del grupo y el último trío los de los permisos para los demás usuarios. En el primer caso “drwxr-xr-x”, el propietario puede leer, escribir y ejecutar, el grupo y los demás usuarios pueden leer y ejecutar. El desglose es el siguiente:
Junto a los permisos podemos observar también el propietario del fichero y el grupo al que pertenece, además de otra información relevante que ahora mismo no nos interesa. Los permisos en Linux tienen una equivalencia numérica (octal), que se puede ver a continuación:
Para saber los permisos de un fichero en formato numérico, se puede usar el comando stat
:
stat archivo.txt
Cuya salida nos mostrará algo similar a esto:
Fichero: archivo.txt
Tamaño: 6610 Bloques: 16 Bloque E/S: 4096 fichero regular
Device: 252,0 Inode: 31101793 Links: 1
Acceso: (0664/-rw-rw-r--) Uid: ( 1001/betazetadev) Gid: ( 1001/betazetadev)
Acceso: 2024-05-27 15:58:21.474596420 +0200
Modificación: 2024-05-27 15:58:21.475596402 +0200
Cambio: 2024-05-27 15:58:21.476596383 +0200
Creación: 2024-05-27 15:58:21.474596420 +0200
Podemos obeservar que los permisos de acceso del fichero son 0664
(el “0” indica que se trata de un número en notación octal),
lo que significa que el propietario y el grupo pueden leer y escribir, mientras que los demás usuarios solo pueden leer.
El equivalente a rw-rw-r--
, por lo que según esto sabemos que el número máximo en notación octal es 7 (4+2+1), así que
el máximo valor que se puede asignar es 777, que sería el equivalente a rwxrwxrwx
, la opción menos restrictiva en cuanto
a permisos ya que permite hacer todo a todos los usuarios.
El permiso más restrictivo sería 0, que no permitiría hacer nada al tipo de usuario al que se le asignara, por ejemplo, si se le asignara 000 a un fichero, ni el propietario, ni el grupo, ni los demás usuarios podrían hacer nada con él. Algo que no tendría mucho sentido, pero que se puede hacer.
Es importante destacar que una gestión inadecuada de los permisos puede llevar a problemas de seguridad, por lo que es importante conocer los requisitos de seguridad de cada uno de los ficheros y directorios de nuestro sistema, sobre todo los que contienen información sensible o importante, en raras ocasiones será necesario hacer disponibles los ficheros para todos los usuarios.
Existen diferentes formas de gestionar los ficheros de un sistema GNU/Linux, a pesar de poder hacerse también a través de una interfaz gráfica de forma fácil y sencilla utilizando un explorador de archivos, la forma más flexible de hacerlo es a través de la terminal. Además, al conocer cómo funcionan y poder cambiarlos directamente desde la terminal se puede hacer gestiones de mantenimiento y/ó reparación de forma más rápida sin necesidad de tener que abrir un programa. Muchas veces en Linux se trabaja en servidores que no tienen interfaz gráfica.
Para cambiar los permisos de un fichero, se puede usar el comando chmod
:
chmod u+x script.sh # Añade permiso de ejecución para el propietario
chmod g+w archivo.txt # Añade permiso de escritura para el grupo
chmod o-r archivo.txt # Elimina permiso de lectura para otros
chmod a=r archivo.txt # Asigna permisos de solo lectura para todos
También podemos utilizar la notación octal para cambiar los permisos de un fichero:
chmod 755 script.sh # Asigna permisos de lectura, escritura y ejecución para el propietario, y permisos de lectura y ejecución para el grupo y otros
chmod 700 script.sh # Asigna permisos de lectura, escritura y ejecución para el propietario, sin permisos para el grupo y otros
chmod 664 archivo.txt # Asigna permisos de lectura y escritura para el propietario y el grupo, y permisos de lectura para otros
chmod 640 archivo.txt # Asigna permisos de lectura y escritura para el propietario, y permisos de lectura para el grupo, sin permisos para otros
chmod 444 archivo.txt # Asigna permisos de solo lectura para el propietario, el grupo y otros
De esta forma podemos gestionar eficientemente todos y cada uno de los ficheros de nuestro sistema, aunque no es la única
herramienta que tenemos a nuestra disposición para gestionar los permisos de nuestros ficheros, chmod
es una de las más
importantes y más utilizadas. Con la herramienta chown
podemos cambiar el propietario de un fichero:
sudo chown nuevo_usuario archivo.txt
Y con chgrp
podemos cambiar el grupo al que pertenece:
sudo chgrp nuevo_grupo archivo.txt
La combinación de estos comandos nos permite tener un control total sobre los ficheros de nuestro sistema, pudiendo asignar permisos personalizados a cada uno de ellos, y cambiar el propietario y el grupo al que pertenecen. Es importante tener en cuenta que algunos ficheros del sistema no deben ser modificados, ya que pueden causar problemas si se modifican sus permisos. Además, como mencionábamos anteriormente, una gestión inadecuada de los permisos puede llevar a problemas de seguridad, por lo que es importante conocer los requisitos de seguridad de cada uno de los ficheros y directorios de nuestro sistema y servicios.
umask
y cómo se utilizaExiste otro concepto importante en la gestión de permisos en Linux, el umask
es un valor que se resta a los permisos
predeterminados de los archivos y directorios creados por un usuario. Generalmente, en sistemas como Ubuntu, el umask por
defecto es 0002
, lo que significa que se resta el permiso de escritura para otros usuarios. Es decir, umask
determina
los permisos que se asignarán por defecto a los nuevos archivos y directorios, restando su valor a 666
para archivos y a 777
para directorios. Podemos comprobar el valor actual con el comando umask
:
umask
La salida de este comando mostrará algo como:
0002
Conociendo que los permisos predeterminados para archivos y directorios en Linux son 666 (rw-rw-rw-) y 777 (rwxrwxrwx) respectivamente,
se pueden calcular los permisos finales restando el valor de umask a estos valores. Por ejemplo, una umask
de 0002 eliminará
el permiso de escritura para otros usuarios:
Esto asegura que los archivos y directorios creados sean accesibles por el propietario y el grupo, pero no modificables
por otros usuarios. Para cambiar el valor de umask, se puede usar el comando umask
seguido del valor deseado:
umask 0022
Este cambio se aplicará a todos los archivos y directorios creados a partir de ese momento, aunque normalmente no es algo necesario cambiar, ya que el valor por defecto es el más seguro y el más utilizado en la mayoría de los sistemas, puede llegar a necesitarse en entornos muy específicos.
La gestión de permisos en Linux es una habilidad fundamental para cualquier administrador de sistemas o usuario avanzado.
Desde la configuración de permisos básicos con chmod
, hasta el ajuste de propietarios y grupos con chown
y chgrp
, y la
definición de permisos predeterminados mediante umask
, estos conocimientos te permitirán tener un control total sobre los
archivos y directorios de tu sistema. Una gestión adecuada de los permisos no solo garantiza la seguridad, sino que también
facilita la colaboración y el mantenimiento del sistema.
Al dominar estos conceptos, estarás mejor preparado para gestionar y proteger tu entorno Linux, asegurando que los recursos estén correctamente asignados y accesibles solo para quienes tienen el permiso adecuado, además, gestionarlos desde una interfaz gráfica se te hará pan comido una vez entendido su funcionamiento interno. En el próximo capítulo, exploraremos la gestión de procesos y los recursos del sistema de forma eficiente. ¡Hasta la próxima!
Quizá te puedan interesar
En el último capítulo conocimos lo básico de Linux, las distribuciones más utilizadas y amigables …
leer másHabiendo explorado los fundamentos de Docker y su poder para desplegar aplicaciones encapsuladas, …
leer más¿Qué es Linux? Linux es un sistema operativo de código abierto, lo que significa que su código …
leer másDe concepto a realidad