Πώς να διαγράψετε έναν χρήστη στο Linux (και να αφαιρέσετε κάθε ίχνος)

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

Εάν θέλετε απλώς να διαγράψετε έναν λογαριασμό χρήστη από το σύστημά σας και δεν ανησυχείτε για τον τερματισμό τυχόν εκτελούμενων διεργασιών και άλλων εργασιών εκκαθάρισης, ακολουθήστε τα βήματα στην ενότητα “Διαγραφή λογαριασμού χρήστη” παρακάτω. Θα χρειαστείτε την εντολή deluser σε διανομές που βασίζονται στο Debian και την εντολή userdel σε άλλες διανομές Linux.

Λογαριασμοί χρηστών στο Linux

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

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

Εάν είστε ο διαχειριστής του συστήματος, αυτή η ευθύνη βαρύνει εσάς. Δείτε πώς να το κάνετε.

Το σενάριο μας

Υπάρχουν πολλοί λόγοι για τους οποίους μπορεί να χρειαστεί να διαγραφεί ένας λογαριασμός. Ένα μέλος του προσωπικού μπορεί να μετακομίζει σε διαφορετική ομάδα ή να εγκαταλείψει εντελώς την εταιρεία. Ο λογαριασμός μπορεί να έχει δημιουργηθεί για μια βραχυπρόθεσμη συνεργασία με έναν επισκέπτη από άλλη εταιρεία. Οι ομάδες είναι κοινές στον ακαδημαϊκό χώρο, όπου τα ερευνητικά έργα μπορούν να καλύπτουν τμήματα, διαφορετικά πανεπιστήμια, ακόμη και εμπορικές οντότητες. Μετά την ολοκλήρωση του έργου, ο διαχειριστής του συστήματος πρέπει να εκτελέσει την καθαριότητα και να αφαιρέσει τους περιττούς λογαριασμούς.

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

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

  Πώς να παίξετε παιχνίδια Sega Saturn στο Linux

Όλα είναι έτοιμα. Όλα τα βλέμματα είναι στραμμένα πάνω σου.

Ελέγξτε τη σύνδεση

Ας δούμε αν είναι πραγματικά συνδεδεμένος και, αν είναι, με πόσες συνεδρίες δουλεύει. Οι που διοικούν θα απαριθμήσει τις ενεργές συνεδρίες.

who

Ο Eric είναι συνδεδεμένος μία φορά. Ας δούμε τι διαδικασίες τρέχει.

Επισκόπηση των διαδικασιών του χρήστη

Μπορούμε να χρησιμοποιήσουμε την εντολή ps για να λίστα των διεργασιών που εκτελεί αυτός ο χρήστης. Η επιλογή -u (χρήστης) μας επιτρέπει να πούμε στο ps να περιορίσει την έξοδο του στις διεργασίες που εκτελούνται υπό την ιδιοκτησία αυτού του λογαριασμού χρήστη.

ps -u eric

Μπορούμε να δούμε τις ίδιες διεργασίες με περισσότερες πληροφορίες χρησιμοποιώντας την εντολή top. Το top έχει επίσης μια επιλογή -U (χρήστης) για τον περιορισμό της εξόδου στις διεργασίες που ανήκουν σε έναν μόνο χρήστη. Σημειώστε ότι αυτή τη φορά είναι ένα κεφαλαίο “U”.

top -U eric

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

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

Κλείδωμα λογαριασμού

Θα κλειδώσουμε τον λογαριασμό πριν σκοτώσουμε τις διεργασίες γιατί όταν σκοτώσουμε τις διεργασίες θα αποσυνδεθεί ο χρήστης. Εάν έχουμε ήδη αλλάξει τον κωδικό πρόσβασής του, δεν θα μπορεί να συνδεθεί ξανά.

Οι κρυπτογραφημένοι κωδικοί πρόσβασης χρήστη αποθηκεύονται στο αρχείο /etc/shadow. Κανονικά δεν θα ενοχλούσατε με αυτά τα επόμενα βήματα, αλλά για να μπορείτε να δείτε τι συμβαίνει στο αρχείο /etc/shadow όταν κλειδώνετε τον λογαριασμό, θα κάνουμε μια μικρή παράκαμψη. Μπορούμε να χρησιμοποιήσουμε την ακόλουθη εντολή για να δούμε τα δύο πρώτα πεδία της καταχώρισης για τον λογαριασμό χρήστη eric.

sudo awk -F: '/eric/ {print $1,$2}' /etc/shadow

Η εντολή awk αναλύει πεδία από αρχεία κειμένου και προαιρετικά τα χειρίζεται. Χρησιμοποιούμε την επιλογή -F (διαχωριστής πεδίου) για να πούμε στο awk ότι το αρχείο χρησιμοποιεί άνω και κάτω τελεία ” : ” για να διαχωρίσει τα πεδία. Θα αναζητήσουμε μια γραμμή με το μοτίβο “eric” μέσα. Για αντίστοιχες γραμμές, θα εκτυπώσουμε το πρώτο και το δεύτερο πεδία. Αυτά είναι το όνομα λογαριασμού και ο κρυπτογραφημένος κωδικός πρόσβασης.

  Πώς να δημιουργήσετε αντίγραφα ασφαλείας φωτογραφιών από μια φορητή συσκευή σε Linux χρησιμοποιώντας το Daemon Sync

Η καταχώρηση για λογαριασμό χρήστη eric εκτυπώνεται για εμάς.

Για να κλειδώσουμε τον λογαριασμό χρησιμοποιούμε την εντολή passwd. Θα χρησιμοποιήσουμε την επιλογή -l (κλείδωμα) και περάστε στο όνομα του λογαριασμού χρήστη για κλείδωμα.

sudo passwd -l eric

Εάν ελέγξουμε ξανά το αρχείο /etc/passwd, θα δούμε τι έχει συμβεί.

sudo awk -F: '/eric/ {print $1,$2}' /etc/shadow

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

Τώρα που εμποδίσαμε τον χρήστη να συνδεθεί ξανά, μπορούμε να σκοτώσουμε τις διαδικασίες του και να τον αποσυνδεθούμε.

Δολοφονία των Διαδικασιών

Υπάρχουν διάφοροι τρόποι για να σκοτώσετε τις διεργασίες ενός χρήστη, αλλά η εντολή που εμφανίζεται εδώ είναι ευρέως διαθέσιμη και είναι μια πιο σύγχρονη υλοποίηση από ορισμένες από τις εναλλακτικές λύσεις. Η εντολή pkill θα βρει και θα σκοτώσει διεργασίες. Περνάμε στο σήμα KILL και χρησιμοποιούμε την επιλογή -u (χρήστης).

sudo pkill -KILL -u eric

Επιστρέφετε στη γραμμή εντολών με αναμφισβήτητα αντικλιμακτικό τρόπο. Για να βεβαιωθούμε ότι κάτι συνέβη, ας ελέγξουμε ξανά ποιος:

who

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

Αρχειοθέτηση του αρχικού καταλόγου του χρήστη

Δεν αποκλείεται σε ένα σενάριο όπως αυτό, στο μέλλον να απαιτείται πρόσβαση στα αρχεία του χρήστη. Είτε ως μέρος μιας έρευνας είτε απλώς επειδή η αντικατάστασή τους μπορεί να χρειαστεί να ανατρέξει στο έργο του προκατόχου τους. Θα χρησιμοποιήσουμε την εντολή tar για να αρχειοθετήσουν ολόκληρο τον οικιακό τους κατάλογο.

Οι επιλογές που χρησιμοποιούμε είναι:

γ: Δημιουργήστε ένα αρχείο αρχειοθέτησης.
f: Χρησιμοποιήστε το καθορισμένο όνομα αρχείου για το όνομα του αρχείου.
j: Χρησιμοποιήστε συμπίεση bzip2.
v: Παρέχετε αναλυτικά αποτελέσματα καθώς δημιουργείται το αρχείο.

sudo tar cfjv eric-20200820.tar.bz /home/eric

Μεγάλη έξοδος οθόνης θα κυλήσει στο παράθυρο του τερματικού. Για να ελέγξετε ότι έχει δημιουργηθεί το αρχείο, χρησιμοποιήστε την εντολή ls. Χρησιμοποιούμε τις επιλογές -l (μεγάλη μορφή) και -h (ανάγνωση από τον άνθρωπο).

ls -lh eric-20200802.tar.bz

Έχει δημιουργηθεί ένα αρχείο 722 MB. Αυτό μπορεί να αντιγραφεί κάπου ασφαλές για μεταγενέστερο έλεγχο.

Κατάργηση cron Jobs

Καλύτερα να ελέγξουμε αν υπάρχουν προγραμματισμένες εργασίες cron για λογαριασμό χρήστη eric. Μια εργασία cron είναι μια εντολή που ενεργοποιείται σε καθορισμένους χρόνους ή διαστήματα. Μπορούμε να ελέγξουμε εάν υπάρχουν προγραμματισμένες εργασίες cron για αυτόν τον λογαριασμό χρήστη χρησιμοποιώντας το ls:

sudo ls -lh /var/spool/cron/crontabs/eric

Εάν υπάρχει κάτι σε αυτήν την τοποθεσία, σημαίνει ότι υπάρχουν εργασίες cron στην ουρά για αυτόν τον λογαριασμό χρήστη. Μπορούμε να τα διαγράψουμε με αυτήν την εντολή crontab. Η επιλογή -r (αφαίρεση) θα αφαιρέσει τις εργασίες και η επιλογή -u (χρήστης) λέει στο crontab των οποίων οι εργασίες να καταργηθούν.

sudo crontab -r -u eric

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

  Τρόπος χρήσης SUID, SGID και Sticky Bits στο Linux

Κατάργηση εργασιών εκτύπωσης

Ίσως ο χρήστης είχε εκκρεμείς εργασίες εκτύπωσης; Για να είμαστε σίγουροι, μπορούμε να καθαρίσουμε την ουρά εκτύπωσης από οποιεσδήποτε εργασίες ανήκουν στον λογαριασμό χρήστη eric. Η εντολή lprm αφαιρεί εργασίες από την ουρά εκτύπωσης. Η επιλογή -U (όνομα χρήστη) σάς επιτρέπει να αφαιρέσετε εργασίες που ανήκουν στον λογαριασμό χρήστη με όνομα:

lprm -U eric

Οι εργασίες καταργούνται και επιστρέφετε στη γραμμή εντολών.

Διαγραφή του λογαριασμού χρήστη

Έχουμε ήδη δημιουργήσει αντίγραφα ασφαλείας των αρχείων από τον κατάλογο /home/eric/, ώστε να μπορούμε να προχωρήσουμε και να διαγράψουμε τον λογαριασμό χρήστη και να διαγράψουμε τον κατάλογο /home/eric/ ταυτόχρονα.

Η εντολή που πρέπει να χρησιμοποιήσετε εξαρτάται από τη διανομή του Linux που χρησιμοποιείτε. Για Διανομές Linux που βασίζονται στο Debian, η εντολή είναι deluser, και για τον υπόλοιπο κόσμο του Linux, είναι userdel.

Στην πραγματικότητα, στο Ubuntu και οι δύο εντολές είναι διαθέσιμες. Μισό περίμενα το ένα να είναι ψευδώνυμο του άλλου, αλλά είναι ξεχωριστά δυαδικά.

type deluser
type userdel

Αν και είναι και τα δύο διαθέσιμα, η σύσταση είναι να χρησιμοποιήσετε deluser σε διανομές που προέρχονται από το Debian:

“Το userdel είναι ένα βοηθητικό πρόγραμμα χαμηλού επιπέδου για την αφαίρεση χρηστών. Στο Debian, οι διαχειριστές θα πρέπει συνήθως να χρησιμοποιούν το deluser(8).

Αυτό είναι αρκετά σαφές, επομένως η εντολή που χρησιμοποιείται σε αυτόν τον υπολογιστή Ubuntu είναι παραπλανητική. Επειδή θέλουμε επίσης να αφαιρεθεί ο αρχικός τους κατάλογος, χρησιμοποιούμε τη σημαία –remove-home:

sudo deluser --remove-home eric

Η εντολή που πρέπει να χρησιμοποιηθεί για διανομές εκτός Debian είναι userdel, με τη σημαία –remove:

sudo userdel --remove eric

Όλα τα ίχνη του λογαριασμού χρήστη eric έχουν διαγραφεί. Μπορούμε να ελέγξουμε ότι ο κατάλογος /home/eric/καταργήθηκε:

ls /home

Η ομάδα eric έχει επίσης αφαιρεθεί επειδή ο λογαριασμός χρήστη eric ήταν η μόνη καταχώριση σε αυτήν. Μπορούμε να το ελέγξουμε αυτό πολύ εύκολα περνώντας τα περιεχόμενα του /etc/group μέσω του grep:

sudo less /etc/group | grep eric

Είναι ένα Wrap

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

Η ακρίβεια πάντα υπερτερεί της ταχύτητας. Βεβαιωθείτε ότι έχετε εξετάσει κάθε βήμα πριν το κάνετε. Δεν θέλετε κάποιος να περπατάει στο γραφείο σας και να λέει «Όχι, ο άλλος Έρικ».