Bienvenidos a esta Guía Rápida de Linux para Hackers #11 Creación de Archivos desde la Shell. Comparte este articulo y síguenos para recibir más capítulos y cursos gratis.

Esta guía es parte de un curso mucho más grande en donde te enseñamos a convertirte en hacker de 0 a 100. Desde los conocimientos más básicos hasta conseguir empleo.

En esta guía veremos desde cero un tema tan amplio como es Linux y lo haremos desde el punto de vista del hacking y la ciberseguridad.

Para saber más comente a continuación, respondemos todos y cada uno de los comentarios.

Índice

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Lista de aprendizajes del artículo sobre archivos en Linux

  1. Concepto de archivos en Linux:
    • Comprender que en Linux todo es un archivo, desde programas hasta dispositivos y particiones.
    • Distinguir entre mayúsculas y minúsculas al nombrar archivos.
  2. Tipos de archivos en Linux:
    • Identificar los diferentes tipos de archivos: regulares, directorios, bloques, enlaces simbólicos y más.
  3. Crear archivos con diferentes métodos:
    • Usar comandos como cat, touch, echo, printf y editores de texto (vim, nano).
  4. Gestión básica de archivos:
    • Comandos como rm (eliminar), mv (mover/renombrar) y cp (copiar).
  5. Modificación de marcas de tiempo con touch:
    • Cambiar las marcas de acceso, modificación y estado de un archivo.
  6. Identificación de tipos de archivos:
    • Usar el comando file para determinar el tipo de archivo basado en su contenido.
  7. Exploración avanzada con rangos:
    • Listar tipos de archivos en directorios o dentro de rangos específicos.
  8. Importancia de la manipulación de archivos en seguridad:
    • Técnicas para ocultar actividad maliciosa mediante manipulación de marcas de tiempo y creación de archivos discretos.

Archivos de Linux

En el sistema Linux, todo es un archivo y, si no es un archivo, es un proceso. Un archivo no solo incluye archivos de texto, imágenes y programas compilados, sino que también incluye particiones, controladores de dispositivos de hardware y directorios. Linux considera todo como un archivo.

Los archivos siempre distinguen entre mayúsculas y minúsculas. Veamos esto con un ejemplo.

En el ejemplo anterior, tenemos dos archivos denominados ‘Demo.txt’ y ‘demo.txt’. Si bien ambos comparten el mismo nombre, siguen siendo dos archivos diferentes.

Tipos de archivos:

  1. Archivos regulares (-): Contienen programas, archivos ejecutables y archivos de texto.
  2. Directorio de archivos (d): Se muestra en color azul. Contiene una lista de archivos.
  3. Archivos especiales
    • Archivo de bloque (b)
    • Archivo de dispositivo de caracteres (c)
    • Archivo de canalización con nombre (p)
    • Archivo de enlace simbólico (l)
    • Archivo(s) de socket

Comandos de archivos de Linux

DominioDescripción
fileDetermina el tipo de archivo.
touchSe utiliza para crear un archivo.
rmPara eliminar un archivo.
cpPara copiar un archivo.
mvPara renombrar o mover un archivo.
renamePara cambiar el nombre del archivo.

Crear archivo en Linux

El sistema de archivos de Linux considera todo como un archivo, ya sean imágenes de archivos de texto, particiones, programas compilados, directorios o dispositivos de hardware. Si no es un archivo, entonces debe ser un proceso. Para administrar los datos, forma una estructura de árbol.

Los archivos de Linux distinguen entre mayúsculas y minúsculas, por lo que laprovittera.txt y Laprovittera.txt se considerarán dos archivos diferentes. Existen varias formas de crear un archivo en Linux. Algunos métodos convencionales son los siguientes:

  • usando el comando cat
  • usando el comando touch
  • Usando el símbolo de redirección “>”
  • usando el comando echo
  • usando el comando printf
  • usando un editor de texto diferente como vim, nano, vi

Además de todos los métodos anteriores, también podemos crear un archivo desde el administrador de archivos del escritorio. Veamos los métodos anteriores en detalle:

1. Uso del comando cat

El comando cat es uno de los comandos más utilizados en Linux . Se utiliza para crear un archivo, mostrar el contenido del archivo, concatenar el contenido de varios archivos, mostrar los números de línea y más.

Existen varios comandos en Linux disponibles para visualizar el contenido de los archivos. El comando cat, que significa “concatenar”, a menudo se usa para ver rápidamente el contenido de archivos pequeños.

El comando cat mostrará todo el contenido del archivo, por lo que se recomienda principalmente para archivos pequeños para los que el resultado es limitado y no requiere desplazamientos de pantalla. Para ver el contenido de un archivo utilizando el comando cat, simplemente escriba el comando y utilice el nombre del archivo que desea ver como argumento:

cat [OPCIONES] [ARCHIVO]

Aquí veremos cómo crear archivos y agregarles contenido usando el comando cat .

En primer lugar, cree un directorio y nómbrelo New_directory , ejecute el comando mkdir de la siguiente manera:

mkdir hacker 

Cambiar directorio a este:

cd hacker

Producción:

Ahora ejecute el comando cat para crear un archivo:

cat   prueba.txt

El comando anterior creará un archivo de texto y entrará en el modo de edición. Ahora, ingrese el texto deseado y presione la tecla CTRL + D (CTRL + C también funciona) para guardar y salir del archivo y volverá a la línea de comandos.

Para mostrar el contenido del archivo, ejecute el comando cat de la siguiente manera:

 cat laprovittera.txt  

Considere el siguiente resultado:

El comando cat muestra todas líneas del archivo. Si lo usa para visualizar archivos más grandes, el comando cat puede generar un resultado muy largo que no puede pausarse o verse en secciones en la pantalla. Un mejor método para ver archivos de texto largos, es utilizar un comando de paginación con funcionalidad de pausa y que permite ver el contenido del archivo de interés en secciones.

2. Uso del comando touch

El comando touch también es uno de los comandos más populares en Linux. Se utiliza para crear un nuevo archivo, actualizar la marca de tiempo en archivos y directorios existentes . También puede crear archivos vacíos en Linux.

El comando touch es la forma más sencilla de crear un nuevo archivo desde la línea de comandos. Podemos crear varios archivos ejecutando este comando a la vez.

Para crear un archivo, ejecute el comando touch seguido del nombre del archivo como se indica a continuación:

touch carlos.txt  

Para listar la información del archivo creado, ejecute el siguiente comando:

ls – l carlos.txt  

Considere el siguiente resultado:

Para crear varios archivos a la vez, especifique los archivos y sus extensiones después del comando táctil junto con un espacio. Ejecute el siguiente comando para crear tres archivos a la vez:

touch carlos.html carlos.css carlos.js carlos.php

Para mostrar el archivo y su marca de tiempo, ejecute el comando ls de la siguiente manera:

 ls -l  

Considere el siguiente resultado:

Si pasamos el nombre de un archivo existente, cambiará la marca de tiempo de ese archivo.

Nota: La diferencia significativa entre el comando touch y cat es que usando el comando cat, podemos especificar el contenido del archivo desde el símbolo del sistema, mientras que el comando touch crea un archivo en blanco.

3. Uso del símbolo de redirección (>)

También podemos crear un archivo utilizando el símbolo de redirección (>) en la línea de comandos. Para crear un archivo, solo tenemos que escribir un símbolo de redirección (>) seguido del nombre del archivo. Este símbolo se utiliza principalmente para redirigir la salida. Hay dos formas de redirigir la salida. Si usamos el operador > , sobrescribirá el archivo existente y el operador >> agregará la salida.

Para crear un archivo con el operador de redirección (>), ejecute el comando de la siguiente manera:

 carlos.py  

El comando anterior creará un archivo, para mostrar la existencia del archivo creado, ejecute el siguiente comando:

ls -l carlos.py

Considere el siguiente resultado:

4. Uso del comando echo

El comando echo se utiliza para crear un archivo, pero debemos especificar el contenido del archivo en la línea de comando.

Para crear el archivo con el comando echo, ejecute el comando de la siguiente manera:

echo “hola mundo”   carlos.txt 

El comando anterior creará el archivo test6 . Para mostrar la existencia del archivo, ejecute el siguiente comando:

ls -l carlos.txt

Considere el siguiente resultado:

5. Uso del comando printf

También podemos crear un archivo mediante el comando printf . Para ello, debemos especificar el contenido del archivo en la línea de comandos.

Para crear un archivo con el comando printf, ejecute el comando de la siguiente manera:

printf “Hola Mundo”   hacker.txt  

Para mostrar los detalles del archivo, ejecute el comando ls de la siguiente manera:

ls -l hacker.txt

Para mostrar el contenido del archivo, ejecute el comando cat de la siguiente manera:

cat hacker.txt  

Considere el siguiente resultado:

6. Uso del editor de texto

También podemos crear un archivo usando los diferentes editores de texto como vim, nano, vi y más.

Usando el editor de texto Vim

Podemos crear un archivo utilizando el editor de texto Vim . Si no tiene instalado el editor Vim en su máquina, ejecute el siguiente comando:

sudo apt install vim  

Para crear un archivo usando el editor de texto vim, ejecute el siguiente comando:

 vim hacker.html

El comando anterior abrirá el editor de texto, presione la tecla i para ir al modo de inserción del editor.

Ingrese el contenido del archivo, presione la tecla Esc precedida por :wq para guardar y salir del archivo. El editor de texto se ve así:

Para mostrar la información del archivo, ejecute el comando ls de la siguiente manera:

ls -l hacker.html

Para ver el contenido del archivo, ejecute el comando cat de la siguiente manera:

 cat hacker.html

Considere el siguiente resultado:

7. Uso del editor Nano

Podemos crear un archivo utilizando el editor de texto nano . Para crear un archivo, ejecute el siguiente comando:

 nano laprovittera.txt  

El comando anterior abrirá el editor de texto nano. Ingrese el texto deseado y presione CTRL + X, luego escriba y para confirmar los cambios del archivo. Presione la tecla Enter para salir del editor.

El editor de texto nano se parece a la siguiente imagen:

Para mostrar la información del archivo, ejecute el siguiente comando:

ls -l laprovittera.txt  

Para ver el contenido del archivo, ejecute el siguiente comando:

  cat laprovittera.txt  .txt  

Considere el siguiente resultado:

Resumen y Puntos clave:

Concepto de archivos en Linux

En Linux, todo es tratado como un archivo, desde programas y documentos hasta dispositivos y particiones. Esto simplifica la manipulación del sistema, ya que todos los elementos se gestionan de forma similar. Además, el sistema distingue entre mayúsculas y minúsculas, por lo que archivo.txt y Archivo.txt son dos archivos diferentes.

Tipos de archivos en Linux

Los principales tipos de archivos incluyen:

  • Archivos regulares (-): Contienen datos, como texto o ejecutables.
  • Directorios (d): Contienen otros archivos o directorios.
  • Archivos especiales: Como archivos de bloques (b), dispositivos de caracteres (c), enlaces simbólicos (l), y más.

Comandos para gestionar archivos en Linux

  • file: Determina el tipo de archivo.
  • touch: Crea archivos vacíos o actualiza la marca de tiempo.
  • rm: Elimina archivos.
  • cp: Copia archivos.
  • mv: Mueve o renombra archivos.
  • rename: Cambia el nombre de archivos.

Uso del comando cat para crear archivos

El comando cat es uno de los más utilizados para manipular archivos. Permite crear archivos y agregar contenido directamente desde la terminal. Ejemplo:

cat > prueba.txt

Uso del comando touch para crear archivos vacíos

touch crea archivos vacíos y también actualiza las marcas de tiempo de archivos existentes. Ejemplo:

touch archivo.txt

Creación de archivos con redirección (>)

Usando el símbolo de redirección >, puedes crear archivos y sobrescribir el contenido. También puedes usar >> para agregar contenido sin sobrescribir. Ejemplo:

echo "Hola Mundo" > archivo.txt

Creación de archivos con echo y printf

echo: Permite crear archivos con contenido directamente desde la línea de comandos.printf: Similar a echo, pero más flexible para formatear el contenido. Ejemplo con printf:

printf “Contenido del archivo” > archivo.txt

Creación de archivos mediante editores de texto

Puedes usar editores de texto como Vim, Nano o Vi para crear y editar archivos. Estos editores permiten un control total sobre el contenido del archivo.

  • Vim: Abre el archivo con vim archivo.txt, ingresa texto y guarda con :wq.
  • Nano: Abre el archivo con nano archivo.txt, escribe y guarda con CTRL + X.
  • Vi: Similar a Vim, pero con algunas diferencias en comandos.

Ejemplo usando el editor Nano

nano archivo.txt Ingresar contenido, luego CTRL + X, y confirmar con “Y” para guardar.

Cada uno de estos métodos ofrece diferentes ventajas según el tipo de operación que quieras realizar, permitiendo crear archivos vacíos o con contenido específico, ya sea desde la terminal o usando editores interactivos.

El Comando Touch en Linux

El comando touch también es uno de los comandos más populares en Linux. Se utiliza para crear un nuevo archivo y actualizar la marca de tiempo en archivos y directorios existentes. También puede crear archivos vacíos en Linux.

El comando touch es la forma más sencilla de crear un nuevo archivo desde la línea de comandos. Podemos crear varios archivos ejecutando este comando a la vez.

Aunque, a primera vista, parece ser un comando trivial cuyo único propósito es crear archivos vacíos, su uso va mucho más allá. Comprender touch en profundidad puede ser crucial no solo para administradores de sistemas y desarrolladores, sino también para hackers que buscan aprovechar cada recurso disponible en el sistema para cumplir con sus objetivos.

  • Es lo mismo que abrir o crear un archivo y almacenarlo sin ninguna notificación sobre el contenido del archivo en su uso predeterminado.
  • El comando touch ignora el cierre, el guardado y la apertura del archivo. En cambio, actualiza las fechas relacionadas con el directorio o el archivo.
  • Una fecha de modificación o acceso actualizada puede ser importante para una variedad de otros programas, como utilidades de respaldo o utilidades de creación de interfaz de línea de comandos.
  • Estos programas normalmente se centran únicamente en archivos que se han modificado o creado después de la última ejecución del programa.
  • Además, el comando touch puede ser útil para crear rápidamente archivos para scripts o programas que necesitan un archivo con un nombre particular para estar disponible para el funcionamiento exitoso del programa, pero no necesitan que el archivo incluya ningún contenido específico.

SUS (Single Unix Specification) define que el comando touch debe modificar las horas de modificación, las horas de acceso o ambas para los archivos. El archivo se reconoce por una ruta de acceso importada como un argumento. Además, indica que si el archivo reconocido no existe, se crea el archivo y las horas de modificación y acceso se fijan según lo especificado. El comando touch aplica la hora actual si no se especifican nuevas marcas de tiempo.

¿Qué es el comando touch?

En su forma más básica, el comando touch se utiliza para crear archivos vacíos. Sin embargo, su propósito real es modificar las marcas de tiempo (timestamps) de un archivo. En sistemas Unix y basados en Unix como Linux, los archivos tienen tres marcas de tiempo asociadas:

  1. Acceso (atime): Indica la última vez que se accedió al archivo.
  2. Modificación (mtime): Indica la última vez que se modificó el contenido del archivo.
  3. Cambio de estado (ctime): Indica la última vez que se cambió el estado del archivo (como cambiar los permisos o el propietario).

El comando touch puede actualizar cualquiera de estas marcas de tiempo, lo que lo convierte en una herramienta útil en una variedad de situaciones, desde la automatización de tareas hasta la evasión de auditorías de seguridad.

Marcas de tiempo

Los archivos de Linux contienen tres marcas de tiempo: ctime, mtime y atime. Estas marcas de tiempo se explican a continuación:

  • atime: incluye detalles sobre cuándo se lee el contenido del archivo con comandos o herramientas para mostrar el contenido del archivo como head, grep, cat, vim, vi, nano, less, etc. La marca de tiempo atime se modifica y se actualiza cada vez que se verifica.
  • mtime: Muestra la última modificación del contenido de un archivo, como su nombre, pero solo el archivo en sí, no su permiso o propietario.
  • ctime: Además, ctime representa cuando se modifica cualquier archivo, pero también se actualiza si se modifica el permiso, el grupo o el acceso de propiedad sobre cualquier archivo. Podemos editar mtime y atime, pero no podemos modificar ctime. La hora se actualizará si se modifican los permisos de un archivo o si se modifican o leen los archivos.

Uso del comando touch

Para crear un archivo, ejecute el comando touch seguido del nombre del archivo como se indica a continuación:

touch carlos.txt  

Para listar la información del archivo creado, ejecute el siguiente comando:

ls - l carlos.txt  

Considere el siguiente resultado:

Para crear varios archivos a la vez, especifique los archivos y sus extensiones después del comando touch junto con un espacio. Ejecute el siguiente comando para crear tres archivos a la vez:

touch carlos.html carlos.css carlos.js carlos.php

Para mostrar el archivo y su marca de tiempo, ejecute el comando ls de la siguiente manera:

 ls -l  

Considere el siguiente resultado:

Si pasamos el nombre de un archivo existente, cambiará la marca de tiempo de ese archivo.

Nota: La diferencia significativa entre el comando touch y cat es que usando el comando cat, podemos especificar el contenido del archivo desde el símbolo del sistema, mientras que el comando touch crea un archivo en blanco.

Opciones de touch

OpciónFunción
touch -aPara cambiar el acceso a los archivos y la hora de modificación.
touch -mSe utiliza únicamente para modificar la hora de un archivo.
touch -rPara actualizar la hora de un archivo con referencia al otro archivo.
touch -tPara crear un archivo especificando la hora.
touch -cNo crea un archivo vacío.
-d=, –fecha=Esta opción se utiliza para modificar la marca de tiempo con una cadena de fecha.
-h, –no-dereferenceModifica la marca de tiempo de un enlace simbólico.
-f Sin efecto.La opción fuerza modificaciones en BSD antiguos.
–version, -vMuestra la versión del programa.
–helpMuestra el menú de ayuda.

Comando touch -a de Linux

El comando touch con la opción ‘a’ se utiliza para cambiar la hora de acceso a un archivo. De manera predeterminada, se utilizará la hora actual de su sistema.

Sintaxis:

touch -a  < nombre de archivo >  

Ejemplo:

touch -a carlos.txt

Para ver el tiempo de acceso y modificación de su archivo, debe utilizar el comando stat.

En la captura de pantalla anterior, hemos utilizado el comando ‘stat’ solo para verificar el estado de nuestro directorio (usr). Así que no te confundas con eso. Ahora puedes hacer coincidir el tiempo de acceso del directorio (usr) antes y después de pasar el comando ‘touch -a usr’. Ha tomado el tiempo de acceso predeterminado de nuestro sistema.

Comando touch -m de Linux

La opción touch ‘-m’ le ayudará a cambiar solo la hora de modificación de un archivo.

Sintaxis:

touch -m  < nombre de archivo >  

Ejemplo:

touch -m carlos.txt 

Observe atentamente que en la instantánea anterior solo se ha cambiado la hora de modificación.

Opción -r de touch en Linux

Este comando actualizará la hora con referencia al otro comando mencionado. Hay dos formas de utilizar este comando. Ambas funcionan de la misma manera.

En el siguiente ejemplo, queremos cambiar la marca de tiempo de ‘Demo.txt’ con referencia a ‘demo.txt’ . Primero, puedes escribirlo como:

touch -r demo.txt Demo.txt  

o

touch Demo.txt -r demo.txt  

Primero veremos el estado de ambos archivos antes de usar el comando touch.

Ahora, después de usar el comando touch -r carlos.txt carlos.html , la hora de carlos.html se ha cambiado con referencia a la hora de carlos.txt

Comando touch -c de Linux

El uso de la opción ‘c’ con el comando touch no creará un archivo vacío, si ese archivo no existe.

Sintaxis:

touch -c  < nombre_archivo >  

Ejemplo:

touch -c hola.txt 

En la figura anterior, queríamos crear el archivo hola.txt, pero con la opción ‘c’ no se creó ningún archivo.

Comando touch -t de Linux

Con este comando puedes cambiar el tiempo de acceso a un archivo determinando un tiempo específico para él.

Modificará la hora según la hora especificada en lugar de la hora predeterminada.

El formato del tiempo será:

touch -t AAAAMMDDhhmm.ss  

Establecer una marca de tiempo particular

Podemos utilizar el comando touch para fijar una marca de tiempo específica para un archivo. Por ejemplo:

touch -t  < marca de tiempo > < nombre de archivo >   

El formato de la marca de tiempo sigue un patrón particular:

[[CC]AA]MMDDhhmm[.ss]  

Dónde,

  • CC: Estos son los dos dígitos iniciales del año.
  • YY: Estos son los dos últimos dígitos del año.
  • MM: Muestra el mes.
  • DD: Muestra el día.
  • hh: Muestra la hora.
  • mm: Muestra los minutos.
  • ss: Muestra los segundos.

Configuración de la marca de tiempo del archivo con la cadena de datos

Podemos utilizar el comando touch con el indicador -d para establecer una marca de tiempo con una cadena de fecha. Su sintaxis es la siguiente:

touch -d  < cadena > < nombre de archivo >   

La cadena de fecha es un formato de hora ajustable y admite varios formatos de texto legibles para humanos. A continuación, se muestran algunos ejemplos:

  • Fechas del calendario, por ejemplo, 19 de agosto de 2020.
  • Hora del día, por ejemplo, 9:28 p.m. o 7:03 a.m.
  • Días de la semana, por ejemplo, martes, miércoles, etc.
  • Tiempo relativo, por ejemplo, hace 8 años, el próximo miércoles, ayer, etc.

La siguiente captura de pantalla muestra el estado del archivo carlos.html antes del comando touch y que la hora del archivo carlos.html ha sido modificada por nuestra hora especificada.

El comando touch tiene más opciones que puedes explorar

 touch –help

También  te recomendamos consultar las páginas man:

 man touch

La importancia del comando touch para hackers

Aunque el comando touch parece simple, su dominio puede ser clave para los hackers. Desde la creación de archivos discretos hasta la manipulación de marcas de tiempo para evadir auditorías de seguridad, touch ofrece una variedad de usos que los hackers pueden aprovechar en diferentes situaciones.

1. Ocultar actividad modificando las marcas de tiempo

Una de las primeras cosas que los administradores de sistemas revisan cuando sospechan de actividad maliciosa es la marca de tiempo de los archivos. Cambiar las marcas de tiempo de un archivo para que coincidan con archivos legítimos puede ser una forma eficaz de ocultar la presencia de un atacante en un sistema comprometido.

Ejemplo:

Si un atacante accede a un servidor y modifica un archivo, los administradores pueden detectar la actividad al notar que la marca de tiempo de modificación no coincide con los tiempos esperados. Sin embargo, utilizando touch, el atacante puede restablecer la marca de tiempo para que coincida con la última modificación legítima, lo que hace que sea más difícil detectar los cambios.

touch -r archivo_legitimo.txt archivo_modificado.txt

Este comando ajustará las marcas de tiempo de archivo_modificado.txt para que coincidan con las de archivo_legitimo.txt, disimulando cualquier modificación reciente.

2. Creación de archivos en ubicaciones críticas del sistema

Otro uso para los hackers es la creación de archivos en ubicaciones clave del sistema utilizando touch. Un atacante que haya obtenido acceso con privilegios podría crear archivos en directorios sensibles como /etc o /var para dejar atrás puertas traseras o scripts maliciosos que se ejecuten automáticamente.

Ejemplo:

Un atacante con acceso root podría usar touch para crear un archivo en /etc/init.d/ que contenga un script malicioso que se ejecute en cada reinicio del sistema.

touch /etc/init.d/backdoor

3. Uso en técnicas de ingeniería social

touch también puede ser empleado en técnicas de ingeniería social para hacer que archivos maliciosos parezcan inofensivos o antiguos. Un atacante podría cambiar las marcas de tiempo de un archivo ejecutable o de un script para que parezca haber sido creado hace años, disuadiendo a los administradores de sospechar que se trata de un archivo malicioso reciente.

Ejemplo:

touch -d "2015-06-20 15:00"malware.sh

Esto hará que malware.sh parezca haber sido creado en 2015, aunque en realidad acaba de ser colocado en el sistema.

4. Manipulación de archivos de log

Los archivos de registro o logs son una fuente de información valiosa para los administradores de sistemas y los analistas forenses. Un hacker podría manipular las marcas de tiempo de los archivos de log para hacer que los eventos maliciosos parezcan ocurridos en un momento diferente, lo que confunde a los investigadores.

Ejemplo:

Si un archivo de log muestra una actividad sospechosa a las 03:00, un atacante podría cambiar la marca de tiempo del archivo de log para que muestre una hora anterior o posterior:

touch -d "03:00"/var/log/syslog

De esta forma, los investigadores podrían no darse cuenta del momento real del ataque.

Comando de file de Linux

El comando file se utiliza para determinar el tipo de archivo. No le importa la extensión que se utilice para el archivo. Simplemente utiliza el comando file y nos indica el tipo de archivo. Tiene varias opciones.

Sintaxis:

file  < nombre_archivo >  

Ejemplo:

file carlos.txt

En la instantánea de arriba, puede ver el comando de archivo junto con diferentes argumentos, especificando sus tipos de archivo.

Nota: El comando File nos indica el tipo de archivo con la ayuda de un archivo magic que contiene todos los patrones para reconocer un tipo de archivo. La ruta del archivo magic es /usr/share/file/magic. Para obtener más información, ingrese el comando ‘man 5 magic’.

Opciones de comandos de File de Linux

OpciónFunción
file -sSe utiliza para archivos especiales.
file *Se utiliza para enumerar los tipos de todos los archivos.
file/nombre del directorio/*Se utiliza para enumerar los tipos de todos los archivos del directorio mencionado.
file [rango]*Enumerará todos los archivos comenzando por el alfabeto presentes dentro del rango dado.

File -s de Linux

El comando -s de Linux se utiliza para archivos especiales. Veamos un ejemplo sencillo de la opción -s del comando file.

Sintaxis:

file -s  < nombre_archivo >  

Ejemplo:

file -s /dev/sda  

File *

Este comando se utiliza para obtener el tipo de todos los archivos del directorio actual. Veamos un ejemplo sencillo del comando file*.

Ejemplo:

file *

En la instantánea de arriba, mi directorio actual y todos sus tipos de archivos aparecen enumerados arriba.

file /nombre del directorio/*

Con este comando, puede enumerar todos los tipos de archivos del directorio mencionado. Por ejemplo, si escribe el comando file /var/* , obtendrá el siguiente resultado.

Sintaxis:

file  < nombreDirectorio > *  

Ejemplo:

file /var/*  

file [rango]*

Con la ayuda de este comando, puede especificar un rango de alfabetos para los archivos que desee. Solo se mostrarán los archivos que comiencen con los alfabetos presentes en el rango.

Por ejemplo,

file [a-y]*, la salida será:  

y para el archivo [a-g]* , la salida será:

El comando file tiene más opciones que puedes explorar

 file –help

También  te recomendamos consultar las páginas man:

 man file

Resumen y Puntos clave:

Determinar el tipo de archivo con el comando file
El comando file en Linux se utiliza para identificar el tipo de archivo basándose en su contenido, no en su extensión.
Sintaxis:

file <nombre_archivo> 

Ejemplo:

file carlos.txt 

En este ejemplo, el comando identifica el tipo de archivo carlos.txt, mostrando que es un archivo de texto plano, sin importar su extensión.

Archivo magic y cómo funciona
El comando file se basa en un archivo llamado magic, que contiene patrones para identificar los tipos de archivos. Este archivo se encuentra en /usr/share/file/magic y define las reglas que utiliza el comando file para reconocer archivos. Para más detalles sobre el archivo magic, puedes consultar el manual:

man 5 magic

Opción file -s para archivos especiales
La opción -s permite que el comando file determine el tipo de archivos especiales, como dispositivos de bloque o archivos de dispositivos en /dev/.
Sintaxis:

file -s <nombre_archivo> 

Ejemplo:

file -s /dev/sda 

En este ejemplo, el comando examina el archivo especial /dev/sda y devuelve el tipo de dispositivo o archivo especial.

Enumerar tipos de archivos en el directorio actual (file *)
El comando file * lista los tipos de todos los archivos en el directorio actual.
Ejemplo:

file * 

Esto mostrará el tipo de cada archivo y subarchivo presente en el directorio actual.

Enumerar tipos de archivos en un directorio específico
Para obtener una lista de los tipos de archivos dentro de un directorio específico, se puede usar el comando file <nombre_directorio>/*.
Sintaxis:

file <nombre_directorio>/* 

Ejemplo:

file /var/* 

Esto listará los tipos de archivos en el directorio /var.

Especificar un rango de archivos con file
Puedes usar el comando file para listar los tipos de archivos que comiencen con ciertos caracteres dentro de un rango específico.
Sintaxis:

file [rango]* 

Ejemplo:

file [a-y]* 

Esto mostrará los tipos de todos los archivos cuyo nombre comience con las letras entre a y y.

Ejemplos prácticos:

Determinar el tipo de un archivo:

file documento.txt 

Este comando identificará si documento.txt es un archivo de texto, binario, ejecutable, etc.

Identificar archivos especiales con -s:

file -s /dev/sda 

Este comando mostrará el tipo de archivo especial en /dev/sda.

Listar tipos de todos los archivos en un directorio:

file /etc/* 

Esto mostrará los tipos de archivo de todos los archivos y directorios dentro de /etc.

Filtrar archivos por rango de nombres:

file [a-f]* 

Solo se mostrarán los archivos cuyos nombres comiencen con las letras entre a y f.

Opciones comunes del comando file:

  • file -s: Para archivos especiales como dispositivos en /dev/.
  • file *: Muestra los tipos de todos los archivos en el directorio actual.
  • file [rango]*: Especifica un rango de archivos basado en caracteres iniciales.
  • file -b: Muestra solo el tipo de archivo sin el nombre del archivo.
  • file --help: Muestra un resumen de todas las opciones disponibles.

Conclusión:

El comando file es una herramienta versátil para identificar archivos en Linux, proporcionando detalles sobre su tipo real basándose en su contenido, en lugar de su extensión. Con opciones como -s-r, y el uso de rangos, file ofrece un amplio rango de funcionalidades útiles tanto para usuarios comunes como administradores de sistemas.

Puntos clave del artículo con resúmenes

1. Concepto de archivos en Linux

  • Todo en Linux es tratado como un archivo o un proceso, lo que unifica la gestión del sistema.
  • El sistema distingue entre mayúsculas y minúsculas. Ejemplo: Archivo.txt y archivo.txt son diferentes.

2. Tipos de archivos

  • Archivos regulares (-): Contienen datos como texto o ejecutables.
  • Directorios (d): Contienen listas de archivos.
  • Archivos especiales: Incluyen dispositivos de bloques (b), caracteres (c), enlaces simbólicos (l), etc.

3. Métodos para crear archivos

  • cat para agregar contenido:
    • cat > archivo.txt crea un archivo y permite agregar texto.
    • Guardar con Ctrl + D.
  • touch para crear archivos vacíos:
    • touch archivo.txt crea un archivo vacío.
    • Útil para inicializar archivos para scripts.
  • Redirección > y >>:
    • > sobrescribe el archivo. Ejemplo: echo "texto" > archivo.txt.
    • >> agrega texto sin sobrescribir.
  • printf para formato específico:
    • printf "Contenido" > archivo.txt.
  • Editores de texto:
    • vim: Crear/editar archivos con comandos como :wq para guardar.
    • nano: Simple y fácil de usar con Ctrl + X para guardar y salir.

4. Comando touch y marcas de tiempo

  • Propósito:
    • Crear archivos o actualizar marcas de tiempo (acceso, modificación y estado).
  • Opciones útiles:
    • -a: Modifica el tiempo de acceso.
    • -m: Cambia la hora de modificación.
    • -r: Sincroniza marcas de tiempo entre archivos.
    • -t: Configura un tiempo específico. Ejemplo: touch -t 202311181530 archivo.txt.

5. Comando file para identificar tipos de archivos

  • Analiza el contenido del archivo, no su extensión.
    • Ejemplo: file archivo.txt podría identificarlo como «texto plano».
  • Opciones avanzadas:
    • file *: Enumera tipos de todos los archivos en un directorio.
    • file -s: Analiza archivos especiales como /dev/sda.
    • Rango de nombres: file [a-m]* lista archivos que comiencen con letras entre a y m.

6. Comandos esenciales de gestión de archivos

  • Eliminar archivos: rm archivo.txt.
  • Mover/renombrar archivos: mv archivo_viejo.txt archivo_nuevo.txt.
  • Copiar archivos: cp archivo_origen.txt archivo_destino.txt.

7. Seguridad y manipulación de archivos

  • Ocultación mediante marcas de tiempo:
    • touch -r archivo_legitimo archivo_modificado iguala marcas de tiempo.
  • Manipulación de registros (logs):
    • Ajustar marcas de tiempo para confundir auditorías. Ejemplo: touch -d "2023-01-01" log.txt.
  • Creación en ubicaciones críticas:
    • touch /etc/init.d/backdoor para persistencia en sistemas comprometidos.

Conclusión

Este artículo cubre fundamentos y técnicas avanzadas para trabajar con archivos en Linux. Desde la creación básica hasta la manipulación de marcas de tiempo y la identificación de tipos de archivos, estas habilidades son esenciales tanto para administradores de sistemas como para usuarios avanzados, incluyendo aplicaciones en ciberseguridad y hacking ético.

Pon en práctica lo aprendido

Ahora pon a prueba lo aprendido con estas preguntas y ejercicios.

Preguntas sobre el artículo:

  1. ¿Por qué en Linux se dice que todo es un archivo?
  2. ¿Qué diferencia existe entre un archivo regular y un directorio en Linux?
  3. Menciona tres tipos de archivos especiales en Linux y su uso.
  4. ¿Cuál es la diferencia principal entre los comandos cat y touch al crear archivos?
  5. ¿Qué hace el símbolo de redirección > al crear archivos en Linux?
  6. ¿Cómo se utiliza el comando touch para actualizar la marca de tiempo de un archivo existente?
  7. Explica el propósito de la opción -r en el comando touch.
  8. ¿Cómo puede un hacker usar el comando touch para modificar marcas de tiempo y evitar detección?
  9. ¿Qué información proporciona el comando file sobre un archivo?
  10. ¿Cómo se pueden enumerar los tipos de archivos en un directorio específico usando el comando file?

Ejercicios sobre el contenido:

  1. Crea un archivo llamado notas.txt usando el comando cat y escribe dentro «Este es un archivo de prueba».
  2. Usa el comando touch para crear tres archivos: index.html, style.css y script.js.
  3. Actualiza la marca de tiempo del archivo index.html al tiempo actual usando touch.
  4. Cambia la marca de tiempo de style.css para que coincida con la de index.html utilizando el comando touch.
  5. Usa el símbolo de redirección > para crear un archivo llamado log.txt y añade «Inicio del log».
  6. Crea un archivo con el comando echo llamado config.txt con el contenido «Configuración inicial».
  7. Usando el comando file, identifica el tipo del archivo script.js.
  8. Enumera los tipos de todos los archivos en el directorio actual utilizando el comando file.
  9. Cambia la marca de tiempo de log.txt a una fecha específica, por ejemplo, el 1 de enero de 2023 a las 10:00 AM, utilizando touch.
  10. Verifica el contenido del archivo notas.txt creado en el ejercicio 1 utilizando el comando cat.

Respuestas a las preguntas:

  1. En Linux, se dice que todo es un archivo porque el sistema trata no solo archivos tradicionales, sino también dispositivos, directorios y procesos como si fueran archivos. Esto simplifica su gestión.
  2. Un archivo regular contiene datos (texto, ejecutables, etc.), mientras que un directorio actúa como un contenedor para otros archivos y directorios.
  3. Tres tipos de archivos especiales en Linux son:
    • Archivo de bloque (b): usado para dispositivos que manejan datos en bloques, como discos duros.
    • Archivo de dispositivo de caracteres (c): representa dispositivos que transmiten datos carácter a carácter, como teclados.
    • Enlace simbólico (l): apunta a otro archivo o directorio.
  4. cat permite crear un archivo con contenido directamente desde la terminal, mientras que touch solo crea un archivo vacío.
  5. El símbolo de redirección > crea un archivo si no existe o sobrescribe su contenido si ya existe.
  6. El comando touch con un archivo existente actualiza sus marcas de tiempo a la hora actual.
  7. La opción -r en touch permite cambiar la marca de tiempo de un archivo para que coincida con la de otro archivo de referencia.
  8. Un hacker puede usar touch para alterar marcas de tiempo y hacer que sus actividades parezcan haber ocurrido en otro momento, dificultando la detección.
  9. El comando file proporciona información sobre el tipo de archivo, basándose en su contenido en lugar de su extensión.
  10. Para enumerar tipos de archivos en un directorio, se usa: file /ruta_del_directorio/*

Respuestas a los ejercicios:

  1. Crear archivo con cat y escribir contenido: cat > notas.txt Introduce el texto:
    Este es un archivo de prueba
    Guarda el archivo presionando: CTRL + D.
  2. Crear varios archivos con touch: touch index.html style.css script.js
  3. Actualizar marca de tiempo de un archivo: touch index.html
  4. Cambiar marca de tiempo de un archivo para que coincida con otro: touch -r index.html style.css
  5. Crear archivo con símbolo de redirección y añadir contenido: echo "Inicio del log" > log.txt
  6. Crear archivo con echo y contenido: echo "Configuración inicial" > config.txt
  7. Identificar tipo de archivo con file: file script.js
  8. Enumerar tipos de archivos en el directorio actual: file *
  9. Cambiar marca de tiempo de un archivo a una fecha específica: touch -t 202301011000.00 log.txt
  10. Verificar contenido de un archivo con cat: cat notas.txt Salida esperada:
    Este es un archivo de prueba.

No te detengas, sigue avanzando

Aquí tienes un propósito que debes considerar seriamente: si has querido mejorar tus habilidades en hacking, Ciberseguridad y programación ahora es definitivamente el momento de dar el siguiente paso. ¡Desarrolla tus habilidades aprovechando nuestros cursos a un precio increíble y avanza en tu carrera! El mundo necesita más hackers…

¿Te gustaría enterarte de cuando lanzamos descuentos y nuevos cursos?

Sobre los autores

Álvaro Chirou

Yo soy Álvaro Chirou, tengo más de 20 Años de experiencia trabajando en Tecnología, eh dado disertaciones en eventos internacionales como OWASP, tengo más de 1.800.000 estudiantes en Udemy y 100 formaciones profesionales impartidas en la misma. Puedes seguirme en mis redes:

Laprovittera Carlos

Soy Laprovittera Carlos. Con más de 20 años de experiencia en IT brindo Educación y Consultoría en Seguridad de la Información para profesionales, bancos y empresas. Puedes saber más de mi y de mis servicios en mi sitio web: laprovittera.com y seguirme en mis redes:

Hacker de 0 a 100 desde las bases hasta conseguir empleo

¿Quieres iniciarte en hacking y ciberseguridad pero no sabes por dónde empezar? Inicia leyendo nuestra guia gratuita: https://achirou.com/hacker-de-0-a-100-desde-las-bases-hasta-conseguir-empleo/ que te lleva de 0 a 100. Desde los fundamentos más básicos, pasando por cursos, recursos y certificaciones hasta cómo obtener tu primer empleo.

Hemos creado una ruta de 0 a 100. Un plan de desarrollo que va desde las bases: cómo aprender hacking, qué aprender, en qué orden; pasando por las areas técnicas necesarias como Linux, Redes, Programación y los conocimientos necesarios en ciber seguridad, hacking, pentesting hasta la práctica y el inicio laboral: Crear tu propio laboratorio, certificaciones, adquirir experiencia e iniciarse laboralmente.

Este es un mega post. Una guía con más de 250 artículos que te llevaran por el camino del hacker. Esta guía es gratuita y esta creada gracias al esfuerzo y al trabajo combinado de Alvaro Chirou y mío (Laprovittera Carlos).

Creamos esta guía (futuro curso) para que puedas iniciarte en este mundo. Puedes arrancar ahora, GRATIS, solo necesitas un PC, conexión a internet y paciencia (Ser hacker NO ES un camino de la noche a la mañana).

El Hacking y la ciberseguridad es una carrera divertida, emocionante y gratificante que te recompensará y desafiará por igual. Sin embargo, para quienes buscan adentrarse en este campo en auge y en constante evolución, puede resultar difícil saber por dónde empezar. ¡Ahí es donde entra en juego nuestra guía en ciberseguridad!

Esta es la hoja de ruta hacia el trabajo de ciberseguridad de tus sueños. Te ayudará a entender qué conocimientos, habilidades y certificados son necesarios para alcanzar tus metas profesionales y tener una carrera próspera. Si quieres ser consultor de ciberseguridad, analista de malware, evaluador de penetración, analista de SOC o cualquier otro puesto de ciberseguridad, esta guía es lo que necesitas.

SIGUE APRENDIENDO GRATIS CON NUESTRAS GUIAS

Aprende con nuestros más de 100 cursos que tenemos disponibles para vos

Compartimos estos recursos para ayudar a la comunidad de hacking y ciberseguridad. COMPARTE y Siéntete libre de agregar más sugerencias en los comentarios a continuación, respondemos todos y cada uno de los comentarios.

Saludos amigos y happy hacking!!!