Πώς να αλλάξετε δεδομένα χρήστη με το chfn και το usermod στο Linux

Υπάρχουν περισσότερα σε έναν λογαριασμό χρήστη από ένα όνομα χρήστη. Μάθετε πώς να ορίζετε και να αλλάζετε όλα τα μεταδεδομένα που σχετίζονται με έναν λογαριασμό χρήστη Linux από τη γραμμή εντολών.

Τι υπάρχει σε ένα Όνομα;

Εάν χρησιμοποιείτε υπολογιστή τύπου Linux ή Unix, θα έχετε λογαριασμό χρήστη. Το όνομα που δίνεται στον λογαριασμό είναι το όνομα του λογαριασμού χρήστη σας. Αυτό είναι το όνομα που χρησιμοποιείτε για να συνδεθείτε. Είναι επίσης (από προεπιλογή) το όνομα της ομάδας σύνδεσής σας και το όνομα του αρχικού καταλόγου σας. Όλα χρησιμοποιούν το ίδιο αναγνωριστικό.

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

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

Το Πεδίο GECOS

Κάποτε, οι πρωτοπόροι του Unix δεν είχαν δικό τους εκτυπωτή. Έπρεπε να βάλουν σε ουρά τις εργασίες εκτύπωσης σε α General Electric mainframe που εκτελούσε το Ολοκληρωμένο λειτουργικό σύστημα General Electric (GECOS). Για να επιτευχθεί αυτό, οι χρήστες στα συστήματα Unix έπρεπε να αποθηκεύσουν και να χρησιμοποιήσουν τα διαπιστευτήρια ενός λογαριασμού στο σύστημα GECOS.

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

Το πεδίο αποθηκεύεται στο αρχείο /etc/passwd, μαζί με άλλες πληροφορίες σχετικά με τον λογαριασμό χρήστη:

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

Εδώ είναι που το δάχτυλο εντολή και το ροζ εντολή ανάκτηση των πληροφοριών που εμφανίζουν.

  Πώς να δημιουργήσετε αντίγραφα ασφαλείας του υπολογιστή σας Linux με το BackInTime

Η εντολή chfn

Το chfn (αλλαγή πληροφοριών δακτύλου) σας επιτρέπει ορίστε και τροποποιήστε τις πληροφορίες που είναι αποθηκευμένες στο πεδίο GECOS. Οι πληροφορίες αποθηκεύονται ως λίστα διαχωρισμένη με κόμμα μέσα στο πεδίο.

Η εντολή chfn ήταν ήδη παρούσα στο Ubuntu 18.04.1 και στο Manjaro 18.1.0. Έπρεπε να εγκατασταθεί στο Fedora 31. Χρησιμοποιήστε αυτήν την εντολή για να το εγκαταστήσετε:

sudo dnf install util-linux-user

Ας δούμε τι δάχτυλο μπορεί να μάθει για τον κάτοχο του λογαριασμού χρήστη “dave”. Για να λάβουμε τις μέγιστες πληροφορίες, θα χρησιμοποιήσουμε την επιλογή -l (μεγάλη μορφή):

finger dave -l

Αυτό είναι που θα μπορούσε να βρει:

Ανακτά το όνομα χρήστη του λογαριασμού, τον αρχικό κατάλογο και το προεπιλεγμένο κέλυφος. Όλα αυτά σχετίζονται με τον λογαριασμό χρήστη. Δεν αναφέρονται στο πραγματικό άτομο που χρησιμοποιεί αυτόν τον λογαριασμό. Μπορούμε να χρησιμοποιήσουμε την εντολή chfn για να αποθηκεύσουμε πληροφορίες για το πραγματικό άτομο.

chfn dave

Η χρήση του chfn με αυτόν τον τρόπο ξεκινά μια σύντομη, διαδραστική διαδικασία. Σας ζητείται να πληκτρολογήσετε μια τιμή δεδομένων για κάθε πληροφορία που μπορεί να χωρέσει το πεδίο GECOS. Η τρέχουσα τιμή για κάθε τιμή δεδομένων εμφανίζεται σε αγκύλες []. Εάν θέλετε να διατηρήσετε τα τρέχοντα δεδομένα, μπορείτε να πατήσετε το πλήκτρο «Enter» και η τιμή εντός των παρενθέσεων θα διατηρηθεί.

Οι πληροφορίες που εισάγαμε ήταν:

Αριθμός δωματίου: 512
Τηλέφωνο εργασίας: 555-4567
Τηλέφωνο σπιτιού: 555-5432

Ας ελέγξουμε ότι το δάχτυλο συλλαμβάνει αυτές τις νέες πληροφορίες:

finger dave -l

Ναι είναι. Αλλά ίσως έχετε παρατηρήσει ότι δεν ζήτησε να αλλάξετε το πλήρες όνομα. Θα το κάνει μόνο αν χρησιμοποιείτε sudo. Αλλά δεν χρειάζεται να ξαναπεράσουμε ολόκληρη τη συνεδρία chfn, μόνο και μόνο επειδή ξεχάσαμε να χρησιμοποιήσουμε το sudo. Μπορούμε να αλλάξουμε οποιαδήποτε από τις τιμές δεδομένων ξεχωριστά.

Αλλαγή των τιμών μεμονωμένων δεδομένων

Μπορούμε να ορίσουμε το πλήρες όνομα για τον κάτοχο του λογαριασμού χρήστη χρησιμοποιώντας την επιλογή -f (πλήρες όνομα), μαζί με το sudo.

sudo chfn -f "Dave McKay" dave

sudo chfn -f

Και αν ελέγξουμε άλλη μια φορά με το δάχτυλο:

Μπορούμε να δούμε ότι έχει προστεθεί το πλήρες όνομα.

Υπάρχουν άλλες επιλογές για να αλλάξετε τον αριθμό δωματίου, τον αριθμό τηλεφώνου σπιτιού και τον αριθμό τηλεφώνου εργασίας. Για να αλλάξετε τον αριθμό δωματίου (γραφείου), χρησιμοποιήστε την επιλογή -r (αριθμός δωματίου):

sudo chfn -r 633 dave

Σημειώστε ότι σε ορισμένες διανομές, μπορείτε να χρησιμοποιήσετε την επιλογή -o (αριθμός δωματίου γραφείου) αντί της επιλογής -r. Περισσότερα για αυτό σύντομα. Προς το παρόν, για να δείτε τις επιλογές για την έκδοση του chfn, χρησιμοποιήστε:

man chfn

Για να αλλάξετε τον αριθμό τηλεφώνου γραφείου, χρησιμοποιήστε την επιλογή -w (τηλέφωνο εργασίας):

sudo chfn -w 555-1122 dave

Και τέλος, για να αλλάξετε τον αριθμό τηλεφώνου του σπιτιού χρησιμοποιήστε την επιλογή -h (αριθμός τηλεφώνου σπιτιού):

sudo chfn -h 555-6576 dave

Ας χρησιμοποιήσουμε ξανά το δάχτυλο για να δούμε αν όλες αυτές οι αλλαγές έχουν γίνει αποδεκτές:

finger dave -l

Επιτυχία. Όλες αυτές οι εντολές έχουν λειτουργήσει και οι τιμές δεδομένων έχουν ενημερωθεί.

  Πώς να δημιουργήσετε αντίγραφα ασφαλείας των ρυθμίσεων επιφάνειας εργασίας XFCE4 σε Linux

Χρήση του chfn σε άλλους λογαριασμούς χρηστών

Τόσο για την αλλαγή των δικών μας πληροφοριών, τι γίνεται με την αλλαγή των πληροφοριών GECOS για άλλους χρήστες; Είναι εξίσου εύκολο. Πρέπει να χρησιμοποιείτε sudo όταν το κάνετε, αλλά αυτή είναι η μόνη διαφορά. Ας ελέγξουμε ποια δεδομένα έχουν οριστεί για τον λογαριασμό χρήστη mary:

finger mary -l

Οι συνήθεις προεπιλεγμένες πληροφορίες έχουν οριστεί για αυτόν τον λογαριασμό χρήστη. Ας προσθέσουμε στις πληροφορίες:

sudo chfn mary

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

Περιμένετε λίγο, ποιο είναι αυτό το τελευταίο στοιχείο, που ονομάζεται “Άλλο;”

δεν υποστηρίζεται από όλες τις εκδόσεις του chfn και το βλέπετε μόνο εάν χρησιμοποιείτε sudo, γι’ αυτό δεν το είδαμε νωρίτερα όταν (εσκεμμένα) δεν χρησιμοποιήσαμε sudo με:

chfn dave

Η τιμή δεδομένων “Άλλα” μπορεί να περιέχει οτιδήποτε θέλετε. Δεν έχει καμία συνταγογραφούμενη ή αναμενόμενη χρήση.

Οι εκδόσεις του chfn που υποστηρίζουν το πεδίο “Άλλο” παρέχουν επίσης την επιλογή -o (άλλο) για άμεση αλλαγή αυτής της τιμής. Λόγω της σύγκρουσης μεταξύ -o για τον “αριθμό γραφείου” και -o για “άλλο” ορισμένα συστήματα χρησιμοποιούν -r για τον “αριθμό δωματίου”.

Μπορούμε να δούμε τα δεδομένα που είναι αποθηκευμένα για τον λογαριασμό χρήστη mary στο αρχείο /etc/paswd, χρησιμοποιώντας λιγότερα:

less /etc/passwd

Σε συστήματα που το υποστηρίζουν (ελέγξτε τη σελίδα man για την έκδοση του chfn ) μπορείτε να ορίσετε το πεδίο “άλλο” απευθείας χρησιμοποιώντας την επιλογή -o (άλλο):

sudo chfn -o "HTG Freelancer" dave

sudo chfn -ο

Και μπορούμε να ελέγξουμε τα δεδομένα για τον λογαριασμό χρήστη dave χρησιμοποιώντας την εντολή less:

less /etc/passwd

[asswdinaterminalwindow”width=”646″height=”382″/>[asswdinaterminalwindow”width=”646″height=”382″/>

Αυτό εγείρει ένα προφανές ερώτημα. Εάν η έκδοση του chfn που διαθέτετε δεν υποστηρίζει το πεδίο “Άλλο”, πώς μπορείτε να το αλλάξετε; Μπορούμε να το κάνουμε αυτό με την εντολή usermod.

  Πώς να χρησιμοποιήσετε το Pipes στο Linux

Η εντολή usermod

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

Ας ρίξουμε μια πιο προσεκτική ματιά στη γραμμή στο αρχείο /etc/passwd για λογαριασμό χρήστη mary. θα χρησιμοποιήσουμε grep για να απομονώσει αυτή τη γραμμή για εμάς. Αυτό θα λειτουργήσει επειδή τα ονόματα χρηστών πρέπει να είναι μοναδικά. Μπορεί να υπάρχει μόνο ένας λογαριασμός χρήστη που ονομάζεται mary.

grep mary /etc/passwd

Εμφανίζονται τα πεδία στο αρχείο etc/passwd. Η άνω και κάτω τελεία “:” χρησιμοποιείται ως διαχωριστικό πεδίου. από αριστερά προς τα δεξιά, τα πεδία είναι:

Το όνομα χρήστη του λογαριασμού.
Ένα “x” που υποδεικνύει τον κωδικό πρόσβασης για αυτόν τον λογαριασμό χρήστη διατηρείται κρυπτογραφημένο στο αρχείο /etc/shadow.
Το αναγνωριστικό χρήστη για τον λογαριασμό χρήστη mary.
Το αναγνωριστικό ομάδας για τον λογαριασμό χρήστη mary.
Το πεδίο GECOS.
Η διαδρομή προς τον αρχικό κατάλογο για τον λογαριασμό χρήστη mary.
Το κέλυφος που ξεκινά όταν συνδεθεί ο κάτοχος του λογαριασμού mary.

Ένα κόμμα “,” χρησιμοποιείται ως διαχωριστικό για τις τιμές δεδομένων εντός του πεδίου GECOS. Οι τιμές στο πεδίο GECOS είναι, από αριστερά προς τα δεξιά:

Πλήρες όνομα.
Αριθμός δωματίου (ή γραφείου).
Αριθμός τηλεφώνου εργασίας.
Αριθμός τηλεφώνου σπιτιού.
Αλλες πληροφορίες.

Σημειώστε ότι η εντολή usermod ορίζει ολόκληρο το πεδίο GECOS στη νέα τιμή που παρέχετε. Εάν το μόνο που παρέχετε είναι το πλήρες όνομα του ατόμου, τότε το μόνο πράγμα στο πεδίο GECOS θα είναι το πλήρες όνομα. Αυτό σημαίνει ότι πρέπει να παρέχετε τυχόν υπάρχουσες τιμές δεδομένων που θέλετε να διατηρήσετε.

Εδώ είναι ένα παράδειγμα. Η χρήστης Mary έχει προαχθεί, και πρόκειται να μετακομίσει στον τέταρτο όροφο. Παίρνει έναν νέο αριθμό γραφείου, έναν νέο αριθμό τηλεφώνου εργασίας και θα προσθέσουμε το μεσαίο όνομά της. Η τιμή του πεδίου “Άλλο” θα αλλάξει επίσης. Αν και ο αριθμός τηλεφώνου του σπιτιού της δεν πρόκειται να αλλάξει, πρέπει να τον δώσουμε στη συμβολοσειρά στο usermod.

Πρέπει να χρησιμοποιήσουμε την επιλογή -c (comment) και πρέπει να εκτελέσουμε την εντολή με το sudo.

sudo usermod -c "Mary Carol Quinn,405,5559654,555-7704,Linux Advocate" mary

sudo usermod -γ

Η χρήση του grep για αναφορά σχετικά με τα περιεχόμενα του αρχείου /etc/passwd για το mary, μας δείχνει τις νέες τιμές που έχουν προστεθεί.

grep mary /etc/passwd

Όλα είναι ροή, τίποτα δεν μένει

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