Es posible que se haya encontrado con el dicho: Todo es un archivo en Linux. Aunque esto no es del todo cierto, tiene una serie de verdades.
En sistemas Linux y similares a Unix, todo es como un archivo. Eso significa que a los recursos en el sistema Unix se les asigna un descriptor de archivo, incluidos dispositivos de almacenamiento, sockets de red, procesos, etc.
Un descriptor de archivo es un número único que identifica un archivo y otros dispositivos de entrada / salida. Describe los recursos y cómo el kernel accede a ellos. Piense en ello como una puerta de entrada a los recursos de hardware de abstracción del Kernel.
Desafortunadamente, el concepto de descriptores de archivo está más allá del alcance de este tutorial; considere el enlace que se proporciona a continuación para comenzar a aprender más:
https://en.wikipedia.org/wiki/File_descriptor
Eso significa que los sistemas Unix y similares a Unix, como Linux, utilizan estos archivos en gran medida. Como usuario avanzado de Linux, ver los archivos abiertos y el proceso y los usuarios que los usan es increíblemente útil.
Este tutorial se centrará en las formas de ver los archivos abiertos y qué proceso o usuario es responsable.
Prerrequisitos
Antes de comenzar, asegúrese de tener:
- Un sistema Linux
- Usuario con privilegios de root o sudo
Si tiene estos, comencemos:
Utilidad LSOF
Creada por Victor A Abell, List open files, o lsof para abreviar, es una utilidad de línea de comandos que nos permite ver los archivos abiertos y los procesos o usuarios que los abrieron.
La utilidad lsof está disponible en las principales distribuciones de Linux; sin embargo, puede encontrar que no está instalado y, por lo tanto, es posible que deba instalarlo manualmente.
Cómo instalar lsof en Debian / Ubuntu
Para instalarlo en Debian, use el comando:
sudo apt-get updatesudo apt-get installlsof-y
Cómo instalar en REHL / CentOS
Para instalar en REHL y CentOS, use el comando:
sudoactualización dnfsudodnfInstalar en pclsof
Cómo instalar en Arch
En Arch, llame al administrador de paquetes usando el comando:
sudopacman-Susudopacman-Slsof
Cómo instalar en Fedora
En Fedora, use el comando:
sudo yum installlsofUna vez que tenga la utilidad lsof instalada y actualizada, podemos comenzar a usarla.
Uso básico de lsof
Para usar la herramienta lsof, ingrese el comando:
sudolsofUna vez que ejecute el comando anterior, lsof arrojará mucha información como se muestra a continuación:
La salida anterior muestra todos los archivos abiertos por los procesos. La salida tiene varias columnas, cada una de las cuales representa información específica sobre el archivo.
- La columna COMANDO : Muestra el nombre del proceso que está utilizando el archivo.
- PID - muestra el identificador de proceso del proceso que utiliza el archivo.
- El TID - Muestra el ID de la tarea (subprocesos) del proceso.
- TASKCMD - Representa el nombre del comando de tarea.
- USUARIO - El dueño del proceso.
- FD - Muestra el número de descriptor de archivo. Así es como los procesos utilizan el archivo; las opciones disponibles en la salida de esta columna incluyen:
- cwd - directorio de trabajo actual.
- memes - archivo mapeado en memoria
- pd - directorio de padres
- jld - directorio de la cárcel
- ltx - texto de biblioteca compartida
- rtd - directorio raíz.
- TXT - código de programa y datos
- NS - archivo de seguimiento del kernel.
- errar - Error de información del descriptor de archivo
- mmp - Dispositivo con mapa de memoria.
- ESCRIBE - Muestra el tipo de nodo asociado al archivo, como por ejemplo:
- Unix - para socket de dominio Unix.
- PARA TI - representa el directorio
- REG - que representa el archivo regular
- CHR - representa el archivo de caracteres especiales.
- ENLACE - archivo de enlace simbólico
- BLK - Bloquear archivo especial
- Internet - Toma de dominio de Internet
- FIFO - una tubería con nombre (archivo First In First Out)
- TUBO - para tuberías
Y muchos más.
- DISPOSITIVOS - Muestra los números de dispositivo separados por comas en el orden de archivo de caracteres especiales, bloque especial, regular, directorio y archivo NFS.
- TAMAÑO / APAGADO - muestra el tamaño del archivo pr archivo offset en bytes.
- NODO : Muestra el número de nodo del archivo local, el tipo de protocolo de Internet, etc.
- NOMBRE : Muestra el nombre del punto de montaje y fs en el que se encuentra el archivo.
Nota: Consulte el manual de lsof para obtener información detallada sobre las columnas.
Cómo mostrar procesos que abrieron un archivo
Lsof nos proporciona opciones que nos ayudan a filtrar la salida para mostrar solo los procesos que abrieron un archivo específico.
Por ejemplo, para ver el archivo que abrió el archivo / bin / bash, use el comando como:
sudolsof/soy/intentoEsto le dará un resultado como se muestra a continuación:
COMANDO PID USUARIO TIPO FD TAMAÑO DEL DISPOSITIVO/NOMBRE DE NODO DESACTIVADOksmtuned1025root txt REG253,0 1150704 428303 /usr/soy/intento
intento 2968centos txt REG253,0 1150704 428303 /usr/soy/intento
intento 3075centos txt REG253,0 1150704 428303 /usr/soy/intento
Cómo mostrar archivos abiertos por un usuario específico
También podemos filtrar la salida para mostrar los archivos abiertos por un usuario específico. Hacemos esto usando la bandera -u seguida del nombre de usuario como:
sudolsof-ucientosEsto le dará un resultado como se muestra a continuación:
Cómo mostrar archivos abiertos por un proceso específico
Supongamos que queremos ver todos los archivos abiertos por un proceso específico. Para ello, podemos utilizar el PID del proceso para filtrar la salida.
Por ejemplo, el siguiente comando muestra los archivos abiertos por bash.
sudolsof-pag 3075Esto le dará solo los archivos abiertos por systemd como se muestra:
Cómo mostrar archivos abiertos en un directorio
Para que los archivos se abran en un directorio específico, podemos pasar la opción + D seguida de la ruta del directorio.
Por ejemplo, enumere los archivos abiertos en el directorio / etc.
sudolsof + D/etcA continuación se muestra el resultado para esto:
Cómo mostrar la conexión de red
Dado que todo en Linux es un archivo, podemos obtener los archivos de red, como archivos TCP o conexiones.
Podemos usar el comando:
sudolsof-ITCPEsto le dará las conexiones TCP en el sistema.
También puede filtrar por el puerto específico usando el comando que se muestra a continuación:
sudolsof-I:22Esto le dará el resultado como se muestra a continuación:
Cómo mostrar archivos continuamente
Lsof nos proporciona un modo para realizar un bucle de salida cada pocos segundos. Esto le permite monitorear los archivos abiertos por un proceso o usuario de forma continua.
Sin embargo, esta opción requiere que finalice el proceso manualmente.
Por ejemplo, el siguiente comando monitorea continuamente los archivos abiertos en el puerto 22:
sudolsof -r-I:22
Como puede ver, en el tercer ciclo, lsof detecta la conexión establecida al servidor en SSH.
Conclusión
Lsof es una utilidad increíblemente útil. Le permite monitorear archivos críticos, así como monitorear usuarios y procesos que abren archivos. Esto puede ser increíblemente útil a la hora de solucionar problemas o buscar intentos maliciosos en el sistema.
Como se muestra en este tutorial, utilizando varios ejemplos y métodos, puede combinar la funcionalidad proporcionada por la herramienta lsof para un monitoreo personalizado.
¡Gracias por leer y compartir! ¡Espero que hayas aprendido algo nuevo!