Cómo comprobar si un archivo tiene permisos específicos 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 verificar los permisos de archivos en Linux. Comprender los permisos de archivos es fundamental para gestionar el acceso a los archivos y la seguridad. Explorarás diferentes métodos para inspeccionar los permisos, comenzando con el comando básico ls -l para ver los permisos estándar de lectura, escritura y ejecución para el propietario, el grupo y otros.

Basándote en los conceptos básicos, luego profundizarás en el uso del comando stat --format para obtener una vista más detallada y personalizable de la información de los archivos, incluyendo los permisos en varios formatos. Finalmente, aprenderás cómo verificar las Listas de Control de Acceso (ACLs, por sus siglas en inglés) utilizando el comando getfacl, que proporciona una forma más detallada de gestionar los permisos de archivos más allá del propietario, el grupo y otros estándar.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/touch("File Creating/Updating") linux/BasicFileOperationsGroup -.-> linux/chmod("Permission Modifying") linux/FileandDirectoryManagementGroup -.-> linux/pwd("Directory Displaying") subgraph Lab Skills linux/ls -.-> lab-558710{{"Cómo comprobar si un archivo tiene permisos específicos en Linux"}} linux/touch -.-> lab-558710{{"Cómo comprobar si un archivo tiene permisos específicos en Linux"}} linux/chmod -.-> lab-558710{{"Cómo comprobar si un archivo tiene permisos específicos en Linux"}} linux/pwd -.-> lab-558710{{"Cómo comprobar si un archivo tiene permisos específicos en Linux"}} end

Verificar permisos de archivos con ls -l

En este paso, aprenderás cómo verificar los permisos de archivos en Linux utilizando el comando ls -l. Comprender los permisos de archivos es crucial para gestionar archivos y directorios de manera segura.

Los permisos de archivos determinan quién puede leer, escribir o ejecutar un archivo o directorio. En Linux, los permisos se asignan a tres categorías:

  • Propietario: El usuario que posee el archivo o directorio.
  • Grupo: Un grupo de usuarios que tienen permisos específicos.
  • Otros: Todos los demás usuarios del sistema.

Vamos a crear un archivo simple para examinar sus permisos. Asegúrate de estar en el directorio ~/project. Puedes confirmar tu directorio actual utilizando el comando pwd:

pwd

Deberías ver la salida:

/home/labex/project

Ahora, crea un archivo llamado my_file.txt utilizando el comando touch:

touch my_file.txt

El comando touch crea un archivo vacío si no existe.

A continuación, utiliza el comando ls -l para ver los detalles del archivo, incluyendo sus permisos:

ls -l my_file.txt

Verás una salida similar a esta:

-rw-rw-r-- 1 labex labex 0 Feb 13 10:00 my_file.txt

Vamos a desglosar la primera parte de la salida: -rw-rw-r--. Esta cadena representa el tipo de archivo y los permisos.

  • El primer carácter (-) indica el tipo de archivo. - significa que es un archivo regular. Otros tipos comunes incluyen d para un directorio y l para un enlace simbólico.
  • Los siguientes nueve caracteres se agrupan en tres conjuntos de tres:
    • El primer conjunto (rw-) muestra los permisos del propietario.
    • El segundo conjunto (rw-) muestra los permisos del grupo.
    • El tercer conjunto (r--) muestra los permisos de los otros.

Dentro de cada conjunto de tres caracteres:

  • r significa permiso de lectura.
  • w significa permiso de escritura.
  • x significa permiso de ejecución.
  • - significa que el permiso no está concedido.

En la salida de ejemplo -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 (-).
  • Los demás tienen solo permiso de lectura (r), pero no de escritura (-) ni de ejecución (-).

Los números y nombres que siguen a los permisos (1 labex labex 0 Feb 13 10:00) representan:

  • 1: El número de enlaces duros al archivo.
  • labex: El propietario del archivo.
  • labex: El grupo que posee el archivo.
  • 0: El tamaño del archivo en bytes.
  • Feb 13 10:00: La fecha y hora de la última modificación.
  • my_file.txt: El nombre del archivo.

Comprender la salida de ls -l es fundamental para trabajar con archivos y directorios en Linux.

Haz clic en Continuar para pasar al siguiente paso.

Inspeccionar permisos utilizando stat --format

En el paso anterior, utilizaste ls -l para ver los permisos de archivos. Otro comando poderoso para obtener información detallada sobre archivos y sistemas de archivos es stat. En este paso, utilizarás stat con la opción --format para inspeccionar específicamente los permisos de archivos de una manera más estructurada.

El comando stat puede mostrar diversas informaciones sobre un archivo, como el tamaño, los bloques, la hora de acceso, la hora de modificación y los permisos. La opción --format te permite especificar exactamente qué información deseas ver utilizando secuencias de formato.

Vamos a utilizar stat para ver los permisos del archivo my_file.txt que creaste en el paso anterior. Asegúrate de seguir estando en el directorio ~/project.

Escribe el siguiente comando y presiona Enter:

stat --format=%A my_file.txt

Deberías ver una salida similar a esta:

-rw-rw-r--

Esta salida es la misma cadena de permisos que viste con ls -l. La secuencia de formato %A le dice a stat que muestre los permisos del archivo en un formato legible por humanos, igual que ls -l.

Vamos a probar otra secuencia de formato. La secuencia %a muestra los permisos en notación octal. La notación octal es una representación numérica de los permisos, donde cada dígito representa los permisos para el propietario, el grupo y otros.

Escribe el siguiente comando y presiona Enter:

stat --format=%a my_file.txt

Deberías ver una salida similar a esta:

0664

Vamos a desglosar los permisos octales 0664:

  • El primer dígito (0) generalmente se ignora para los permisos básicos.
  • El segundo dígito (6) representa los permisos del propietario. En binario, 6 es 110. Esto corresponde a lectura (1), escritura (1) y ejecución (0). Por lo tanto, permisos de lectura y escritura.
  • El tercer dígito (6) representa los permisos del grupo. Nuevamente, 110 en binario, lo que significa permisos de lectura y escritura.
  • El cuarto dígito (4) representa los permisos de otros. En binario, 4 es 100. Esto corresponde a lectura (1), escritura (0) y ejecución (0). Por lo tanto, solo permiso de lectura.

Esto coincide con la salida -rw-rw-r-- de ls -l. La notación octal se utiliza a menudo cuando se cambian los permisos con el comando chmod, que quizás aprendas en un futuro laboratorio.

Utilizar stat --format te permite extraer piezas específicas de información sobre un archivo, lo cual puede ser muy útil en scripting o para análisis detallado.

Haz clic en Continuar para continuar.

Verificar listas de control de acceso con getfacl

Además de los permisos estándar de Linux (propietario, grupo, otros), algunos sistemas de archivos admiten Listas de Control de Acceso (ACLs, por sus siglas en inglés). Las ACLs proporcionan una forma más granular de definir permisos para usuarios o grupos específicos más allá de las tres categorías básicas.

El comando getfacl se utiliza para mostrar las ACLs de archivos y directorios. En este paso, utilizarás getfacl para comprobar si se han establecido ACLs en el archivo my_file.txt.

Primero, asegúrate de estar en el directorio ~/project:

pwd

Deberías ver /home/labex/project.

Ahora, ejecuta el comando getfacl en my_file.txt:

getfacl my_file.txt

Deberías ver una salida similar a esta:

## file: my_file.txt
## owner: labex
## group: labex
user::rw-
group::rw-
other::r--

Desglosemos la salida:

  • ## file: my_file.txt: Indica el archivo que se está examinando.
  • ## owner: labex: Muestra el propietario del archivo.
  • ## group: labex: Muestra el grupo principal del archivo.
  • user::rw-: Esta línea muestra los permisos para el propietario del archivo. user:: se refiere al usuario propietario, y rw- indica permisos de lectura y escritura. Esto corresponde a los permisos del propietario vistos con ls -l.
  • group::rw-: Esta línea muestra los permisos para el grupo propietario. group:: se refiere al grupo propietario, y rw- indica permisos de lectura y escritura. Esto corresponde a los permisos del grupo vistos con ls -l.
  • other::r--: Esta línea muestra los permisos para otros. other:: se refiere a todos los demás usuarios, y r-- indica permiso de lectura. Esto corresponde a los permisos de otros vistos con ls -l.

En este caso, la salida de getfacl simplemente refleja los permisos estándar de Linux. Si se hubieran establecido ACLs específicas para otros usuarios o grupos, aparecerían como líneas adicionales en la salida, como user:username:permissions o group:groupname:permissions.

Por ejemplo, si se hubiera establecido una ACL para dar a un usuario llamado testuser acceso de solo lectura, la salida podría incluir una línea como user:testuser:r--.

Dado que no se han establecido ACLs específicas en my_file.txt, getfacl muestra los permisos predeterminados derivados de los bits de permiso estándar.

Utilizar getfacl es esencial cuando necesitas entender el conjunto completo de permisos aplicados a un archivo o directorio, especialmente en entornos donde se utilizan ACLs.

Haz clic en Continuar para completar este laboratorio.

Resumen

En este laboratorio, aprendiste cómo verificar los permisos de archivos en Linux utilizando el comando ls -l. Creaste un archivo de muestra e interpretaste la salida de ls -l, comprendiendo el tipo de archivo y los permisos de lectura, escritura y ejecución para el propietario, el grupo y otros.

También exploraste métodos alternativos para inspeccionar los permisos de archivos. Utilizaste el comando stat --format para obtener detalles específicos de permisos en un formato más estructurado, y el comando getfacl para comprobar las Listas de Control de Acceso (ACLs, por sus siglas en inglés), que proporcionan un control de permisos más granular más allá de los estándares de propietario, grupo y otros.