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 à joursudo apt-get installerlsof-et
Comment installer sur REHL/CentOS
Pour installer sur REHL et CentOS, utilisez la commande :
sudomise à jour dnfsudodnfinstallerlsof
Comment installer sur Arch
Sur Arch, appelez le gestionnaire de packages à l'aide de la commande :
sudoPac-Man-Le siensudoPac-Man-Slsof
Comment installer sur Fedora
Sur Fedora, utilisez la commande :
sudo miam installerlsofUne 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 :
sudolsofUne 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/frapperCela vous donnera une sortie comme indiqué ci-dessous :
COMMANDE PID UTILISATEUR TYPE FD TAILLE DE L'APPAREIL/DÉSACTIVÉ NOM DU NUDksmtuned1025txt 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 centainesCela 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 3075Cela 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/etcCi-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-jeTCPCela 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:22Cela 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 !