GNU/Linux >> Tutoriales Linux >  >> Linux

Permisos y propiedad de archivos de Linux explicados con ejemplos

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

Esta es la razón por la que UNIX y, por lo tanto, Linux (Linux es un sistema similar a Unix) tiene medidas de seguridad integradas. Esto garantiza que solo los usuarios deseados puedan acceder, modificar o ejecutar un archivo o directorio.

A qué archivo accedería qué usuario se decide por dos factores en Linux:

  • Propiedad del archivo
  • Permiso de archivo

Comprender la propiedad y el permiso 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 usar el término archivo aquí, pero también se aplica a los 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 crea un archivo, se convierte 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 determinado grupo (s). 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 administración de sistemas que acceden al mismo sistema, debe crear grupos separados para ellos. De esta manera, puede administrar los archivos y la seguridad del sistema de manera efectiva. 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 siendo parte de muchos grupos. Las distribuciones como Ubuntu también crean un grupo con el mismo nombre que el nombre del usuario.

💡Ejecuta 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 solo usuario, Grupo es una colección de usuarios y Otro consta de 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 copiar los archivos 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 los archivos en Linux

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

Puede usar el 'comando stat' o el 'comando ls' para verificar 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 itsfoss 457 Aug 10 11:55 agatha.txt

Permítanme explicar esta salida con una imagen:

Permítanme explicar con más detalle toda la salida 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 conjunto de permisos en un archivo. Lo explicaré en detalle en la siguiente sección.
  • Recuento de enlaces fijos :Muestra si el archivo tiene enlaces duros. El recuento predeterminado es uno.
  • Usuario :El usuario propietario de los archivos.
  • Grupo :El grupo que tiene acceso a este archivo. Solo un grupo puede ser propietario de un archivo a la vez.
  • Tamaño del 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 la salida del comando ls -l, concentrémonos en la parte de permisos del archivo.

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
  • –:No se ha establecido ningún permiso

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 (ver la sección de propiedad) en el orden de Usuario, Grupo y Otro.

Esta imagen lo explicará mejor:

Entonces, si observa la imagen de arriba ahora, puede decir lo siguiente sobre los permisos de archivo:

  • 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? Tienes la información del grupo en la salida del comando ls -l (es decir, group itsfoss).
  • El archivo solo tiene permiso de lectura para Otros, es decir, todos los que tienen acceso al sistema. No necesita saber cuál es el otro porque "otro" significa todos los usuarios.

Ahora, si ve el comando ls -l completo una vez más, puede leer los permisos y la propiedad del archivo juntos.

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

El archivo agatha.txt es propiedad del usuario abhi y abhi tiene permisos 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 raíz 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 archivo.

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 <username> . Deje el nombre de usuario en blanco si está tratando de 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 archivo en Linux

Puede usar el comando chmod para cambiar los permisos en 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 usar 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, por lo tanto, se puede usar un número para representar todo el conjunto de permisos.

¿Puedes adivinar el permiso 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 archivo usando este conocimiento.

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

chmod 666 agatha.txt

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

-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 debe proporcionar tres números para los tres propietarios, incluso si desea cambiar el conjunto de permisos para un solo propietario.

Aquí es donde puede 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 sabe, 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 en este archivo ahora, verá que ahora se ha agregado el permiso de ejecución:

-rw-rwxrw- 1 abhi itsfoss 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 Otro. 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 itsfoss 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 itsfoss 457 Aug 10 11:55 agatha.txt

Algunas personas consideran que convertir los permisos de archivo de un modo a otro es un trabajo tedioso. 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 usar el comando chown. Puede 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 use el comando chgrp que se usa específicamente para cambiar el propietario del grupo de un archivo o directorio. Puedes adivinar que chgrp significa cambio de grupo.

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 así:

sudo chown root:root agatha.txt

Esto cambiará la propiedad del archivo a root tanto para el usuario como para el grupo.

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

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

Consejo :Dos grupos no pueden poseer el mismo archivo.

Consejo adicional:¿Existe una prioridad en los permisos de archivo?

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 itsfoss 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 itsfoss 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? ¡Error!

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

Si el propietario del archivo no inició el proceso, 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 bits de permisos de grupo.

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

¿Qué sigue?

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

Hay algunos permisos de archivo avanzados como SUID, GUID y sticky bit que puede aprender a continuación, si lo desea.

Si tiene alguna pregunta o sugerencia o si solo quiere decir gracias, por favor 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 a otros usuarios de Linux también.


Linux
  1. Cómo copiar permisos y propiedad de archivos a otro archivo en Linux

  2. Ordenar comando en Linux con ejemplos

  3. Comandos de cabeza y cola en Linux explicados con ejemplos

  4. Permisos de archivo en Linux con ejemplo

  5. Verifique los permisos de archivos de Linux con ls

Marcas de tiempo de archivos de Linux explicadas con ejemplos

Comando Tr en Linux explicado con ejemplos

Uso del comando Linux mv con ejemplos

Ejemplos de comandos chmod de Linux

Explicación del comando tee de Linux (con ejemplos)

Comprender los permisos básicos de archivos y la propiedad en Linux

    Número Permiso
    0
    1 –x
    2 -w-
    3 (es decir, 2+1) -wx
    4 r–
    5 (es decir, 4+1) r-x
    6 (es decir, 4+2) rw-
    7 (es decir, 4+2+1) rwx