Πώς να ελέγξετε τα ανοικτά αρχεία στο Linux

How Check Open Files Linux



Mayσως έχετε συναντήσει την παροιμία: Όλα είναι ένα αρχείο στο Linux. Παρόλο που αυτό δεν είναι απολύτως αληθινό, περιέχει μια σειρά από αλήθειες.

Σε συστήματα που μοιάζουν με Linux και Unix, όλα είναι σαν ένα αρχείο. Αυτό σημαίνει ότι στους πόρους του συστήματος Unix αποδίδεται ένας περιγραφέας αρχείων, συμπεριλαμβανομένων συσκευών αποθήκευσης, υποδοχών δικτύου, διαδικασιών κ.λπ.







Ο περιγραφέας αρχείων είναι ένας μοναδικός αριθμός που προσδιορίζει ένα αρχείο και άλλες συσκευές εισόδου/εξόδου. Περιγράφει τους πόρους και πώς αποκτά πρόσβαση ο πυρήνας σε αυτούς. Σκεφτείτε το ως μια πύλη προς τους πόρους υλικού αφαίρεσης πυρήνα.



Δυστυχώς, η έννοια των περιγραφών αρχείων είναι πέρα ​​από το πεδίο αυτού του σεμιναρίου. λάβετε υπόψη τον παρακάτω σύνδεσμο για να ξεκινήσετε να μαθαίνετε περισσότερα:



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





Αυτό σημαίνει ότι τα συστήματα Unix και παρόμοια με το Unix όπως το Linux χρησιμοποιούν πολύ αυτά τα αρχεία. Ως ισχυρός χρήστης Linux, το να βλέπεις τα ανοιχτά αρχεία και τη διαδικασία και τους χρήστες που τα χρησιμοποιούν είναι απίστευτα χρήσιμο.

Αυτό το σεμινάριο θα επικεντρωθεί σε τρόπους προβολής των ανοιχτών αρχείων και ποια διαδικασία ή χρήστης είναι υπεύθυνος.



Προαπαιτούμενα

Πριν ξεκινήσουμε, βεβαιωθείτε ότι έχετε:

  • Ένα σύστημα Linux
  • Χρήστης με δικαιώματα root ή sudo

Αν έχετε αυτά, ας ξεκινήσουμε:

Βοηθητικό πρόγραμμα LSOF

Δημιουργήθηκε από τον Victor A Abell, το List open files ή lsof για συντομία, είναι ένα βοηθητικό πρόγραμμα γραμμής εντολών που μας επιτρέπει να βλέπουμε τα ανοιχτά αρχεία και τις διαδικασίες ή τους χρήστες που τα άνοιξαν.

Το βοηθητικό πρόγραμμα lsof είναι διαθέσιμο σε μεγάλες διανομές Linux. Ωστόσο, μπορεί να διαπιστώσετε ότι δεν είναι εγκατεστημένο και επομένως μπορεί να χρειαστεί να το εγκαταστήσετε χειροκίνητα.

Πώς να εγκαταστήσετε το lsof στο Debian/Ubuntu

Για να το εγκαταστήσετε στο Debian, χρησιμοποιήστε την εντολή:

sudo apt-get ενημέρωση

sudo apt-get installlsof-και

Πώς να εγκαταστήσετε στο REHL/CentOS

Για εγκατάσταση σε REHL και CentOS, χρησιμοποιήστε την εντολή:

sudoενημέρωση dnf

sudodnfεγκαθιστώlsof

Πώς να εγκαταστήσετε στο Arch

Στο Arch, καλέστε τον διαχειριστή πακέτων χρησιμοποιώντας την εντολή:

sudoPacman-Του

sudoPacman-ΜΙΚΡΟlsof

Πώς να εγκαταστήσετε στο Fedora

Στο Fedora, χρησιμοποιήστε την εντολή:

sudo yum εγκατάστασηlsof

Μόλις εγκαταστήσετε και ενημερώσετε το βοηθητικό πρόγραμμα lsof, μπορούμε να αρχίσουμε να το χρησιμοποιούμε.

Βασική χρήση

Για να χρησιμοποιήσετε το εργαλείο lsof, εισαγάγετε την εντολή:

sudolsof

Μόλις εκτελέσετε την παραπάνω εντολή, το lsof θα απορρίψει πολλές πληροφορίες όπως φαίνεται παρακάτω:

Η παραπάνω έξοδος εμφανίζει όλα τα αρχεία που ανοίγουν οι διαδικασίες. Η έξοδος έχει διάφορες στήλες, καθεμία από τις οποίες αντιπροσωπεύει συγκεκριμένες πληροφορίες για το αρχείο.

  • Η στήλη COMMAND - εμφανίζει το όνομα της διαδικασίας που χρησιμοποιεί το αρχείο.
  • PID - εμφανίζει το Αναγνωριστικό διεργασίας της διαδικασίας χρησιμοποιώντας το αρχείο.
  • Το TID - Εμφανίζει το αναγνωριστικό εργασίας (νήματα) της διαδικασίας.
  • TASKCMD - Αντιπροσωπεύει το όνομα της εντολής εργασίας.
  • ΧΡΗΣΤΗΣ - Ο ιδιοκτήτης της διαδικασίας.
  • FD - Εμφανίζει τον αριθμό περιγραφής αρχείου. Αυτός είναι ο τρόπος με τον οποίο οι διαδικασίες χρησιμοποιούν το αρχείο. οι διαθέσιμες επιλογές σε αυτήν την έξοδο στήλης περιλαμβάνουν:
  • cwd - τρέχων κατάλογος εργασίας.
  • meme -αρχείο χαρτογράφησης μνήμης
  • pd - γονικός κατάλογος
  • jld - κατάλογος φυλακών
  • ltx - κοινό κείμενο βιβλιοθήκης
  • rtd - βασικός κατάλογος.
  • κείμενο - κωδικός και δεδομένα προγράμματος
  • NS - αρχείο ιχνών πυρήνα.
  • πλανώμαι - Σφάλμα πληροφοριών περιγραφής αρχείου
  • mmp -Συσκευή χαρτογράφησης μνήμης.
  • ΤΥΠΟΣ - Εμφανίζει τον τύπο κόμβου που σχετίζεται με το αρχείο, όπως:
  • Unix - για υποδοχή τομέα Unix.
  • ΣΕ ΕΣΕΝΑ - αντιπροσωπεύει τον κατάλογο
  • ΚΑΤΑΣΤΑΣΗ - αντιπροσωπεύει τον κανονικό φάκελο
  • CHR - αντιπροσωπεύει το αρχείο ειδικών χαρακτήρων.
  • ΣΥΝΔΕΣΜΟΣ - συμβολικό αρχείο συνδέσμου
  • BLK - Αποκλεισμός ειδικού αρχείου
  • INET - Υποδοχή τομέα διαδικτύου
  • FIFO - ένα όνομα σωλήνα (αρχείο First In First Out)
  • ΣΩΛΗΝΑΣ - για σωλήνες

Και πολλά άλλα.

  • ΣΥΣΚΕΥΕΣ - Εμφανίζει τους αριθμούς συσκευών που διαχωρίζονται με κόμματα με τη σειρά του αρχείου ειδικού χαρακτήρα, μπλοκάρει το ειδικό, κανονικό, κατάλογο και αρχείο NFS.
  • ΜΕΓΕΘΟΣ/ΑΠΕΝΕΡΓΟΠΟΙΗΣΗ - εμφανίζει το μέγεθος του αρχείου pr του αρχείου που μετατοπίζεται σε byte.
  • ΚΟΜΒΟΣ - εμφανίζει τον αριθμό κόμβου του τοπικού αρχείου, τύπο για τύπο πρωτοκόλλου διαδικτύου κ.λπ.
  • ΟΝΟΜΑ - εμφανίζει το όνομα του σημείου στήριξης και fs στο οποίο βρίσκεται το αρχείο.

Σημείωση: Ανατρέξτε στο εγχειρίδιο lsof για λεπτομερείς πληροφορίες σχετικά με τις στήλες.

Πώς να εμφανίσετε διαδικασίες που άνοιξαν ένα αρχείο

Το Lsof μας παρέχει επιλογές που μας βοηθούν να φιλτράρουμε την έξοδο για να εμφανίζονται μόνο οι διαδικασίες που άνοιξαν ένα συγκεκριμένο αρχείο.

Για παράδειγμα, για να δείτε το αρχείο που άνοιξε το αρχείο /bin /bash, χρησιμοποιήστε την εντολή ως:

sudolsof/είμαι/κτυπώ δυνατά

Αυτό θα σας δώσει μια έξοδο όπως φαίνεται παρακάτω:

ΜΕΓΕΘΟΣ ΣΥΣΚΕΥΗΣ ΤΥΠΟΥ ΧΡΗΣΤΗ FID ΤΥΠΟΥ FD/OFF NODE NAME

ksmtuned1025root txt REG253,0 1150704 428303 /usr/είμαι/κτυπώ δυνατά

κτυπώ δυνατά 2968centos txt REG253,0 1150704 428303 /usr/είμαι/κτυπώ δυνατά

κτυπώ δυνατά 3075centos txt REG253,0 1150704 428303 /usr/είμαι/κτυπώ δυνατά

Τρόπος εμφάνισης αρχείων που άνοιξε ένας συγκεκριμένος χρήστης

Μπορούμε επίσης να φιλτράρουμε την έξοδο για να εμφανίσουμε τα αρχεία που ανοίγονται από έναν συγκεκριμένο χρήστη. Το κάνουμε αυτό χρησιμοποιώντας τη σημαία -u ακολουθούμενη από το όνομα χρήστη ως:

sudolsof-uεκατοντάδες

Αυτό θα σας δώσει μια έξοδο όπως φαίνεται παρακάτω:

Πώς να εμφανίσετε αρχεία που ανοίχθηκαν από μια συγκεκριμένη διαδικασία

Ας υποθέσουμε ότι θέλουμε να δούμε όλα τα αρχεία που έχουν ανοίξει με μια συγκεκριμένη διαδικασία; Για αυτό, μπορούμε να χρησιμοποιήσουμε το PID της διαδικασίας για να φιλτράρουμε την έξοδο.

Για παράδειγμα, η παρακάτω εντολή εμφανίζει τα αρχεία που ανοίγονται από το bash.

sudolsof 3075

Αυτό θα σας δώσει μόνο τα αρχεία που ανοίγονται από το systemd όπως φαίνεται:

Πώς να εμφανίσετε αρχεία που ανοίγονται σε έναν κατάλογο

Για να ανοίξουμε τα αρχεία σε έναν συγκεκριμένο κατάλογο, μπορούμε να περάσουμε την επιλογή +D ακολουθούμενη από τη διαδρομή του καταλόγου.

Για παράδειγμα, παραθέστε ανοιχτά αρχεία στον κατάλογο /etc.

sudolsof +D/και τα λοιπά

Παρακάτω είναι η έξοδος για αυτό:

Πώς να εμφανίσετε τη σύνδεση δικτύου

Δεδομένου ότι τα πάντα στο Linux είναι ένα αρχείο, μπορούμε να πάρουμε τα αρχεία δικτύου, όπως αρχεία TCP ή συνδέσεις.

Μπορούμε να χρησιμοποιήσουμε την εντολή:

sudolsof-ΕγώTCP

Αυτό θα σας δώσει τις συνδέσεις TCP στο σύστημα.

Μπορείτε επίσης να φιλτράρετε κατά τη συγκεκριμένη θύρα χρησιμοποιώντας την παρακάτω εντολή:

sudolsof-Εγώ:22

Αυτό θα σας δώσει την έξοδο όπως φαίνεται παρακάτω:

Πώς να εμφανίζετε συνεχώς αρχεία

Το Lsof μας παρέχει μια λειτουργία για να βάζουμε βρόχο στην έξοδο κάθε λίγα δευτερόλεπτα. Αυτό σας επιτρέπει να παρακολουθείτε συνεχώς τα αρχεία που ανοίγονται από μια διαδικασία ή χρήστη.

Αυτή η επιλογή, ωστόσο, απαιτεί να τερματίσετε τη διαδικασία με μη αυτόματο τρόπο.

Για παράδειγμα, η παρακάτω εντολή παρακολουθεί συνεχώς τα αρχεία που ανοίγονται στη θύρα 22:

sudolsof -r-Εγώ:22

Όπως μπορείτε να δείτε, στον τρίτο βρόχο, το lsof πιάνει την εγκατεστημένη σύνδεση με τον διακομιστή στο SSH.

συμπέρασμα

Το Lsof είναι ένα απίστευτα χρήσιμο βοηθητικό πρόγραμμα. Σας επιτρέπει να παρακολουθείτε για κρίσιμα αρχεία, καθώς και να παρακολουθείτε τους χρήστες και να επεξεργάζεται αρχεία που ανοίγουν. Αυτό μπορεί να είναι απίστευτα χρήσιμο όταν αντιμετωπίζετε προβλήματα ή αναζητάτε κακόβουλες προσπάθειες στο σύστημα.

Όπως φαίνεται σε αυτό το σεμινάριο, χρησιμοποιώντας διάφορα παραδείγματα και μεθόδους, μπορείτε να συνδυάσετε τη λειτουργικότητα που παρέχει το εργαλείο lsof για προσαρμοσμένη παρακολούθηση.

Σας ευχαριστούμε που διαβάσατε και μοιραστήκατε! Ελπίζω να μάθατε κάτι νέο!