Permisos de archivos en Linux/Unix: Cómo leer, escribir y cambiar

⚡ Resumen inteligente

En Linux y Unix, los permisos de archivo controlan quién puede leer, escribir y ejecutar cada archivo, protegiendo un sistema multiusuario a través de dos capas: la propiedad, que asigna un usuario, un grupo y otros, y los bits de permisos de lectura, escritura y ejecución.

  • 👥 Propiedad: Cada archivo y directorio pertenece a un usuario (propietario), a un grupo y a otros, a los que a veces se denomina el mundo.
  • 🔑 permisos: A cada clase de propietario se le aplican tres permisos: lectura (r), escritura (w) y ejecución (x).
  • 📃 Listado: El comando ls -l muestra una cadena de permisos como -rw-rw-r– para el propietario, el grupo y el mundo.
  • 🔢 Modo absoluto: El comando chmod con un número octal de tres dígitos establece permisos para las tres clases a la vez, por ejemplo, 764.
  • ➕ Modo simbólico: El comando chmod con u, g, o, a y +, -, = cambia una clase de propietario sin afectar a las demás.
  • 🧭 Comandos de propiedad: El comando chown cambia el propietario y el grupo, mientras que chgrp cambia solo el grupo.
  • 🤖 Ayuda de IA: Los asistentes de IA y GitHub Copilot pueden generar y explicar los comandos chmod y chown.

Permisos de archivos en Linux y Unix: cómo leer, escribir y cambiar

Permisos de archivo en Linux Unix decide quién puede leer, modificar o ejecutar cada archivo, lo que mantiene seguro un sistema compartido multiusuario. Esta página explica la propiedad de los archivos, los permisos de lectura, escritura y ejecución, y los comandos para modificarlos.

Linux es un clon de Unix, el sistema operativo multiusuario al que pueden acceder muchos usuarios simultáneamente. Linux también se puede usar en mainframes y servidores sin ninguna modificación. Pero esto plantea problemas de seguridad, ya que un usuario no autorizado o malintencionado puede corromper, modificar o eliminar datos cruciales. Para una seguridad efectiva, Linux divide la autorización en dos niveles:

  • Propiedad del activo:
  • Permiso

El concepto de permisos y propiedad de archivos es fundamental en Linux. Aquí explicamos los permisos y la propiedad en Linux y analizamos ambos. Comencemos con la propiedad.

Propiedad de archivos de Linux

Cada archivo y directorio de su sistema Unix/Linux tiene asignados tres tipos de propietarios, que se detallan a continuación. El siguiente diagrama muestra cómo se asigna la propiedad al usuario, al grupo y a otros usuarios.

Diagrama de propiedad de archivos de Linux que muestra el usuario, el grupo y otras clases de permisos.

El sistema de reservas de escritorios, interactivo y fácil de usar, ayuda a gestores y empresas a adaptarse a la nueva rutina laboral. El sistema inteligente optimiza espacios y horarios según necesidades reales.

Un usuario es el propietario del archivo. De forma predeterminada, la persona que creó un archivo se convierte en su propietario. Por lo tanto, a veces a un usuario también se le llama propietario.

Grupo procesos

A grupo de usuarios Puede contener varios usuarios. Todos los usuarios que pertenecen a un grupo tienen los mismos permisos de grupo de Linux para el archivo. Supongamos que tienes un proyecto en el que varias personas necesitan acceder a un archivo. En lugar de asignar permisos manualmente a cada usuario, puedes agregar a todos los usuarios a un grupo y asignarles permisos de grupo para el archivo, de modo que solo los miembros de ese grupo, y nadie más, puedan leer o modificar los archivos.

Otra

Cualquier otro usuario que tenga acceso a un archivo. Esta persona no creó el archivo ni pertenece a un grupo de usuarios que pudiera ser su propietario. En la práctica, esto significa que todos los demás pueden acceder a él. Por lo tanto, cuando se establecen permisos para otros usuarios, también se dice que se establecen permisos para todos.

Ahora surge la gran pregunta: ¿cómo distingue Linux entre estos tres tipos de usuarios para que un usuario 'A' no pueda afectar un archivo que contiene información o datos vitales de otro usuario 'B'? Es como no querer que un colega que trabaja en tu Computadora Linux para ver tus imágenes. Aquí es donde entran en juego los permisos, que definen el comportamiento del usuario.

Vamos a comprender el sistema de permisos en Linux.

Permisos de archivos de Linux

Cada archivo y directorio en su sistema Unix/Linux tiene definidos los siguientes tres permisos para los tres propietarios mencionados anteriormente.

  • Leer: Este permiso te otorga la autoridad para abrir y leer un archivo. El permiso de lectura en un directorio te permite listar su contenido.
  • Escribir: El permiso de escritura te da la autoridad para modificar el contenido de un archivo. El permiso de escritura en un directorio te da la autoridad para agregar, eliminar y renombrar archivos almacenados en él. Imagina que tienes permiso de escritura en un archivo, pero no en el directorio donde se encuentra. Podrás modificar el contenido del archivo, pero no podrás renombrarlo, moverlo ni eliminarlo del directorio.
  • Ejecutar: In WindowsUn programa ejecutable suele tener la extensión “.exe”, que permite ejecutarlo fácilmente. En Unix/Linux, no se puede ejecutar un programa a menos que se le otorgue el permiso de ejecución. Si este permiso no está configurado, es posible que se pueda ver o modificar el código del programa (siempre que se tengan permisos de lectura y escritura), pero no ejecutarlo.

Veamos los permisos de archivos en Linux con ejemplos. Al ejecutar ls -l en la terminal se obtiene:

ls -l

La captura de pantalla que aparece a continuación muestra la cadena de permisos en una lista larga.

Salida del comando ls -l de la terminal que muestra la cadena de permisos rw-rw-r-- para un archivo.

Aquí hemos resaltado '-rw-rw-r–', y este código de aspecto extraño es el que nos informa sobre los permisos de Unix otorgados al propietario, al grupo de usuarios y al mundo.

Aquí, el primer guion (-) indica que hemos seleccionado un archivo. El icono de abajo marca un archivo normal.

Pequeño icono que indica que el elemento listado es un archivo regular.

De lo contrario, si se tratara de un directorio, se habría mostrado una 'd', como en el listado a continuación.

Listado de terminal que muestra un directorio marcado con una "d" al principio de la cadena de permisos.

Los personajes son bastante fáciles de recordar.

  • r = permiso de lectura
  • w = permiso de escritura
  • x = permiso de ejecución
  • – = sin permiso

Veámoslo de esta manera. La primera parte del código es 'rw-'. Esto sugiere que el propietario 'Home' puede:

  • Leer el archivo
  • Escribir o editar el archivo

El propietario no puede ejecutar el archivo, ya que el bit de ejecución está configurado en '-'. El icono a continuación muestra el bit de ejecución desactivado y reemplazado por un guion.

Pequeño icono que muestra el bit de permiso de ejecución borrado a un guion

Por diseño, muchas distribuciones de Linux como Fedora, CentOS y Ubuntu Se añade un usuario a un grupo con el mismo nombre. Por ejemplo, el usuario 'tom' se añade a un grupo llamado 'tom'.

La segunda parte es 'rw-'. Es para el grupo de usuarios 'Home', y los miembros del grupo pueden:

  • Leer el archivo
  • Escribir o editar el archivo

La tercera parte es para el mundo, lo que significa cualquier usuario. Dice 'r–'. Esto significa que el usuario solo puede:

  • Leer el archivo

El desglose que se muestra a continuación asigna cada parte de la cadena de permisos al propietario, al grupo y al mundo.

Desglose de la cadena de permisos rw-rw-r-- en secciones de propietario, grupo y mundo.

Cambiar los permisos de archivos/directorios en Linux usando el comando 'chmod'.

Supongamos que no quieres que un compañero de trabajo vea tus imágenes personales. Esto se puede lograr cambiando los permisos de archivo.

Podemos usar 'chmod' comando, que significa 'cambiar modo'. Usando el comando, podemos establecer permisos (lectura, escritura, ejecución) en un archivo o directorio para el propietario, el grupo y todos los usuarios.

Sintaxis:

chmod permissions filename

Hay dos maneras de usar el comando:

  • modo absoluto
  • Modo simbólico

Modo absoluto (numérico) en Linux

En este modo, los permisos de archivo no se representan con caracteres, sino con un número octal de tres dígitos. La tabla siguiente muestra los números correspondientes a todos los tipos de permisos.

Número Tipo de permiso Símbolo
0 Sin autorización -
1 Implementación -X
2 Escribe. -w-
3 Ejecutar + Escribir -wx
4 Leer r–
5 Leer + Ejecutar rx
6 Leer y escribir rw-
7 Leer + Escribir + Ejecutar rwx

Veamos el comando chmod en acción, como se muestra en la ventana del terminal a continuación.

Ejecuta el comando `chmod 764` en la terminal sobre el archivo de muestra para cambiar sus permisos.

En la ventana de terminal anterior, hemos cambiado los permisos del archivo 'sample' a '764'. El código absoluto '764' indica lo siguiente:

  • El propietario puede leer, escribir y ejecutar.
  • El grupo de usuarios puede leer y escribir.
  • El mundo solo puede leer.

Esto se muestra como '-rwxrw-r–', como en el resultado que aparece a continuación.

Listado de terminal que muestra el archivo de muestra con la cadena de permisos -rwxrw-r-- después de chmod 764.

Así es como se pueden cambiar los permisos de usuario en Linux sobre un archivo asignándole un número absoluto.

Modo simbólico en Linux

En modo absoluto, se modifican los permisos de los tres propietarios. En modo simbólico, se pueden modificar los permisos de un propietario específico. Este modo utiliza símbolos matemáticos para modificar los permisos de los archivos Unix.

Operator Mareas Ideales para Lecciones
+ Agrega un permiso a un archivo o directorio
– Quita el permiso
= Establece el permiso y anula los permisos establecidos anteriormente.

Los distintos propietarios están representados de la siguiente manera.

El sistema de reservas de escritorios, interactivo y fácil de usar, ayuda a gestores y empresas a adaptarse a la nueva rutina laboral. El sistema inteligente optimiza espacios y horarios según necesidades reales. Denotaciones
u usuario / propietario
g grupo de XNUMX
o otros
a todos

No utilizaremos permisos numéricos como 755, sino caracteres como rwx. Veamos el ejemplo que se muestra a continuación.

Terminal que utiliza el comando simbólico chmod con u, g, o y +, -, = para cambiar permisos específicos.

Cambio de propiedad y grupo en Linux

Para cambiar la propiedad de un archivo o directorio, puede utilizar el siguiente comando:

chown user filename

En caso de que desee cambiar el usuario y el grupo de un archivo o directorio, utilice el comando:

chown user:group filename

Veamos esto en acción, como se muestra a continuación.

Terminal ejecutando el comando chown para cambiar el propietario y el grupo de un archivo.

En caso de que solo desee cambiar el propietario del grupo, utilice el comando:

chgrp group_name filename

'chgrp' significa cambiar grupo. La siguiente captura de pantalla muestra el comando chgrp en uso.

Terminal ejecutando el comando chgrp para cambiar solo el propietario del grupo de un archivo.

Tip

  • El archivo /etc/group contiene todos los grupos definidos en el sistema.
  • Puedes usar el comando “groups” para encontrar todos los grupos a los que perteneces, como se muestra a continuación.

Terminal ejecutando el comando groups para listar los grupos a los que pertenece el usuario.

  • Puedes usar el comando newgrp para trabajar como miembro de un grupo distinto al predeterminado, como se muestra a continuación.

Terminal ejecutando el comando newgrp para cambiar a un grupo diferente

  • No puede haber dos grupos que sean propietarios del mismo archivo.
  • En Linux no existen grupos anidados. Un grupo no puede ser subgrupo de otro.
  • x — ejecutar un directorio significa tener permiso para “entrar” en un directorio y obtener posible acceso a subdirectorios.
  • Existen otros permisos que se pueden configurar en archivos y directorios, los cuales se abordarán en un tutorial avanzado posterior.

Preguntas Frecuentes

Agrega el permiso de ejecución con `chmod`. El comando simbólico `chmod +x script.sh` otorga permisos de ejecución a todos, mientras que `chmod u+x script.sh` los otorga solo al propietario. Después de esto, puedes ejecutar el script directamente con `./script.sh` desde su directorio.

umask establece los permisos predeterminados que se eliminan de los archivos y directorios recién creados. Los archivos comienzan desde 666 y los directorios desde 777, luego el valor de umask es subtracted. Un umask común de 022 da archivos 644 y directorios 755. Ejecuta umask para ver el valor actual.

Estos son bits de permisos especiales. setuid ejecuta un programa con los derechos de su propietario, setgid lo ejecuta con los derechos del grupo o hace que los archivos nuevos hereden el grupo de un directorio, y el bit sticky permite que solo el propietario de un archivo lo elimine dentro de un directorio compartido como /tmp.

Sí. Solo el usuario root, o un usuario con permisos de sudo, puede cambiar el propietario de un archivo con chown. Un propietario normal puede ceder su archivo a un grupo al que pertenece, pero reasignarlo a otro usuario requiere privilegios de root por motivos de seguridad.

Ese error significa que no tienes permisos para modificar el archivo. Para ejecutar `chmod`, debes ser el propietario del archivo o tener permisos de superusuario (root); para ejecutar `chown`, generalmente necesitas permisos de superusuario. Añade `sudo` al principio del comando o cambia al propietario del archivo e inténtalo de nuevo.

Utilice la opción recursiva -R. `chmod -R 755 myfolder` aplica los permisos a la carpeta y a todos los archivos y subcarpetas que contiene, y `chown -R user:group myfolder` hace lo mismo con la propiedad. Utilice -R con precaución, ya que afecta a todos los elementos que se encuentran dentro de la carpeta.

Los asistentes de IA pueden traducir una solicitud como "haz que este script sea ejecutable solo para mí" al comando chmod correcto, explicar qué significa un modo como 755 y advertir sobre configuraciones riesgosas como 777. Las herramientas de seguridad de aprendizaje automático también señalan los archivos cuyos permisos parecen peligrosamente abiertos.

Sí. Copiloto de GitHub Puede sugerir comandos chmod, chown y chgrp a partir de un breve comentario que describa los permisos o el propietario que desea, y completarlos a medida que escribe. RevRevisa cada sugerencia antes de ejecutarla, ya que los cambios de permisos y propiedad afectan la seguridad.

Resumir este post con: