Cómo comprobar si un archivo es legible en Linux

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo comprobar si un archivo es legible en Linux utilizando diversas herramientas de línea de comandos. Comenzarás utilizando el comando fundamental test -r para comprobar programáticamente los permisos de lectura, y entenderás su uso en expresiones condicionales.

A continuación, explorarás el comando ls -l para inspeccionar visualmente los permisos de los archivos, y obtendrás información sobre la cadena de permisos y su significado. Finalmente, profundizarás en el comando stat para obtener información detallada sobre un archivo, incluyendo sus permisos de acceso y otros metadatos. Al completar estos pasos, adquirirás habilidades prácticas para determinar la legibilidad de archivos en un entorno Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/InputandOutputRedirectionGroup(["Input and Output Redirection"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/test("Condition Testing") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/FileandDirectoryManagementGroup -.-> linux/pwd("Directory Displaying") linux/InputandOutputRedirectionGroup -.-> linux/redirect("I/O Redirecting") subgraph Lab Skills linux/echo -.-> lab-558713{{"Cómo comprobar si un archivo es legible en Linux"}} linux/test -.-> lab-558713{{"Cómo comprobar si un archivo es legible en Linux"}} linux/ls -.-> lab-558713{{"Cómo comprobar si un archivo es legible en Linux"}} linux/pwd -.-> lab-558713{{"Cómo comprobar si un archivo es legible en Linux"}} linux/redirect -.-> lab-558713{{"Cómo comprobar si un archivo es legible en Linux"}} end

Comprobar la legibilidad con test -r

En este paso, aprenderás cómo comprobar si tienes permisos de lectura para un archivo utilizando el comando test con la opción -r.

El comando test es un comando incorporado en la shell que evalúa expresiones condicionales. A menudo se utiliza en scripts de shell para tomar decisiones. La opción -r específicamente comprueba si un archivo existe y es legible por el usuario actual.

Vamos a crear un archivo simple para probar esto. Utilizaremos el comando echo para poner algún texto en un archivo llamado my_file.txt en tu directorio ~/project.

Escribe el siguiente comando y presiona Enter:

echo "This is a test file." > ~/project/my_file.txt

Este comando crea el archivo ~/project/my_file.txt y escribe la cadena "This is a test file." en él. El símbolo > redirige la salida del comando echo al archivo especificado.

Ahora, vamos a usar test -r para comprobar si puedes leer este archivo. El comando test en sí no produce salida si la condición es verdadera. Por lo general, lo combinamos con otros comandos como echo para ver el resultado.

Escribe el siguiente comando y presiona Enter:

test -r ~/project/my_file.txt && echo "File is readable."

El operador && significa "ejecuta el comando de la derecha solo si el comando de la izquierda tiene éxito (devuelve un estado de salida cero)". Si test -r ~/project/my_file.txt es verdadero (lo que significa que el archivo es legible), se ejecutará el comando echo.

Deberías ver la salida:

File is readable.

Ahora, intentemos comprobar un archivo que no existe.

Escribe el siguiente comando y presiona Enter:

test -r ~/project/non_existent_file.txt && echo "This won't be printed."

Dado que ~/project/non_existent_file.txt no existe, test -r devolverá un estado de salida distinto de cero (fracaso), y el comando echo no se ejecutará. No deberías ver ninguna salida de este comando.

El comando test es una herramienta fundamental para la escritura de scripts en Linux. Entender cómo usar sus diversas opciones, como -r, es crucial para escribir scripts robustos que puedan comprobar los permisos y la existencia de archivos antes de intentar realizar operaciones.

Haz clic en Continuar para pasar al siguiente paso.

Comprobar permisos con ls -l

En el paso anterior, utilizaste test -r para comprobar si un archivo es legible. Ahora, vamos a usar el comando ls con la opción -l para ver los permisos detallados de un archivo.

El comando ls lista el contenido de un directorio. La opción -l proporciona un formato de "listado largo", que incluye información sobre el tipo de archivo, permisos, número de enlaces duros, propietario, grupo, tamaño, fecha de modificación y nombre de archivo.

Veamos los permisos del archivo my_file.txt que creaste en el paso anterior. Asegúrate de estar en el directorio ~/project. Puedes confirmar tu directorio actual utilizando el comando pwd:

pwd

Deberías ver /home/labex/project.

Ahora, escribe el siguiente comando y presiona Enter:

ls -l my_file.txt

Verás una salida similar a esta:

-rw-rw-r-- 1 labex labex XX Month XX XX:XX my_file.txt

Desglosemos la primera parte de la salida, que representa el tipo de archivo y los permisos:

-rw-rw-r--

Esta cadena de diez caracteres te dice mucho sobre los permisos del archivo.

  1. El primer carácter indica el tipo de archivo:

    • - significa que es un archivo regular.
    • d significa que es un directorio.
    • l significa que es un enlace simbólico.
    • (Hay otros tipos, pero estos son los más comunes).
  2. Los siguientes nueve caracteres se agrupan en tres conjuntos de tres:

    • El primer conjunto (rw-) muestra los permisos para el propietario del archivo.
    • El segundo conjunto (rw-) muestra los permisos para el grupo al que pertenece el archivo.
    • El tercer conjunto (r--) muestra los permisos para otros (todos los demás).

Dentro de cada conjunto de tres caracteres:

  • El primer carácter indica el permiso de lectura (r). Si hay un guión (-), el permiso de lectura está denegado.
  • El segundo carácter indica el permiso de escritura (w). Si hay un guión (-), el permiso de escritura está denegado.
  • El tercer carácter indica el permiso de ejecución (x). Si hay un guión (-), el permiso de ejecución está denegado.

Así, para my_file.txt con permisos -rw-rw-r--:

  • El propietario (labex) tiene permisos de lectura (r) y escritura (w), pero no de ejecución (-).
  • El grupo (labex) tiene permisos de lectura (r) y escritura (w), pero no de ejecución (-).
  • Otros tienen permiso de lectura (r), pero no de escritura (-) ni de ejecución (-).

Esta salida confirma que el propietario (labex) tiene permiso de lectura, por lo que test -r funcionó en el paso anterior.

Comprender la salida de ls -l es fundamental para administrar archivos y directorios en Linux y controlar quién puede acceder a ellos.

Haz clic en Continuar para continuar.

Inspeccionar el acceso a archivos con stat

En este paso, utilizarás el comando stat para obtener información detallada sobre un archivo, incluyendo sus tiempos de acceso, modificación y cambio, así como sus permisos en formatos simbólicos y numéricos.

Si bien ls -l te da una buena visión general de los permisos, stat ofrece una mirada más profunda a los metadatos del archivo.

Vamos a usar stat en el archivo my_file.txt que creaste anteriormente en el directorio ~/project.

Escribe el siguiente comando y presiona Enter:

stat ~/project/my_file.txt

Verás una salida similar a esta:

  File: /home/labex/project/my_file.txt
  Size: XX          Blocks: X          IO Block: XXXX   regular file
Device: XXh/XXd Inode: XXXXXXXX    Links: X
Access: (0664/-rw-rw-r--)  Uid: (  XXXX/   labex)   Gid: (  XXXX/   labex)
Access: XXXX-XX-XX XX:XX:XX.XXXXXXXXXX +XXXX
Modify: XXXX-XX-XX XX:XX:XX.XXXXXXXXXX +XXXX
Change: XXXX-XX-XX XX:XX:XX.XXXXXXXXXX +XXXX
 Birth: -

Veamos algunas líneas clave de la salida:

  • File: El nombre del archivo.
  • Size: El tamaño del archivo en bytes.
  • Access: (0664/-rw-rw-r--): Esta línea muestra los permisos en dos formatos:
    • 0664: Esta es la representación numérica (octal) de los permisos. Cada dígito representa los permisos para el propietario, el grupo y otros, respectivamente.
      • 6 para el propietario: rwx (lectura = 4, escritura = 2, ejecución = 0) -> 4 + 2 + 0 = 6
      • 6 para el grupo: rwx (lectura = 4, escritura = 2, ejecución = 0) -> 4 + 2 + 0 = 6
      • 4 para otros: rwx (lectura = 4, escritura = 0, ejecución = 0) -> 4 + 0 + 0 = 4
      • El 0 inicial se utiliza a menudo para indicar notación octal.
    • -rw-rw-r--: Esta es la representación simbólica de los permisos, que aprendiste con ls -l.
  • Uid y Gid: El ID de usuario y el ID de grupo del propietario y del grupo del archivo, junto con sus nombres.
  • Access, Modify, Change: Estas líneas muestran las marcas de tiempo del archivo:
    • Access: La última vez que se accedió (se leyó) al archivo.
    • Modify: La última vez que se modificó el contenido del archivo.
    • Change: La última vez que se cambiaron los metadatos del archivo (como permisos, propietario, grupo).

El comando stat es muy útil cuando necesitas información detallada sobre las propiedades de un archivo, especialmente para scripting o solucionar problemas de permisos.

Ahora has aprendido tres formas diferentes de inspeccionar los permisos de archivos y la información de acceso en Linux: test -r, ls -l y stat. Estas son herramientas esenciales para trabajar con archivos en la línea de comandos.

Haz clic en Continuar para completar este laboratorio.

Resumen

En este laboratorio, aprendiste cómo comprobar si un archivo es legible en Linux utilizando el comando test con la opción -r. Practicaste la creación de un archivo y luego utilizaste test -r en conjunto con el operador && para imprimir condicionalmente un mensaje basado en la legibilidad del archivo. También observaste que test -r devuelve falso para archivos que no existen, lo que evita que se ejecuten comandos posteriores. Este paso demostró un método fundamental para comprobar los permisos de archivos de forma programática en scripting de shell.