Hoe geopende bestanden in Linux te controleren

How Check Open Files Linux



Je bent misschien het gezegde tegengekomen: Alles is een bestand in Linux. Hoewel dit niet helemaal waar is, bevat het wel een aantal waarheden.

In Linux- en Unix-achtige systemen is alles als een bestand. Dat betekent dat de bronnen in het Unix-systeem een ​​bestandsdescriptor krijgen toegewezen, inclusief opslagapparaten, netwerksockets, processen, enz.







Een bestandsdescriptor is een uniek nummer dat een bestand en andere invoer-/uitvoerapparaten identificeert. Het beschrijft bronnen en hoe de kernel er toegang toe heeft. Zie het als een toegangspoort tot de hardwarebronnen voor Kernel-abstractie.



Helaas valt het concept van bestandsdescriptors buiten het bestek van deze tutorial; overweeg de onderstaande link om aan de slag te gaan met meer informatie:



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





Dat betekent dat Unix en Unix-achtige systemen zoals Linux dergelijke bestanden intensief gebruiken. Als Linux-hoofdgebruiker is het ongelooflijk handig om de geopende bestanden en het proces en de gebruikers die ze gebruiken te zien.

Deze zelfstudie richt zich op manieren om de geopende bestanden te bekijken en welk proces of welke gebruiker verantwoordelijk is.



Vereisten

Voordat we beginnen, moet u ervoor zorgen dat u:

  • Een Linux-systeem
  • Gebruiker met root- of sudo-rechten

Als je deze hebt, laten we dan beginnen:

LSOF-hulpprogramma

Gemaakt door Victor A Abell, List open files, of kortweg lsof, is een opdrachtregelprogramma waarmee we de geopende bestanden en de processen of gebruikers die ze hebben geopend kunnen bekijken.

Het hulpprogramma lsof is beschikbaar in de belangrijkste Linux-distributies; het kan echter zijn dat het niet is geïnstalleerd en daarom mogelijk handmatig moet installeren.

Hoe lsof op Debian/Ubuntu te installeren

Gebruik de opdracht om het op Debian te installeren:

sudo apt-get update

sudo apt-get installlsof-en

Hoe te installeren op REHL/CentOS

Gebruik de opdracht om op REHL en CentOS te installeren:

sudodnf-update

sudodnfinstallerenlsof

Hoe te installeren op Arch

Bel op Arch de pakketbeheerder met de opdracht:

sudopacman-Zijn

sudopacman-Slsof

Hoe te installeren op Fedora

Gebruik op Fedora het commando:

sudo yum installerenlsof

Zodra u het hulpprogramma lsof hebt geïnstalleerd en bijgewerkt, kunnen we het gaan gebruiken.

Basis lsof-gebruik

Om de lsof-tool te gebruiken, voert u de opdracht in:

sudolsof

Nadat u de bovenstaande opdracht hebt uitgevoerd, zal lsof veel informatie dumpen, zoals hieronder wordt weergegeven:

De bovenstaande uitvoer toont alle bestanden die door de processen zijn geopend. De uitvoer heeft verschillende kolommen, die elk specifieke informatie over het bestand vertegenwoordigen.

  • De COMMAND-kolom – toont de naam van het proces dat het bestand gebruikt.
  • PID – toont de Process Identifier van het proces dat het bestand gebruikt.
  • de TID – Toont de taak-ID (threads) van het proces.
  • TASKCMD – Vertegenwoordig de naam van de taakopdracht.
  • GEBRUIKER – De eigenaar van het proces.
  • FD – Toont het bestandsdescriptornummer. Dit is hoe processen het bestand gebruiken; de beschikbare opties in deze kolomuitvoer zijn onder meer:
  • cwd – huidige werkmap.
  • meme - geheugen toegewezen bestand
  • pd – bovenliggende map
  • jld – gevangenismap
  • ltx – gedeelde bibliotheektekst
  • rtd - rootmap.
  • tekst – programmacode en data
  • NS - kernel-traceerbestand.
  • foutje – Fout in bestandsbeschrijvingsinformatie
  • mmp - Geheugen toegewezen apparaat.
  • TYPE – Toont het type knoop dat aan het bestand is gekoppeld, zoals:
  • Unix – voor Unix domein socket.
  • AAN U – vertegenwoordigt de directory
  • REG – representatief voor het reguliere bestand
  • CHR – staat voor het bestand met speciale tekens.
  • KOPPELING – symbolisch linkbestand
  • BLK – Speciaal bestand blokkeren
  • INET – Internet domein socket
  • FIFO – een named pipe (First In First Out-bestand)
  • PIJP – voor pijpen

En nog veel meer.

  • APPARATEN – Toont de apparaatnummers gescheiden door komma's in de volgorde van speciaal tekenbestand, blok speciaal, normaal, directory en NFS-bestand.
  • GROOTTE/UIT – toont de grootte van het bestand pr bestand offset in bytes.
  • KNOOPPUNT – toont het knooppuntnummer van het lokale bestand, type voor internetprotocoltype, enz.
  • NAAM – toont de naam van het koppelpunt en fs waarop het bestand zich bevindt.

Opmerking: Raadpleeg de lsof-handleiding voor gedetailleerde informatie over de kolommen.

Processen tonen die een bestand hebben geopend

Lsof biedt ons opties die ons helpen de uitvoer te filteren om alleen de processen weer te geven die een specifiek bestand hebben geopend.

Om bijvoorbeeld het bestand te zien waarmee het bestand /bin/bash is geopend, gebruikt u de opdracht als:

sudolsof/ben/bash

Dit geeft je een output zoals hieronder getoond:

COMMANDO PID GEBRUIKER FD TYPE APPARAAT MAAT/UIT KNOOPNAAM

ksmtuned1025root txt REG253,0 1150704 428303 /usr/ben/bash

bash 2968centos txt REG253,0 1150704 428303 /usr/ben/bash

bash 3075centos txt REG253,0 1150704 428303 /usr/ben/bash

Hoe bestanden weergeven die zijn geopend door een specifieke gebruiker

We kunnen de uitvoer ook filteren om de bestanden weer te geven die door een specifieke gebruiker zijn geopend. We doen dit door de vlag -u te gebruiken gevolgd door de gebruikersnaam als:

sudolsof-uhonderden

Dit geeft je een output zoals hieronder getoond:

Bestanden tonen die door een specifiek proces zijn geopend

Stel dat we alle bestanden willen bekijken die door een specifiek proces zijn geopend? Hiervoor kunnen we de PID van het proces gebruiken om de uitvoer te filteren.

De onderstaande opdracht toont bijvoorbeeld de bestanden die zijn geopend door bash.

sudolsof-P 3075

Dit geeft u alleen de bestanden die door systemd zijn geopend, zoals weergegeven:

Bestanden tonen die in een map zijn geopend

Om de bestanden in een specifieke map te openen, kunnen we de +D-optie doorgeven gevolgd door het mappad.

Vermeld bijvoorbeeld geopende bestanden in de map /etc.

sudolsof +D/enzovoort

Hieronder is de output hiervoor:

Netwerkverbinding weergeven

Omdat alles in Linux een bestand is, kunnen we de netwerkbestanden krijgen, zoals TCP-bestanden of verbindingen.

We kunnen het commando gebruiken:

sudolsof-lTCP

Dit geeft u de TCP-verbindingen in het systeem.

U kunt ook filteren op de specifieke poort met behulp van de onderstaande opdracht:

sudolsof-l:22

Dit geeft je de output zoals hieronder getoond:

Hoe continu bestanden te tonen

Lsof biedt ons een modus om de uitvoer om de paar seconden te herhalen. Hiermee kunt u continu de bestanden volgen die door een proces of gebruiker worden geopend.

Voor deze optie moet u het proces echter handmatig beëindigen.

De onderstaande opdracht controleert bijvoorbeeld continu de bestanden die op poort 22 worden geopend:

sudolsof -r-l:22

Zoals je kunt zien, vangt lsof in de derde lus de tot stand gebrachte verbinding met de server op SSH.

Conclusie

Lsof is een ongelooflijk handig hulpprogramma. Hiermee kunt u controleren op kritieke bestanden en gebruikers en processen die bestanden openen in de gaten houden. Dit kan ongelooflijk handig zijn bij het oplossen van problemen of het zoeken naar kwaadwillende pogingen tot het systeem.

Zoals in deze zelfstudie wordt getoond, kunt u met behulp van verschillende voorbeelden en methoden de functionaliteit van de lsof-tool combineren voor aangepaste monitoring.

Bedankt voor het lezen en delen! Ik hoop dat je iets nieuws hebt geleerd!