Comment vérifier les fichiers ouverts sous Linux

How Check Open Files Linux



Vous avez peut-être rencontré le dicton, Tout est un fichier sous Linux. Bien que ce ne soit pas tout à fait vrai, cela contient un ensemble de vérités.

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







Un descripteur de fichier 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 didacticiel ; Considérez le lien fourni ci-dessous pour commencer à en savoir plus :



https://en.wikipedia.org/wiki/File_descriptor





Cela signifie que les systèmes Unix et similaires, tels que Linux, utilisent massivement de tels fichiers. En tant qu'utilisateur expérimenté de Linux, voir les fichiers ouverts et le processus et les utilisateurs qui les utilisent est incroyablement utile.

Ce tutoriel se concentrera sur les façons d'afficher les fichiers ouverts et quel processus ou utilisateur est responsable.



Conditions préalables

Avant de commencer, assurez-vous d'avoir :

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

Si vous en avez, commençons :

Utilitaire LSOF

Créé par Victor A Abell, List open files, ou lsof en abrégé, est un utilitaire de ligne de commande qui nous permet de visualiser les fichiers ouverts et les processus ou utilisateurs qui les ont ouverts.

L'utilitaire lsof est disponible dans les principales distributions Linux ; cependant, il se peut qu'il ne soit pas installé et que vous deviez donc l'installer manuellement.

Comment installer lsof sur Debian/Ubuntu

Pour l'installer sur Debian, utilisez la commande :

sudo apt-get mise à jour

sudo apt-get installerlsof-et

Comment installer sur REHL/CentOS

Pour installer sur REHL et CentOS, utilisez la commande :

sudomise à jour dnf

sudodnfinstallerlsof

Comment installer sur Arch

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

sudoPac-Man-Le sien

sudoPac-Man-Slsof

Comment installer sur Fedora

Sur Fedora, utilisez la commande :

sudo miam installerlsof

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

Utilisation de base de lsof

Pour utiliser l'outil lsof, saisissez la commande :

sudolsof

Une fois que vous avez exécuté la commande ci-dessus, lsof videra de nombreuses informations, comme indiqué ci-dessous :

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

  • La colonne COMMANDE – affiche le nom du processus qui utilise le fichier.
  • PID – affiche l'identifiant de processus du processus utilisant le fichier.
  • Le TID – Affiche l'ID de tâche (threads) du processus.
  • TÂCHECMD – Représente le nom de la commande de tâche.
  • UTILISATEUR – Le propriétaire du processus.
  • FD – Affiche le numéro du descripteur de fichier. C'est ainsi que les processus utilisent le fichier ; les options disponibles dans cette sortie de colonne incluent :
  • cwd – répertoire de travail courant.
  • meme – fichier mappé en mémoire
  • pd - Dossier Parent
  • jld – répertoire de prison
  • ltx – texte de bibliothèque partagé
  • rtd – répertoire racine.
  • SMS – code et données du programme
  • N.-É. – fichier de trace du noyau.
  • se tromper – Erreur d'informations sur le descripteur de fichier
  • mmp – Périphérique mappé en mémoire.
  • TAPER – Affiche le type de nœud associé au fichier, tel que :
  • Unix – pour socket de domaine Unix.
  • POUR VOUS – représente le répertoire
  • REG – représentant le fichier régulier
  • CHR – représente le fichier de caractères spéciaux.
  • RELIER – fichier de lien symbolique
  • NOIR – Bloquer le fichier spécial
  • INET – Prise de domaine Internet
  • FIFO – un tube nommé (fichier First In First Out)
  • 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, du bloc spécial, normal, du répertoire et du fichier NFS.
  • TAILLE/NON – montre la taille du fichier pr fichier offset 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 se trouve le fichier.

Noter: 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 fournit 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 :

sudolsof/un m/frapper

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

COMMANDE PID UTILISATEUR TYPE FD TAILLE DE L'APPAREIL/DÉSACTIVÉ NOM DU NUD

ksmtuned1025txt racine REG253,0 1150704 428303 /usr/un m/frapper

frapper 2968centos txt REG253,0 1150704 428303 /usr/un m/frapper

frapper 3075centos txt REG253,0 1150704 428303 /usr/un m/frapper

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. Pour ce faire, nous utilisons l'indicateur -u suivi du nom d'utilisateur comme suit :

sudolsof-udes centaines

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

Comment afficher les fichiers ouverts par un processus spécifique

Supposons que nous voulions 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 montre les fichiers ouverts par bash.

sudolsof-p 3075

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

Comment afficher les fichiers ouverts dans un répertoire

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

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

sudolsof +D/etc

Ci-dessous est la sortie pour cela:

Comment afficher 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.

On peut utiliser la commande :

sudolsof-jeTCP

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

Vous pouvez également filtrer par port spécifique à l'aide de la commande ci-dessous :

sudolsof-je:22

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

Comment afficher des fichiers en continu

Lsof nous fournit un mode pour boucler la sortie toutes les quelques secondes. Cela vous permet de surveiller en permanence les fichiers ouverts par un processus ou un utilisateur.

Cette option, cependant, vous oblige à terminer le processus manuellement.

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

sudolsof -r-je:22

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

Conclusion

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

Comme indiqué dans ce didacticiel, à l'aide de 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 !