GNU/Linux >> Tutoriales Linux >  >> Linux

Permisos de archivos de Linux:todo lo que necesita saber

Linux es un sistema operativo multiusuario que le permite configurar varias cuentas de usuario y grupos de usuarios para acceder a la misma computadora. Como puede imaginar, esto plantea algunos problemas de seguridad. Afortunadamente, Linux viene con potentes configuraciones y opciones de permisos de archivos que evitan que los usuarios accedan a las cosas confidenciales y sensibles de los demás.

Podrá definir diferentes grupos de usuarios y asignarles permisos de archivo adicionales. Sin los permisos adecuados, un usuario o grupo de usuarios no podrá obtener acceso a sus archivos y directorios, lo que mantiene segura toda su información.

Para esta lectura, hemos preparado una guía detallada sobre los permisos de archivos de Linux. Al final, debe tener una comprensión sólida de lo que significa cada permiso de archivo y cómo proteger sus archivos y directorios usando la funcionalidad.

Comprender la propiedad y los permisos de los archivos

Para comprender la propiedad y los permisos de los archivos de Linux, primero debe comprender los "usuarios" y los "grupos".

Usuario vs. Grupo

Linux le permite crear múltiples "usuarios". Esto ayuda a separar los archivos y directorios para las distintas personas que usan la computadora. Cada usuario tiene algunas propiedades específicas, incluida una identificación de usuario y un directorio de inicio.

Para ver los diferentes usuarios en su sistema, puede ingresar el siguiente comando en su terminal:

$ cat /etc/passwd

Para administrar a todos los usuarios, Linux introduce el concepto de "grupos". Puede crear uno o dos grupos y luego agregar todos los usuarios del sistema a uno o más de estos grupos, lo que le permite administrarlos más fácilmente.

También puede crear un grupo pero no llenarlo con ningún usuario, en cuyo caso será un grupo sin usuarios.

Pero, por otro lado, después de crear un usuario, automáticamente se asocia con el "grupo predeterminado". Por supuesto, puede agregar el usuario a un grupo diferente. Como tal, un usuario puede ser parte de varios grupos.

Para ver todos los grupos en su sistema, ingrese el siguiente comando en su terminal:

$ cat /etc/group

Nota:Después de ejecutar los dos comandos anteriores, notará que su sistema ya tiene toneladas de usuarios y grupos que no creó. Todos estos son usuarios y grupos del sistema. Estos son necesarios para ejecutar todos los procesos en segundo plano de forma segura.

Propiedad de archivos y concesión de permisos

Cada vez que un usuario crea un nuevo archivo o directorio, es "propiedad" del usuario y del grupo predeterminado del usuario. Además, cada archivo o directorio solo puede ser propiedad de un solo usuario y un solo grupo.

Entonces, ¿cómo permite que otros usuarios accedan a sus archivos y directorio? Aquí es donde debe establecer los permisos de archivo. Todos los archivos y directorios tienen tres tipos de clases de permisos. Estos son los siguientes:

  • Propietario:bajo esta clase, los permisos solo afectarán al propietario del archivo.
  • Grupo:bajo esta clase, el permiso afectará al grupo propietario del archivo. Sin embargo, si el propietario del archivo está en este grupo, utilice el permiso de "usuario" en lugar del permiso de "grupo".
  • Otro:bajo esta clase, los permisos afectarán a todos los demás usuarios que están en el sistema.

Puede asignar diferentes permisos a cada una de estas clases para controlar qué usuario y grupo obtienen qué nivel de acceso a sus archivos y directorios. Dicho esto, echemos un vistazo a los diferentes permisos que puede asignar.

Con Linux, obtiene acceso a tres tipos de permisos de archivo. Estos son los siguientes:

  • Leer:un archivo que tiene el permiso de lectura permite a los usuarios ver su contenido. Mientras que, si un directorio tiene permiso de lectura, los usuarios solo pueden ver el nombre de los archivos y otros directorios almacenados en él.
  • Escribir:un archivo que tiene el permiso de escritura permite a los usuarios modificar el contenido de ese archivo e incluso eliminarlo. Mientras que, para los directorios que tienen permiso de escritura, los usuarios pueden cambiar los archivos y directorios almacenados en ellos, así como crear nuevos archivos y directorios.

Nota:El permiso de escritura no tiene ningún efecto en un directorio a menos que el permiso de ejecución también esté habilitado. Esto se debe a que el sistema solo puede recuperar los permisos de una carpeta cuando se establece el bit de ejecución.

  • Ejecutar:un archivo solo necesita el permiso de escritura para que un usuario lo ejecute. Sin embargo, el permiso de lectura también debe estar habilitado, o de lo contrario no afectará. En el caso de un directorio que tenga el permiso de ejecución, el usuario podrá ingresar al directorio (usando el comando cd) y ver los metadatos de los archivos y directorios que contiene.

A estas alturas, debe tener una comprensión teórica básica del rol de los usuarios y grupos de Linux y los conceptos de propiedad y permisos de archivos. Así que con eso fuera del camino, veamos cómo podemos usarlos de manera práctica.

¿Cómo ver los permisos de archivo?

Es posible que ya sepa que al usar el comando ls, obtiene una lista de todos los archivos en un directorio específico. Sin embargo, no le brinda ningún detalle sobre la seguridad de los archivos. Para obtener esta información, necesitará usar el comando ls -l.

Esto te permitirá ejecutar el comando ls con la opción “lista larga” que te dará información detallada de cada uno de los archivos. Para hacer esto, puede usar el siguiente comando:

$ ls -l <path to directory>

Esto le dará información sobre los permisos de archivo del directorio dado. Alternativamente, si desea obtener los detalles de los permisos de archivo de su directorio actual, puede ingresar este comando:

$ ls -l

Para esta lectura, usaremos el comando ls -l en nuestro directorio de inicio.

Veamos qué significa esta información.

  1. Lo primero que debe tener en cuenta es que cada línea separada contiene información sobre los diversos archivos y directorios ubicados en el directorio desde donde ejecutó el comando.
  2. A continuación, el primer carácter de cada una de las líneas comenzará con un "-" que indica que es un archivo, la letra "d", que significa que es un directorio, o "l", que sugiere que es un archivo simbólico. Enlace. En la imagen de arriba, sabemos que Desktop es un directorio porque la línea comienza con "d". Sin embargo, hola mundo es un archivo porque comienza con "-".
  3. Después de eso, obtendremos nueve caracteres más que presentarán una combinación particular de las tres letras "r,w,x" y el símbolo "-". Se utiliza para indicar el permiso del archivo o directorio correspondiente. En una sección posterior, analizaremos cómo puede leer estos nueve caracteres para comprender los permisos del archivo.
  4. Después de esto, habrá dos columnas más. Esto identificará al propietario y al grupo del archivo o directorio. En el ejemplo anterior, como puede ver, todos los archivos y directorios pertenecen al propietario "raíz" y al grupo predeterminado "raíz".
  5. La siguiente columna le indicará el tamaño del archivo o directorio en bytes.
  6. Luego, tenemos dos columnas más que mostrarán la fecha y la hora en que se modificó el archivo por última vez.
  7. Y finalmente, la última columna mostrará el nombre del archivo o directorio.

Comprender los permisos de seguridad

Justo después del primer carácter de cada línea, los nueve caracteres siguientes se utilizan para mostrar los permisos del archivo o directorio correspondiente.

Consideremos el directorio del escritorio de la imagen de arriba. Tiene los permisos rwxr-xr-x. Pero, ¿qué significa esto?

Bueno, primero deberá dividir los nueve caracteres en tres segmentos que contengan tres caracteres cada uno. El primer segmento indica el permiso para el usuario, el segundo muestra el permiso para el grupo y el tercero muestra el permiso para el otro.

Como tal, el Usuario tiene permiso rwx. El grupo tiene permiso r-x.

Y finalmente, el otro tiene permiso r-x.

Aquí, "r" significa permisos de "lectura".

Entonces, "w" denota permisos de "escritura".

A continuación, "x" significa que tiene permisos de "ejecución".

Cada segmento tendrá estos permisos organizados en este orden:rwx. No encontrará una secuencia como rxw o wxr. Si se revocan los permisos de lectura, escritura o ejecución, notará que "-" reemplaza la letra correspondiente.

De este conocimiento, podemos deducir que bajo el directorio del Escritorio, el Usuario tiene permiso para leer, escribir y ejecutar. Mientras que el Grupo y el Otro solo tienen permisos de lectura y ejecución, pero no de escritura.

De manera similar, para el archivo hola mundo tiene los permisos rw-rw-r–. Esto significa que el Usuario y el Grupo tienen permisos de lectura y escritura, pero no de ejecución. Al mismo tiempo, el otro solo tiene permiso de lectura, sin permisos de escritura o ejecución.

Representación numérica y simbólica de permisos de archivos

En la sección anterior, le mostramos cómo se indican los permisos con las letras "r,w,x" junto con el símbolo "-". Esto se conoce como el modo simbólico. También hay otra forma de indicar los permisos de archivo:el modo numérico.

Para que sea más fácil de entender, reconsideremos el archivo hola mundo, que tiene los permisos rw-rw-r–.

De acuerdo con esto, el Usuario tiene permisos rw-. Como tal, los permisos de lectura y escritura están habilitados, mientras que el permiso de ejecución está deshabilitado.

Cada permiso habilitado se indica con un 1 y el permiso deshabilitado se indica con un 0. Al hacer esto, obtenemos un número binario, que en este caso es 110. A continuación, debemos convertirlo a octal, lo que nos da el número 6.

Por lo tanto, para el archivo hola mundo, el Usuario tiene permiso 6. De igual forma, el grupo también tiene permiso 6. Y el Otro tiene permiso 4. Así, en Modo Numérico, el permiso para el archivo hola mundo es 664.

El primer número en la representación numérica siempre representa el permiso del usuario, el segundo número se usa para describir el permiso del grupo y el tercero se usa para representar el permiso para todos los demás usuarios.

Puede pensar que será difícil convertir binario a octal sobre la marcha para establecer permisos para los archivos y directorios. Pero todo lo que necesitas hacer es recordar esto:

  • r =4
  • w =2
  • x =1
  •  – =0

Como tal, si desea crear un valor triple de rwx de r-x, el equivalente numérico será 4+0+1=5. De manera similar, para rw-, la representación numérica es 4+2+0=6. Y para el permiso rwx, la representación numérica es 4+2+1=7.

También hemos incluido una lista que muestra todos los modos numéricos equivalentes de cada triplete rwx posible.

  • El número "0" denota el triplete rwx "—".
  • El número "1" denota el triplete rwx "–x".
  • El número "2" denota el triplete rwx "-w-".
  • El número "3" denota el triplete rwx "-wx".
  • El número "4" denota el triplete rwx "r–".
  • El número "5" denota el triplete rwx "r-x".
  • El número "6" denota el triplete rwx "rw-".
  • El número "7" denota el triplete rwx "rwx".

Si encuentra que la representación del modo numérico de los permisos es un poco difícil de recordar, entonces no hay necesidad de preocuparse. La mayoría de las herramientas admiten el modo simbólico. Solo en circunstancias particulares, muy raras, necesitará usar el modo numérico.

El Comando “chmod”:Cambio de Permisos de Archivo

A estas alturas, debería tener una comprensión completa de cómo funcionan los permisos de archivo de Linux y cómo comprender qué permisos tienen los diferentes grupos de usuarios para un archivo o directorio determinado.

Entonces, con eso fuera del camino, hablemos de cambiar los permisos de archivo. Para hacer esto, primero creemos un nuevo archivo usando el siguiente comando:

$ touch file.txt

Esto va a crear un nuevo “archivo.txt” en el directorio desde donde estamos ejecutando el comando. A continuación, ejecutemos el comando ls -l para ver los permisos del archivo.

Como puede ver en la imagen, file.txt tiene permisos rw-rw-r–. A partir de esto, sabemos que ni el Usuario, Grupo u Otro tiene permiso para ejecutar el archivo. Cambiemos esto.

Para agregar el permiso de "ejecutar" a todos los usuarios, necesitamos usar el siguiente comando:

$ chmod a+x file.txt

Aquí, a indica que estamos cambiando el permiso para todos los usuarios, y +x indica que estamos "agregando permisos de ejecución".

Ahora, veamos si ha cambiado el permiso para el archivo ejecutando nuevamente el comando ls -l.

Como puede ver, en la imagen de arriba, los permisos de archivo para file.txt ahora se cambiaron a rwxrwxr-x, otorgando a todos los usuarios el permiso de ejecución.

Si no agrega la "a" en el comando, entonces el comando chmod asumirá que el cambio se aplica a todos los usuarios de manera predeterminada. Entonces puedes ingresar el comando:

$ chmod +x file.txt

Aparte de esto, chmod también aceptará las letras u, g y o usadas para indicar "Usuario", "Grupo" y "Otro". Además, en lugar del interruptor "+", puede usar el interruptor "-", que revocará el permiso.

Consideremos el siguiente comando como ejemplo:

$ chmod o-rx,g-w file.txt

En el comando anterior, usamos o-rx para eliminar los permisos de lectura y ejecución de Otro. Mientras que usamos g-w para eliminar el permiso de escritura del grupo. Tenga en cuenta que debemos agregar una coma (,) entre las dos acciones para separarlas.

Además del interruptor "+" y "-", también puede usar el "=" para definir permisos para un grupo de usuarios. En lugar de agregar o revocar permisos, el interruptor "=" se usa para establecer permisos específicos.

Tenga en cuenta el siguiente comando:

$ chmod u=rx, g=r file.txt

En el comando anterior, la parte u=rx establecerá el permiso para el Usuario como r-x. De manera similar, g=r establecerá el permiso para el grupo como r–.

Establecer permisos usando el modo numérico

También puede establecer permisos mediante el modo numérico. Por ejemplo, supongamos que desea configurar los permisos para file.txt como rwxr–r–. Al consultar la tabla anterior, puede ver que la representación numérica de este permiso es 744.

Como tal, todo lo que tenemos que hacer es ingresar el siguiente comando para cambiar los permisos del archivo.

$ chmod 744 file.txt

Establecer permiso para todos los archivos en un directorio

A veces, es posible que deba cambiar los permisos de todos los archivos que pertenecen a un directorio. Cambiarlos uno por uno llevará mucho tiempo y no es práctico. Para este propósito, tenemos el modificador -R.

Por ejemplo, supongamos que desea agregar permiso de ejecución a todos los archivos en el directorio Documentos solo para el usuario. Para hacer esto, puede ejecutar el siguiente comando:

$ chmod -R u+x Documents

Cambiar permisos para archivos y directorios que no son de su propiedad

El comando chmod solo le permite cambiar el permiso de los archivos y directorios que posee. En caso de que necesite cambiar el permiso de archivos y directorios que no son de su propiedad, deberá usar sudo.

$ sudo chmod <specify the file permissions> <specify the file/directory name>

Permisos especiales

A estas alturas, debería tener un conocimiento práctico de los permisos de archivos, la propiedad de los archivos y cómo cambiar los permisos de archivos para los diferentes grupos de usuarios.

Aparte de esto, también hay algunas "banderas de derechos de acceso". Estos se utilizan para proporcionar permisos especiales a los archivos y directorios.

Broca adhesiva

Primero, hablemos de la parte pegajosa. A veces, los usuarios necesitan compartir y colaborar en un archivo o directorio. En ese caso, deberá otorgar permisos de lectura, escritura y ejecución a todos los usuarios del sistema.

Pero, ¿qué sucede si un usuario elimina (o desordena) accidentalmente uno de los archivos del directorio? No podemos simplemente quitarles los privilegios de escritura, ya que dificultará su capacidad para trabajar con el archivo.

Aquí es donde entra en juego la parte pegajosa. Si configura el sticky bit en un directorio o archivo, solo el usuario raíz, el propietario del directorio y el propietario del archivo tendrán permiso para eliminarlo o eliminarlo. Ningún otro usuario tendrá la opción de eliminar o cambiar el nombre de los archivos y directorios habilitados para sticky bit, incluso si tienen los permisos necesarios.

De forma predeterminada, el sticky bit se usa en el directorio /tmp. Como sabe, el directorio /tmp almacena los archivos temporales de todos los programas que se ejecutan en su sistema y que utilizan todos los diferentes usuarios de su sistema. Como tal, para evitar la eliminación accidental de los archivos temporales importantes, Linux, de forma predeterminada, configura el bit fijo en /tmp.

Para establecer el sticky bit en uno de sus directorios, puede usar el siguiente comando:

$ chmod +t <directory_name>

Aquí, "t" es el carácter que se usa para representar el sticky bit, y estamos usando el interruptor "+" para agregar el sticky bit al directorio.

De manera similar, para eliminar el sticky bit de un directorio, podemos usar el siguiente comando:

$ chmod -t <directory_name>

Bit de Setuid y Setgid

El bit setuid se usa para ejecutar un archivo como el usuario propietario del archivo. El bit setgid se usa para ejecutar un archivo como el grupo propietario del archivo. El bit setuid se usa en archivos y no afecta a los directorios. Sin embargo, el bit setgid se puede usar en directorios.

Permite que los nuevos archivos y subdirectorios creados dentro del directorio hereden el grupo propietario en lugar del grupo predeterminado del usuario. Además, los nuevos subdirectorios bajo el directorio tendrán establecido el bit setgid, pero los archivos antiguos no se verán afectados.

Para configurar el bit setuid en un archivo, puede usar el siguiente comando:

$ sudo chmod +s <file_name>

Mientras que para eliminar el bit setgid, deberá usar -s en su lugar. Del mismo modo, para establecer el setgid en un archivo, puede usar el comando:

$ sudo chmod g+s <file_name>

Y para eliminarlo, deberá usar g-s.

Conclusión

Como puede ver, Linux ofrece funciones sólidas y completas para gestionar los derechos de los usuarios sobre los archivos y directorios del sistema. Esperamos que este artículo le haya ayudado a comprender cómo se implementan estos permisos. Sin embargo, si tiene alguna duda o pregunta sobre los permisos de archivos de Linux, no dude en dejarnos un comentario.

Además, si está comenzando con Linux, debe marcar nuestra serie de artículos Aprenda Linux. Cubre toneladas de tutoriales y guías útiles para principiantes y usuarios avanzados para ayudarlos a aprovechar al máximo su sistema Linux.


Linux
  1. Directorio tmp de Linux:todo lo que necesita saber

  2. Compresión de archivos de Linux:todo lo que necesita saber

  3. Swappiness en Linux:Todo lo que necesitas saber

  4. Linux – ¿Todo es un archivo?

  5. Todo lo que necesita saber sobre el sistema de archivos de Linux

Todo lo que necesita saber sobre la distribución Linux Mint

Todo lo que necesita saber sobre los inodos en Linux

Todo lo importante que necesita saber sobre Hard Link en Linux

Todo lo importante que necesita saber sobre UID en Linux

Todo lo que necesita saber sobre el directorio /tmp de Linux

Enlaces duros y enlaces blandos en Linux:todo lo que necesita saber