Guía para entender y gestionar los permisos de archivos y directorios en Linux

Uno de los motivos más comunes por los que las personas no les gusta el sistema operativo UNIX y Linux es la falta de comprensión del sistema de archivos de UNIX/Linux. Como administrador del sistema, descubrirás que la mayoría de los problemas que tienen los usuarios están relacionados con los permisos de archivos y directorios y la propiedad de los mismos.

Índice de Contenido
  1. La importancia de establecer estándares de archivos y directorios
  2. Entendiendo los permisos de archivos y directorios
  3. Cambiando los derechos de acceso de archivos y directorios
  4. Permisos de directorios
  5. Cambiando la propiedad de archivos
  6. Gestión de permisos para enlaces
    1. Enlaces duros
    2. Enlaces simbólicos
  7. Conclusión

La importancia de establecer estándares de archivos y directorios

Establecer buenos estándares de archivos y directorios es crucial para la seguridad de tu sistema. Si los usuarios pueden realizar cambios en el sistema de archivos (donde no deberían tener acceso), es solo cuestión de tiempo antes de que comiencen a sobrescribir los archivos de otros, lo que resulta en la pérdida de información importante. Si los usuarios pueden acceder a los archivos del sistema, lo harán. Esto puede resultar en la pérdida de uno o más servidores, sin mencionar la pérdida de productividad y negocio asociados al tiempo de inactividad.

Entendiendo los permisos de archivos y directorios

Linux siempre asocia un archivo o directorio con un usuario y un grupo. Por ejemplo, supongamos que tengo un archivo llamado webmaster.txt en mi directorio de inicio. Si ejecuto el comando ls -l webmaster.txt, obtengo el siguiente resultado:

-rw-rw-r- 1 jim webmaster 1024 21 de febrero 15:10 webmaster.txt

Antes de examinar esta línea, debe saber que hay tres conjuntos de permisos que utiliza cada sistema de archivos de UNIX o Linux: el propietario del archivo, el grupo del archivo y todos los demás usuarios (comúnmente conocidos como otros). Mi ejemplo de salida es la lista de permisos de acceso que se han establecido para el propietario del archivo, el grupo del archivo y todos los demás usuarios. Este archivo es propiedad de un usuario llamado jim, el grupo del archivo es webmaster, el tamaño del archivo es de 1,024 bytes, el archivo fue modificado por última vez el 21 de febrero a las 15:10 (3:10 p.m.) y el nombre de archivo es webmaster.txt.

El área de esta salida que nos interesa es el grupo al comienzo de la línea: -rw-rw-r-

Cómo utilizar Isearch para buscar archivos de texto en Linux

Esta es el área donde se muestran los permisos de acceso para el archivo. La primera entrada es un guión (-), lo que indica que este es un archivo (no un directorio o un enlace). Una d en esta posición indica que este es un directorio y una l indica que este es un enlace. Las letras r, w y x significan leer, escribir y ejecutar.

En este caso, la primera entrada es un guión, por lo que sabemos que este archivo no es un directorio o un enlace, solo es un archivo. El primer grupo de letras indica los permisos para el propietario del archivo y contiene las letras rwx. Esto significa que el propietario del archivo tiene los permisos de lectura, escritura y ejecución para este archivo. El propietario puede hacer cualquier cosa con este archivo, incluido cambiar los permisos de acceso. (El único otro usuario que puede hacer esto es el superusuario o root).

El siguiente grupo indica los derechos de acceso para el grupo del archivo. En nuestro ejemplo de webmaster.txt, los permisos son de lectura y escritura (rw). Los usuarios que pertenecen al grupo webmaster pueden leer y hacer cambios en este archivo, pero no pueden ejecutar el archivo, siempre y cuando sea un archivo ejecutable como un script de Perl o un script de shell.

El tercer grupo se refiere a todos los usuarios que no son el propietario del archivo y a todos los usuarios que no pertenecen al grupo del archivo. En este caso, los derechos para "otros" son solo de lectura (r), lo que significa que cualquier usuario que no sea el propietario del archivo o que no pertenezca al grupo del archivo solo puede leer el archivo. Si estos usuarios ejecutan el comando cat o ls en el archivo, verán que existe y pueden abrirlo en un editor. Sin embargo, estos usuarios no pueden ejecutar el archivo (si es un programa ejecutable) y no pueden hacer cambios en el archivo.

Ahora practiquemos. Ejecuta tu editor favorito y crea un archivo de texto simple y nómbralo myfile.txt. No te preocupes por el contenido, unas pocas líneas de texto serán suficientes. Guarda el archivo en tu directorio de inicio. Ahora, ejecuta el comando ls -l myfile.txt. Debería aparecer la siguiente salida:

-rw-rw-r- 1 <nombredeusuario> <nombredeusuario> 1024 22 de febrero 10:20 myfile.txt

Cómo configurar un servidor Linux como puerta de enlace para una red local

Puedes ver que el propietario del archivo y el grupo del archivo son los mismos. Esto se debe a que el usuario que creó el archivo es el propietario del archivo y el grupo es el grupo predeterminado del propietario.

Cambiando los derechos de acceso de archivos y directorios

Como propietario de un archivo o directorio, puedes establecer los derechos de acceso para el archivo o directorio. Hay dos formas de hacer esto.

El primer método implica matemáticas binarias simples. Hay tres permisos: leer, escribir y ejecutar. A cada permiso se le asigna un valor en función de una potencia de dos, de derecha a izquierda.

El primer permiso, ejecutar, tiene un valor de dos elevado a la potencia cero, o uno. El segundo permiso, escribir, tiene un valor de dos elevado a la primera potencia, o dos. El tercer permiso, leer, tiene un valor de dos elevado a la segunda potencia, o cuatro. El permiso de acceso más alto es siete, o leer, escribir y ejecutar. El permiso de acceso más bajo es cero, o sin derechos.

Ejecuta nuevamente ls -l en myfile.txt.

El propietario tiene permisos de lectura/escritura (4 + 2), o un valor de seis. El grupo del archivo también tiene permisos de lectura/escritura, también un valor de seis. Todos los demás tienen permisos de solo lectura, o un valor de cuatro.

Windows al alcance de Linux: Accede a recursos con smbmount y smbclient

Ahora cambiemos los permisos en myfile.txt. Para asignar permisos, suma los valores de los permisos que deseas asignar y luego asígnalos utilizando el comando chmod.

Como propietario del archivo, deseas permisos de ejecución. Ejecutar tiene un valor de cuatro, por lo que ejecutarás el comando:
chmod 764 myfile.txt

Ahora ejecuta ls -l en myfile.txt y deberías ver algo similar a esto:
-rwx-rw-r-- 1 <nombredeusuario> <nombredegrupo> <tamaño> 22 de febrero 15:10 myfile.txt

Si no estás satisfecho con que el grupo del archivo tenga acceso de escritura, ejecuta el comando chmod nuevamente:
chmod 744 myfile.txt

Ejecuta ls -l myfile.txt y verás que el propietario tiene acceso de lectura, escritura y ejecución, pero el grupo del archivo y todos los demás tienen solo acceso de lectura.

Otro modo de usar el comando chmod es usar letras para representar los permisos. Leer es r, escribir es w y ejecutar es x.

Cómo configurar y utilizar logrotate para la gestión de archivos de registro en Linux

Supongamos que quieres dar permiso de ejecución al grupo del archivo. Ejecuta chmod g+x myfile.txt. La terna ahora debe ser -rwxr-x-r--. Para quitar un permiso, reemplaza el [+] con un [-]. Paras quitar el permiso de ejecución al grupo, ejecuta:
chmod g-x myfile.txt

Las ternas ahora deben ser -rwxr--r--.

Mientras seas propietario de un archivo, puedes usar el comando chmod para establecer los permisos como desees.

Permisos de directorios

Los permisos de los directorios no son exactamente iguales que los de los archivos. Aquí hay algunos permisos típicos requeridos en los directorios:

  • Se requiere permiso de ejecución para que un usuario pueda cd en un directorio.
  • Se requiere permiso de lectura para que un usuario pueda usar un comando como ls para ver los archivos contenidos en un directorio.
  • El permiso de solo ejecución permite que un usuario acceda a los archivos en un directorio siempre y cuando conozca los nombres de los archivos en el directorio y se le permita leer los archivos.
  • El permiso de escritura permite que el usuario cree, elimine o modifique cualquier archivo o subdirectorio, incluso si el archivo o subdirectorio es propiedad de otro usuario.

Cambiando la propiedad de archivos

Solo el superusuario o root puede cambiar la propiedad de un archivo. Esta es una función de seguridad incorporada en Linux. Supongamos que escribí un programa que cambió el acceso de archivos críticos del sistema a los que solo root tenía acceso en un servidor. Luego, simplemente cambiaría la propiedad del archivo del programa a root. Cuando ejecutara el programa, tendría acceso root a todos los archivos afectados por el programa.

Para cambiar la propiedad de un archivo o directorio, inicia sesión como root o usa el comando su para iniciar sesión como root y luego ejecuta el comando:
chown <nombredeusuario> <nombredelarchivo>

Cómo instalar y configurar ALSA en Linux: Guía paso a paso

Para cambiar la propiedad de myfile.txt a un usuario llamado bill, ejecuta:
chown bill myfile.txt

Para cambiar el grupo del archivo con el mismo comando, ejecuta:
chgrp <gruponuevo> <nombredelarchivo>

Para cambiar el grupo de myfile.txt a admin, ejecuta:
chgrp admin myfile.txt

Para cambiar el propietario y el grupo de un archivo en un paso, ejecuta:
chown bill.admin myfile.txt
Para cambiar la propiedad o el grupo de todos los archivos y directorios en un directorio principal, usa la opción -R con el comando chown.
Si deseas cambiar el propietario y el grupo de todos los archivos y directorios en el directorio /www a jim y al grupo internet, ejecuta el comando:
chown -R jim.internet /www

Si solo deseas cambiar el grupo del archivo, ejecuta el comando:
chgrp <gruponuevo> <nombredelarchivo>

Para cambiar el grupo de todos los archivos de texto en el directorio /www al grupo jim, ejecuta el comando:
chgrp -R jim /www

Consejos rápidos para la navegación de directorios en Linux: cd y pushd

Los comandos chown y chgrp también se pueden utilizar con un asterisco (*) para cambiar los permisos o el grupo de todos los archivos en un directorio. Por ejemplo, escribe cd /www para cambiar al directorio /www. Luego, para cambiar los permisos de todos los archivos de texto en el directorio /www, ejecuta:
chmod 755 *txt

Para cambiar el grupo de todos los archivos con la extensión pl en el directorio /www, ejecuta el comando:
chgrp internet *pl

Gestión de permisos para enlaces

Enlaces duros

Los enlaces duros apuntan a archivos en el mismo directorio. Un archivo que tiene enlaces duros no se eliminará del disco duro hasta que se eliminen todos los enlaces. Los enlaces se crean utilizando el comando ln. Para crear un enlace duro desde myfile.txt a linkfile.txt, usa el comando:
ln myfile.txt linkile.txt

Ahora, cuando ejecutes el comando ls -l *txt, deberías ver algo similar a:
-rw-r-r- 2 jim 1024 Feb 22 15:10 myfile.txt
-rw-r-r- 2 jim 1024 Feb 22 15:10 linkfile.txt

El enlace duro y el archivo original tendrán el mismo tamaño, fecha de modificación, propietario, grupo y permisos de acceso. Ahora, si el propietario ejecuta:
chown <nuevousuario> hardlink.txt

la salida de ls -l *txt producirá:
-rw-r-r- 2 <nuevousuario> 1024 Feb 22 15:10 myfile.txt
-rw-r-r- 2 <nuevousuario> 1024 Feb 22 15:10 hardlink.txt

Cómo configurar y optimizar el enrutamiento estático en Linux

Como puedes ver, la propiedad tanto del archivo original como del enlace duro ha cambiado.

Enlaces simbólicos

Los enlaces simbólicos pueden apuntar a otro directorio e incluso a otro sistema de archivos. Los enlaces simbólicos se crean utilizando la opción -s con el comando ln. Cuando se crea un enlace simbólico, tendrá las mismas características que el archivo original. Estas características pueden cambiarse en cualquiera de los archivos sin cambiar las características del otro.

Primero, creemos un enlace simbólico a myfile.txt. Usa el comando:
ln -s myfile.txt symboliclink.txt

Usando ls -l *txt, obtenemos lo siguiente:
-rw-r-r- 2 <nuevousuario> 1024 Feb 22 15:10 myfile.txt
-rw-r-r- 2 <nuevousuario> 1024 Feb 22 15:10 hardlink.txt
-rw-r-r- 2 <nuevousuario> 1024 Feb 22 15:10 symboliclink.txt

Ahora, usando chown, puedes cambiar la propiedad del archivo myfile.txt a otro usuario (digamos guest) y luego ejecutar el comando ls -l nuevamente. Deberías ver algo como:
-rw-r-r- 2 <guest> 1024 Feb 22 15:10 myfile.txt
-rw-r-r- 2 <nuevousuario> 1024 Feb 22 15:10 hardlink.txt
-rw-r-r- 2 <nuevousuario> 1024 Feb 22 15:10 symboliclink.txt

La ventaja de los enlaces simbólicos es que las características tanto del archivo original como del enlace simbólico pueden cambiarse sin afectar al otro.

Cómo utilizar select() y poll() para multiplexar sockets de red

Conclusión

Una buena política para el acceso al sistema de archivos puede prevenir muchos problemas para los administradores de sistemas. Este artículo ha proporcionado una introducción al sistema de archivos de Linux y ha discutido cómo limitar o permitir el permiso de los usuarios a los archivos y directorios.

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Código abierto, allí encontraras muchos artículos similares a Guía para entender y gestionar los permisos de archivos y directorios en Linux , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.