Comment vérifier les fichiers ouverts dans Linux

Comment vérifier les fichiers ouverts dans Linux

Vous avez peut-être rencontré le dicton: «Tout est un fichier dans Linux."Bien que ce ne soit pas entièrement vrai, il y tient un ensemble de vérités.

Dans les systèmes de type Linux et Unix, tout est comme un fichier. Cela signifie que les ressources du système UNIX se voient attribuer un descripteur de fichiers, y compris les périphériques de stockage, les prises de réseau, les processus, etc.

Un descripteur de fichiers est un numéro unique qui identifie un fichier et d'autres périphériques d'entrée / sortie. Il décrit les ressources et comment le noyau y accède. Considérez-le comme une passerelle vers les ressources matérielles d'abstraction du noyau.

Malheureusement, le concept de descripteurs de fichiers dépasse le cadre de ce tutoriel; Considérez le lien fourni ci-dessous pour commencer à en savoir plus:

https: // en.Wikipédia.org / wiki / file_descriptor

Cela signifie que les systèmes UNIX et Unix tels que Linux utilisent fortement ces fichiers. En tant qu'utilisateur de Power Linux, voir les fichiers ouverts et le processus et les utilisateurs qui les utilisent est incroyablement utile.

Ce tutoriel se concentrera sur les moyens d'ouvrir les fichiers et quel processus ou utilisateur est responsable.

Conditions préalables

Avant de commencer, assurez-vous que vous avez:

  • Un système Linux
  • Utilisateur avec des privilèges racine ou sudo

Si vous en avez, commençons:

Utilitaire LSOF

Créé par Victor A Abell, List Open Files, ou LSOF pour faire court, est un utilitaire de ligne de commande qui nous permet de visualiser les fichiers ouverts et les processus ou les utilisateurs qui les ont ouverts.

L'utilitaire LSOF est disponible dans les principales distributions Linux; Cependant, vous pouvez le trouver non installé et peut donc avoir besoin d'installer manuellement.

Comment installer LSOF sur Debian / Ubuntu

Pour l'installer sur Debian, utilisez la commande:

Mise à jour Sudo apt-get
sudo apt-get install lsof -y

Comment installer sur Rehl / Centos

Pour installer sur Rehl et CentOS, utilisez la commande:

Mise à jour Sudo DNF
sudo dnf installer lsof

Comment installer sur Arch

Sur Arch, appelez le gestionnaire de packages à l'aide de la commande:

Sudo Pacman -Sy
sudo pacman -s lsof

Comment installer sur Fedora

Sur Fedora, utilisez la commande:

sudo yum install lsof

Une fois que l'utilitaire LSOF a installé et mis à jour, nous pouvons commencer à l'utiliser.

Utilisation de base LSOF

Pour utiliser l'outil LSOF, entrez la commande:

sudo lsof

Une fois que vous avez exécuté la commande ci-dessus, LSOF videra beaucoup d'informations comme indiqué ci-dessous:

La sortie ci-dessus affiche tous les fichiers ouverts par les processus. La sortie a diverses colonnes, chacune représentant des informations spécifiques sur le fichier.

  • La colonne de commande - affiche le nom du processus qui utilise le fichier.
  • Piquer - Affiche l'identifiant de processus du processus à l'aide du fichier.
  • Le Tid - Montre l'ID de tâche (threads) du processus.
  • Tâche - Représenter le nom de la commande de tâche.
  • UTILISATEUR - Le propriétaire du processus.
  • FD - Affiche le numéro de descripteur de fichier. C'est ainsi que les processus utilisent le fichier; Les options disponibles dans cette sortie de colonne comprennent:
  • CWD - Répertoire de travail actuel.
  • mem - Fichier à mémoire de mémoire
  • PD - Dossier Parent
  • jld - répertoire de prison
  • LTX - Texte de bibliothèque partagée
  • RTD - répertoire racine.
  • SMS - Code et données du programme
  • tr - Fichier de trace du noyau.
  • se tromper - Erreur d'information sur le descripteur de fichiers
  • MMP - Périphérique à mémoire de mémoire.
  • TAPER - Affiche le type de nœud associé au fichier, tel que:
  • Unix - pour une prise de domaine Unix.
  • Diron - représente le répertoire
  • Registre - Représentant le fichier régulier
  • Chrousser - représente le fichier de caractères spécial.
  • LIEN - fichier de lien symbolique
  • Blk - Bloquer le fichier spécial
  • Inédire - Prise de domaine Internet
  • Fifo - un tuyau nommé (premier dans le premier fichier)
  • TUYAU - pour les tuyaux

Et beaucoup plus.

  • DISPOSITIFS - Affiche les numéros de périphérique séparés par des virgules dans l'ordre du fichier de caractères spéciaux, de Block Special, régulier, du répertoire et du fichier NFS.
  • Taille / désactivation - Affiche la taille du décalage du fichier PR en octets.
  • NŒUD - Affiche le numéro de nœud du fichier local, le type pour le type de protocole Internet, etc.
  • NOM - Affiche le nom du point de montage et FS sur lequel le fichier est situé.

Note: Veuillez vous référer au manuel LSOF pour des informations détaillées sur les colonnes.

Comment afficher les processus qui ont ouvert un fichier

LSOF nous offre des options qui nous aident à filtrer la sortie pour afficher uniquement les processus qui ont ouvert un fichier spécifique.

Par exemple, pour voir le fichier qui a ouvert le fichier / bin / bash, utilisez la commande comme:

sudo lsof / bin / bash

Cela vous donnera une sortie comme indiqué ci-dessous:

Commande PID User Type FD Taille de l'appareil / Off Node du nœud
KSMTUNED 1025 ROOT TXT REG 253,0 1150704 428303 / USR / BIN / BASH
BASH 2968 CENTOS TXT REG 253,0 1150704 428303 / USR / BIN / BASH
BASH 3075 CENTOS TXT REG 253,0 1150704 428303 / USR / BIN / BASH

Comment afficher les fichiers ouverts par un utilisateur spécifique

Nous pouvons également filtrer la sortie pour afficher les fichiers ouverts par un utilisateur spécifique. Nous le faisons en utilisant le drapeau -u suivi du nom d'utilisateur comme:

sudo lsof -u centos

Cela vous donnera une sortie comme indiqué ci-dessous:

Comment afficher les fichiers ouverts par un processus spécifique

Supposons que nous voulons afficher tous les fichiers ouverts par un processus spécifique? Pour cela, nous pouvons utiliser le PID du processus pour filtrer la sortie.

Par exemple, la commande ci-dessous affiche les fichiers ouverts par bash.

sudo lsof -p 3075

Cela ne vous donnera que les fichiers ouverts par Systemd comme indiqué:

Comment afficher des fichiers ouverts dans un répertoire

Pour ouvrir les fichiers dans un répertoire spécifique, nous pouvons passer l'option + D suivie du chemin du répertoire.

Par exemple, listez les fichiers ouverts dans le répertoire / etc.

sudo lsof + d / etc

Vous trouverez ci-dessous la sortie pour ceci:

Comment montrer la connexion réseau

Étant donné que tout dans Linux est un fichier, nous pouvons obtenir les fichiers réseau tels que les fichiers TCP ou les connexions.

Nous pouvons utiliser la commande:

sudo lsof -i tcp

Cela vous donnera les connexions TCP dans le système.

Vous pouvez également filtrer par le port spécifique en utilisant la commande ci-dessous:

sudo lsof -i: 22

Cela vous donnera la sortie comme indiqué ci-dessous:

Comment afficher en continu des fichiers

LSOF nous fournit un mode pour faire boucle la sortie toutes les quelques secondes. Cela vous permet de surveiller les fichiers ouverts par un processus ou un utilisateur en continu.

Cette option, cependant, vous oblige à résilier le processus manuellement.

Par exemple, la commande ci-dessous surveille en continu les fichiers ouverts sur le port 22:

sudo lsof -r -i: 22

Comme vous pouvez le voir, dans la troisième boucle, LSOF attrape la connexion établie au serveur sur SSH.

Conclusion

LSOF est un utilitaire incroyablement utile. Il vous permet de surveiller les fichiers critiques ainsi que de surveiller les utilisateurs et les processus d'ouverture des fichiers. Cela peut être incroyablement utile lors du dépannage ou de la recherche de tentatives malveillantes pour le système.

Comme le montre ce tutoriel, en utilisant divers exemples et méthodes, vous pouvez combiner les fonctionnalités fournies par l'outil LSOF pour une surveillance personnalisée.

Merci d'avoir lu et partagé! J'espère que vous avez appris quelque chose de nouveau!