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ενημέρωση dnfsudodnfεγκαθιστώ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 NAMEksmtuned1025root 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 για προσαρμοσμένη παρακολούθηση.
Σας ευχαριστούμε που διαβάσατε και μοιραστήκατε! Ελπίζω να μάθατε κάτι νέο!