Το αρχείο etc/shadow

Στο αρχείο shadow που βρίσκεται στον κατάλογο /etc αποθηκεύονται πληροφορίες σχετικές με την ταυτότητα των χρηστών.

Στην εικόνα 4.9.1 παρατηρήστε ότι ο πρώτος χρήστης είναι ο root. Οι υπόλοιποι χρήστες που εμφανίζονται είναι ειδικοί χρήστες που έχουν δημιουργηθεί από το Λ.Σ.  Οι "κοινοί" χρήστες -φυσικά πρόσωπα είναι στο τέλος της λίστας.

Για κάθε χρήστη υπάρχει μια γραμμή του αρχείου που καθορίζει λεπτομέρειες της ταυτότητάς του. Κάθε γραμμή περιέχει οκτώ (8) πεδία τα οποία διαχωρίζονται από τον χαρακτήρα ":" (άνω κάτω τελεία).


Εικόνα 4.9.1:  Το αρχείο /etc/shadow

Τα πεδία αυτά περιέχουν με τη σειρά:

1ο: Το όνομα του χρήστη

2ο: Το συνθηματικό (password) του χρήστη σε κρυπτογραφημένη μορφή. Αν το πεδίο αυτό είναι κενό ο χρήστης δεν έχει συνθηματικό. Αν έχει μόνο ένα "!" τότε ο λογαριασμός αυτός είναι κλειδωμένος. Αν έχει μόνο ένα "*" τότε δεν επιτρέπεται η είσοδος στο σύστημα με τον λογαριασμό αυτόν.

3ο:  Πότε άλλαξε (ημερομηνία) τελευταία φορά το συνθηματικό. Η ημερομηνία εκφράζεται με ένα αριθμό που δείχνει τον αριθμό των ημερών που έχουν περάσει από την 1η Ιανουαρίου του 1970. Αν ο αριθμός αυτός είναι το μηδέν (0) σημαίνει ότι ο χρήστης θα πρέπει να αλλάξει το συνθηματικό του την επόμενη φορά που θα συνδεθεί.

4ο:  Ελάχιστη διάρκεια του συνθηματικού. Η ελάχιστη διάρκεια εκφράζεται σε αριθμό ημερών και έχει την έννοια ότι ο χρήστης δεν μπορεί να αλλάξει συνθηματικό αν δεν περάσει αυτή η διάρκεια. Αν ο αριθμός αυτός είναι το μηδέν (0) ο χρήστης μπορεί να αλλάξει συνθηματικό όποτε θέλει.

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

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

7ο: Διάρκεια αδράνειας συνθηματικού. Περιέχει ένα αριθμό ο οποίος δηλώνει πόσες μέρες μετά τη λήξη του κωδικού ο χρήστης θα μπορεί να συνδεθεί με το ίδιο συνθηματικό. Συνήθως το πεδίο αυτό είναι κενό.

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

Το αρχείο /etc/sudoers

Το αρχείο /etc/sudoers περιέχει και καθορίζει τα δικαιώματα των χρηστών να εκτελούν εντολές του συστήματος. Συγκεκριμένα σε ένα Λ.Σ Linux υπάρχουν εντολές τις οποίες μπορούν να εκτελέσουν όλοι οι χρήστες (όπως η εντολή ls ) αλλά υπάρχουν και κρίσιμες εντολές που μπορούν να εκτελέσουν συγκεκριμένοι χρήστες.

Το αρχείο /etc/sudoers χρησιμοποιείται ακριβώς για να καθορίσουμε αν ένα χρήστης έχει την άδεια να εκτελεί κρίσιμες εντολές που απαιτούν αυξημένα δικαιώματα. Η σύνταξη του αρχείου για ένα χρήστη είναι της μορφής users hosts=(user:group) commands . Το users host είναι το όνομα του χρήστη το host είναι το όνοαμ του host υπολογιστή, το (user:group) καθορίζει αντίστοιχα τα δικαιώματα του χρήστη (user) και της ομάδας (group) και ακολουθεί λίστα εντολών.


Εικόνα 4.9.2: Το αρχείο /etc/sudoers

Εξ ορισμού στο αρχείο αυτό υπάρχει η γραμμή:

root ALL=(ALL:ALL) ALL

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

Η επεξεργασία του αρχείου /etc/sudoers δεν πρέπει να γίνεται με ένα οποιοδήποτε συντάκτη (editor), όπως ο nano, γιατί υπάρχει περίπτωση αλλοίωσης κάποιας γραμμής με απρόβλεπτες συνέπειες. Η επεξεργασία του γίνεται με την εντολή visudo η οποία για να εκτελεστεί απαιτεί δικαιώματα root.

  Υλοποιήστε τη δραστηριότητα 4.9.1

Το αρχείο etc/passwd

Το αρχείο etc/passwd είναι ένα ακόμα βασικό αρχείο για τη διαχείριση των χρηστών. Περιέχει πληροφορίες τόσο για τους πραγματικούς χρήστες (πραγματικά πρόσωπα) όσο και για διεργασίες του Λ.Σ που έχουν καταχωρηθεί ως χρήστες.


Εικόνα 4.9.3:  Το αρχείο /etc/passwd

Όμοια με το αρχείο "/etc/shadow" 'ετσι και στο αρχείο /etc/passwd  κάθε γραμμή αντιπροσωπεύει ένα χρήστη και περιέχει επτά πεδία πληροφοριών τα οποία χωρίζονται με άνω και κάτω τελεία. Συγκεκριμένα είναι με τη σειρά τα ακόλουθα:

1ο: Το όνομα του χρήστη στο σύστημα.

2ο: Είναι το πεδίο για το συνθηματικό του χρήστη. Παλαιότερα περιείχε το συνθηματικό κρυπτογραφημένο. Σήμερα συνήθως περιέχει το γράμμα "x" το οποίο δηλώνει ότι το συνθηματικό βρίσκεται στο αρχείο /etc/shadow.

3ο: Η ταυτότητα χρήστη (UID). Μοναδικός αριθμός που καθορίζει το χρήστη.

4ο: Η ταυτότητα της ομάδας του χρήστη (GID). Μοναδικός αριθμός που καθορίζει την ομάδα που ανήκει ο χρήστης.

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

6ο: Ο προσωπικός κατάλογος του χρήστη. Ο κατάλογος που θα οδηγείται ο χρήστης με την είσοδό του στο σύστημα. Εκεί θα αποθηκεύονται οι κατάλογοι και τα αρχεία που θα δημιουργεί ο χρήστης.

7ο: Ο φλοιός (Shell) που θα χρησιμοποιεί ο χρήστης. Συνήθως είναι το /bin/bash.

Μπορούμε να τροποποιήσουμε "με το χέρι" πληροφορίες ενός χρήστη στο αρχειο /etc/passwd με τη χρήση ενός συντάκτη (editor) όπως ο nano. Ακόμα μπορούμε να προσθέσουμε ένα χρήστη συμπληρώνοντας μια αντίστοιχη γραμμή. Συνίσταται όμως οι εισαγωγή ενός χρήστη να γίνεται με τη χρήση ειδικών εργαλείων ώστε να συμπληρώνονται αυτόματα όλα τα σχετικά αρχεία.

Εισαγωγή νέου χρήστη

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

  Προσοχή

Ο root είναι ένα "επικίνδυνος" για το σύστημα χρήστης μια άστοχη ενέργειά του μπορεί να καταστρέψει το σύστημα. Συνιστάται να μην γίνεται σύνδεση με αυτό το όνομα χρήστη.

Η εντολή δημιουργία ενός νέου χρήστη με όνομα χρήστη student1 είναι:

$ sudo adduser student1

  • Το σύστημα δημιουργεί ένα χρήστη με το όνομα αυτό και του αποδίδει το πρώτο διαθέσιμο UID.
  • Δημιουργεί μια ομάδα με όνομα το όνομα του χρήστη, της αποδίδει το πρώτο διαθέσιμο GID και προσθέτει το χρήστη σε αυτήν
  • Δημιουργεί τον προσωπικό κατάλογο του χρήστη (homedirectory) στο σημείο /home/student1.
  • Στη συνέχεια καλεί την εντολή passwdγια την εισαγωγή και επιβεβαίωση του συνθηματικού του χρήστη.
  • Ζητά προσωπικά στοιχεία του χρήστη (το 5ο πεδίο στο \etc\passwd). Αν πατηθεί Enter παραμένει κενό.
  • Στο τέλος θα επιβεβαιώσετε ότι τα στοιχεία αυτά είναι σωστά πληκτρολογώντας "Υ" ή "y". (Istheinformationcorrect [Y/n])

Ο νέος χρήστης είναι έτοιμος και μπορεί να συνδεθεί στο σύστημα.

 Σημείωση

Μπορούμε να ελέγξουμε το αν δημιουργήθηκε ο νέος χρήστης με την εντολή

sudo cat /etc/passwd

αν είναι δύσκολο να εντοπιστεί το όνομα του νέου χρήστη χρησιμοποιούμε την εντολή

sudo cat /etc/passwd | grep student1

Η εντολή αυτή εμφανίζει από το αρχείο /etc/passwd μόνο τη γραμμή που αντιστοιχεί στο χρήστη student1.

 

Παρατηρούμε ότι κατά τη δημιουργία ενός νέου χρήστη πολλά στοιχεία του χρήση, όπως το home directory, εισάγονται αυτόματα από το σύστημα. Αν επιθυμούμε να αλλάξουμε τα στοιχεία αυτά είτε θα πρέπει να τα αλλάξουμε "με το χέρι" είτε θα χρησιμοποιήσουμε κατάλληλες παραμέτρους της εντολής adduser.

Διαγραφή ενός χρήστη

Διαγραφή ενός χρήστη από το σύστημα, μπορεί να γίνει από τον root ή τον διαχειριστή του συστήματος.

Η εντολή διαγραφής είναι η deluser και η σύνταξή της για το χρήστη student1 είναι:

$ sudo deluser student1

 

Εικόνα 4.9.4:  Διαγραφή του χρήστη student1

Η διαγραφή του χρήστη προκαλεί και τη διαγραφή της ομάδας του αν αυτή είναι προσωπική, δηλαδή περιέχει μόνο αυτόν τον χρήστη.  Δεν διαγράφει όμως τα αρχεία του χρήστη που βρίσκονται στο προσωπικό του κατάλογο (home directory).

Αν θέλουμε μαζί με τη διαγραφή του χρήστη να διαγράψουμε και τον προσωπικό του κατάλογο η εντολή είναι

$ deluser --remove-home student1

  Έλεγχος ταυτότητας χρήστη

Αρχικά την εποχή του Unix το αρχείο \etc\passwd ήταν το μοναδικό αρχείο που περιείχε πληροφορίες για τους χρήστες. Στη συνέχεια δημιουργήθηκαν τα αρχεία \etc\shadow και /etc/sudoers γιατον έλεγχο της ταυτότητας του χρήστη. Σήμερα πολλές διανομές χρησιμοποιούν νεότερες τεχνικές που ονομάζονται PAM (Pluggable Authentication Modules) για να εξασφαλίσουν ένα πιο αποδοτικό έλεγχο της ταυτότητας του χρήστη.