Búsqueda de sitios web

Permisos y propiedad de archivos de Linux explicados con ejemplos


Permisos de archivos de Linux explicados en términos más simples. Aprenda también cómo cambiar los permisos y la propiedad de los archivos en Linux en esta guía detallada para principiantes.

Por diseño, Linux es un sistema operativo multiusuario. En un sistema empresarial, habría varios usuarios accediendo al mismo sistema. Pero si cualquier usuario pudiera acceder y modificar todos los archivos que pertenecen a otros usuarios o archivos del sistema, esto sin duda sería un riesgo para la seguridad.

Es por eso que UNIX y, por lo tanto, Linux (Linux es un sistema similar a Unix) tienen medidas de seguridad incorporadas. Esto garantiza que solo los usuarios deseados puedan acceder, modificar o ejecutar un archivo o directorio.

En Linux, dos factores deciden a qué archivo accederá cada usuario:

  • Propiedad del archivo

  • Permiso de archivo

Comprender la propiedad y los permisos de los archivos es crucial para un usuario de Linux. Explicaré estos términos en detalle aquí.

Propiedad de archivos en Linux

Nota: Podría utilizar el término archivo aquí, pero también se aplica a directorios. Supongo que sabes que los directorios son archivos de todos modos.

Cada archivo y directorio en Linux tiene tres tipos de propietarios:

Usuario

El usuario es el propietario del archivo. Cuando creas un archivo, te conviertes en el propietario del archivo. La propiedad también se puede cambiar, pero eso lo veremos más adelante.

Grupo

Cada usuario es parte de un grupo determinado. Un grupo consta de varios usuarios y esta es una forma de administrar usuarios en un entorno multiusuario.

Por ejemplo, si tiene un equipo de desarrollo, un equipo de control de calidad y un equipo de administrador de sistemas que acceden al mismo sistema, debe crear grupos separados para ellos. De esta manera, podrá gestionar los archivos y la seguridad del sistema de forma eficaz. Ahorra tiempo porque en lugar de agregar permisos manualmente para cada usuario, simplemente puede agregarlos a un grupo y cambiar el permiso para el grupo. Verás cómo hacerlo más adelante en este artículo.

Incluso si eres el único usuario del sistema, seguirás formando parte de muchos grupos. Distribuciones como Ubuntu también crean un grupo con el mismo nombre que el nombre del usuario.

💡
Ejecute el comando grupos para ver a qué grupos de usuarios pertenece.

Otro

"Otro" puede considerarse como un supergrupo con todos los usuarios del sistema. Básicamente, cualquier persona con acceso al sistema pertenece a este grupo.

En otras palabras, "Usuario" es un único usuario, Grupo es una colección de usuarios y Otros está formado por todos los usuarios del sistema.

Permisos de archivos en Linux

Cada archivo y directorio en Linux tiene los siguientes tres permisos para los tres tipos de propietarios:

Permisos para archivos

  • Leer: puede ver o copiar el contenido del archivo

  • Escribir: puede modificar el contenido del archivo

  • Ejecutar: puede ejecutar el archivo (si es ejecutable)

Permisos para directorios

  • Leer: puede enumerar todos los archivos y copiarlos del directorio

  • Escribir: puede agregar o eliminar archivos en el directorio (también necesita permiso de ejecución)

  • Ejecutar: puede ingresar al directorio

Comprender los permisos y la propiedad de archivos en Linux

Ahora que conoce la terminología básica de propiedad y permisos de archivos, es hora de verla en acción.

Puede utilizar el 'comando stat' o el 'comando ls' para comprobar los permisos del archivo.

Si usa el comando ls con la opción -l en un archivo, verá un resultado como este:

-rwxrw-r-- 1 abhi linux-console 457 Aug 10 11:55 agatha.txt

Permítanme explicar este resultado con una imagen:

Permítanme explicar con más detalle todo el resultado en detalle:

  • Tipo de archivo: indica el tipo de archivo. d significa directorio, – significa archivo normal, l significa enlace simbólico.

  • Permisos: este campo muestra el permiso establecido en un archivo. Lo explicaré en detalle en la siguiente sección.

  • Recuento de enlaces físicos: muestra si el archivo tiene enlaces físicos. El recuento predeterminado es uno.

  • Usuario: El usuario propietario de los archivos.

  • Grupo: El grupo que tiene acceso a este archivo. Sólo un grupo puede ser propietario de un archivo a la vez.

  • Tamaño de archivo: Tamaño del archivo en bytes.

  • Hora de modificación: la fecha y hora en que se modificó el archivo por última vez.

  • Nombre de archivo: Obviamente, el nombre del archivo o directorio.

Ahora que ha entendido el resultado del comando ls -l, centrémonos en la parte de permisos de archivos.

En el comando anterior, verá el permiso de archivo como este en el formato de nueve dígitos:

rwxrw-r--

Cada letra denota un permiso particular:

  • r: permiso de lectura

  • w: permiso de escritura

  • x: permiso de ejecución

  • – : Sin permiso establecido

Los permisos siempre están en el orden de lectura, escritura y ejecución, es decir, rwx. Y luego estos permisos se establecen para los tres tipos de propietarios (consulte la sección de propiedad) en el orden de Usuario, Grupo y Otros.

Esta imagen explicará mejor las cosas:

Entonces, si miras la imagen de arriba ahora, puedes decir lo siguiente sobre los permisos de archivos:

  • El archivo tiene permisos de lectura, escritura y ejecución para el propietario del Usuario. ¿Pero quién es este usuario propietario del archivo? Tiene esta información en la salida de ls -l (es decir, usuario abhi).

  • El archivo tiene permisos de lectura y escritura para el Grupo pero no de ejecución. ¿Qué grupo es? Tiene la información del grupo en la salida del comando ls -l (es decir, grupo linux-console).

  • El archivo sólo tiene permiso de lectura para Otros, es decir, todos los que tienen acceso al sistema. No es necesario saber cuál es porque "otro" significa todos los usuarios.

Ahora, si vuelve a ver el comando ls -l completo, puede leer los permisos y la propiedad del archivo juntos.

-rwxrw-r-- 1 abhi linux-console 457 Aug 10 11:55 agatha.txt

El archivo agatha.txt es propiedad del usuario abhi y abhi tiene permiso de lectura, escritura y ejecución. Todos los miembros del grupo istfoss tienen acceso de lectura y escritura a este archivo, mientras que todos los demás solo tienen acceso de lectura a este archivo.

Nota: El usuario root tiene superpoderes y normalmente tiene permisos de lectura, escritura y ejecución para todos los archivos, incluso si no lo ve en los permisos de archivos.

Un solo usuario puede ser miembro de varios grupos, pero solo el grupo principal del usuario es el propietario del grupo de un archivo creado por el usuario. El grupo principal de un usuario se puede encontrar usando el comando id como id -gn . Deje el nombre de usuario en blanco si está intentando encontrar su propio grupo principal.

Ahora que sabe cómo averiguar los permisos de un archivo, veamos cómo puede cambiar el permiso y la propiedad de un archivo.

Cambiar permisos de archivos en Linux

Puede utilizar el comando chmod para cambiar los permisos de un archivo en Linux.

📚
Los permisos solían llamarse modo de acceso y, por lo tanto, chmod era la forma abreviada de cambiar el modo de acceso.

Hay dos formas de utilizar el comando chmod:

  • modo absoluto

  • Modo simbólico

Usando chmod en modo absoluto

En el modo absoluto, los permisos se representan en forma numérica (sistema octal para ser precisos). En este sistema, cada permiso de archivo está representado por un número.

  • r (leer)=4

  • w (escribir)=2

  • x (ejecutar)=1

  • – (sin permiso)=0

Con estos valores numéricos, puede combinarlos y así se puede usar un número para representar todo el conjunto de permisos.

0

1

-X

2

-w-

3 (i.e. 2+1)

-wx

4

r–

5 (i.e. 4+1)

rx

6 (i.e. 4+2)

rw-

7 (i.e. 4+2+1)

rwx

¿Puedes adivinar los permisos del archivo en números en el archivo agatha.txt en nuestro ejemplo hasta ahora? Así es, es 764.

Ahora que sabe qué número representa qué permiso, veamos cómo cambiar el permiso de un archivo utilizando este conocimiento.

Supongamos que desea cambiar el permiso del archivo en agatha.txt para que todos puedan leer y escribir pero nadie pueda ejecutarlo. En ese caso, puedes usar el comando chmod así:

chmod 666 agatha.txt

Si incluye agatha.txt ahora, verá que se ha cambiado el permiso.

-rw-rw-rw- 1 abhishek abhishek 457 Aug 10 11:55 agatha.txt

Usando chmod en modo simbólico

El problema con el modo absoluto es que siempre debes proporcionar tres números para los tres propietarios, incluso si deseas cambiar el permiso establecido para un solo propietario.

Aquí es donde puedes usar el modo simbólico con el comando chmod.

En modo simbólico, los propietarios se indican con los siguientes símbolos:

  • u=propietario del usuario

  • g=propietario del grupo

  • o=otro

  • a=todos (usuario + grupo + otro)

El modo simbólico utiliza operadores matemáticos para realizar los cambios de permisos:

  • + para agregar permisos

  • – para eliminar permisos

  • = para anular los permisos existentes con un nuevo valor

Ahora que lo sabes, veamos cómo usar el comando chmod en modo simbólico.

En nuestro ejemplo anterior, si desea agregar permiso de ejecución para el propietario del grupo, puede usar el comando chmod como este:

chmod g+x agatha.txt

Si observa los permisos de este archivo ahora, verá que se ha agregado el permiso de ejecución:

-rw-rwxrw- 1 abhi linux-console 457 Aug 10 11:55 agatha.txt

También puede combinar varios cambios de permisos en un solo comando. Suponga que desea eliminar el permiso de lectura y escritura y agregar permisos de ejecución para Otros. También desea agregar permiso de ejecución para el propietario del usuario. Puedes hacerlo todo con un solo comando:

chmod o-rw+x,u+x agatha.txt

Los permisos resultantes serían así:

-rwxrwx--x 1 abhi linux-console 457 Aug 10 11:55 agatha.txt

Si desea cambiar los permisos para los tres tipos de usuarios al mismo tiempo, puede usarlo de la siguiente manera:

chmod a-x agatha.txt

Esto eliminará el permiso de ejecución para todos.

-rw-rw---- 1 abhi linux-console 457 Aug 10 11:55 agatha.txt

Algunas personas consideran que convertir los permisos de archivos de un modo a otro es una tarea tediosa. Es por eso que creé esta pequeña herramienta que le permite calcular los permisos de archivos de Linux en varios modos en línea.

Cambiar la propiedad del archivo en Linux

Para cambiar la propiedad de un archivo, puede utilizar el comando chown. Puedes adivinar fácilmente que chown significa cambio de propietario.

Puede cambiar el usuario propietario de un archivo de la siguiente manera:

chown <new_user_name> <filename>

Si desea cambiar el usuario y el grupo, puede usar el comando chown como este:

chown <new_user_name>:<new_user_group> <filename>

Si solo desea cambiar el grupo, puede usar el comando chown de esta manera:

chown :<new_user_group> <filename>

o utilice el comando chgrp utilizado específicamente para cambiar el propietario del grupo de un archivo o directorio. Puedes adivinar que chgrp significa grupo de cambio.

chgrp <new_user_group> <filename>

En nuestro ejemplo hasta ahora, si desea cambiar el propietario del usuario y el grupo a root, puede usar el comando chown de esta manera:

sudo chown root:root agatha.txt

Esto cambiará la propiedad del archivo a raíz tanto para el usuario como para el grupo.

-rw-rw---- 1 root root 457 Aug 10 11:55 agatha.txt

¿Notas que tuve que usar sudo con chown? Es porque la raíz está involucrada aquí y para tratar con la raíz, necesitas derechos de superusuario.

Consejo: Dos grupos no pueden poseer el mismo archivo.

Consejo adicional: ¿Existe alguna prioridad en los permisos de archivos?

Piense en una situación en la que el propietario del usuario no tiene ningún permiso, el grupo tiene permiso de lectura mientras que otros tienen permisos de lectura y escritura.

----r--rw- 1 abhi linux-console 457 Aug 10 11:55 agatha.txt

Ahora, si el usuario abhi intenta leer el archivo usando el comando cat o less, ¿podrá hacerlo? La respuesta es no porque no tiene permiso de lectura.

Pero el usuario abhi es parte del grupo linux-console y el grupo tiene acceso de lectura. ¡Infierno! otro tiene permiso de lectura y escritura. Esto debería significar que todos (incluido el usuario abhi) pueden leer y escribir el archivo, ¿verdad? ¡Equivocado!

En Linux, la prioridad es del usuario, luego del grupo y luego de otro. El sistema Linux comprueba quién inició el proceso (cat o menos en nuestro ejemplo). Si el usuario que inició el proceso también es el propietario del archivo, se establecen los bits de permiso del usuario.

Si el propietario del archivo no inició el proceso, entonces el sistema Linux verifica el grupo. Si el usuario que inició el proceso está en el mismo grupo que el grupo propietario del archivo, se establecen los bits de permisos de grupo.

Si el propietario de este proceso ni siquiera está en el grupo como propietario del grupo del archivo, entonces se establecen los demás bits de permiso.

¿Qué sigue?

Espero que te haya gustado el artículo y que ahora comprendas mejor cómo funcionan los permisos de archivos en Linux.

Hay algunos permisos de archivos avanzados como SUID, GUID y bit adhesivo que puede aprender a continuación, si así lo desea.

Si tiene alguna pregunta o sugerencia o si simplemente quiere agradecer, deje un comentario a continuación. Si te gustó el artículo, compártelo en las redes sociales o en varios foros. Esto nos ayudará a nosotros y también a otros usuarios de Linux.