Μάθε παιδί μου Linux (μέρος 7) | Ο ρόλος των χρηστών και των ομάδων στο Linux


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

Για εμάς τους χρήστες ο διαχωρισμός αυτός είναι κάτι πολύ βολικό, γιατί έτσι έχει ο καθένας τις δικές του ρυθμίσεις και τα προσωπικά του αρχεία. Για το Linux είναι απλά ένα μέσον για να μοιράσει πρόσβαση και δικαιώματα στους φακέλους και τους πόρους του. Μάλιστα στο Linux οι χρήστες δε χρειάζεται να είναι πραγματικά πρόσωπα. Ένα παράδειγμα είναι ο "root" (ή superuser) ο οποίο είναι αυτόνομος και αναλαμβάνει να τρέξει σημαντικές διεργασίες για την ομαλή λειτουργία του συστήματος. 

Χρήστες και ομάδες


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

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

Αντ' αυτού θα φτιάξεις για παράδειγμα δύο ομάδες, την "admin" και την "user" και θα ορίσεις ποια δικαιώματα θέλεις να έχει η μία και ποια η άλλη. Στο τέλος θα προσθέσεις απλά τους χρήστες στις ανάλογες ομάδες, για να πάρουν τα δικαιώματα που θέλεις. Ακόμα και σε αυτή την περίπτωση το Linux δεν ενδιαφέρεται για τα ονόματα, αλλά δίνει σε κάθε ομάδα ένα αναγνωριστικό (GID).

Διαφήμιση

Ο χρήστης root (superuser), το αρχείο "/etc/sudoers" και το "visudo"


Ο σημαντικότερος χρήστης στο Linux είναι ο "root". Είναι ο πιο ισχυρός χρήστης του συστήματος, μπορεί να έχει πρόσβαση σε οποιοδήποτε αρχείο και να ξεκινήσει ή να τερματίσει οποιαδήποτε διαδικασία. Για αυτό τον λόγο είναι και ο πιο επικίνδυνος, οπότε δεν πρέπει να τον χρησιμοποιούμε συχνά. 

Pro tip:
Το Android είναι ένα Linux λειτουργικό σύστημα και όταν λέμε ότι "θα κάνουμε root" στη συσκευή μας, εννοούμε ότι θα αποκτήσουμε πρόσβαση το χρήστη root του συστήματος.

Υπάρχουν όμως κάποιες διαδικασίες στις οποίες απαιτείται πρόσβαση root για να τις εκτελέσουμε. Σε αυτή την περίπτωση ένας απλός χρήστης με τα σωστά όμως δικαιώματα, μπορεί να τις εκτελέσει ως root ξεκινώντας την εντολή του με το "sudo" (superuser do).

Αν θέλουμε για παράδειγμα να δούμε τα περιεχόμενα του αρχείου "shadow" που βρίσκεται στο φάκελο "etc", θα πρέπει να δώσουμε την εντολή:

cat /etc/shadow

Αυτό που μας επιστρέφει όμως το τερματικό είναι το σφάλμα "Permission denied":

cat: /etc/shadow: Permission denied

Ας ρίξουμε μια ματιά στις πληροφορίες του αρχείου "shadow" με την εντολή:

ls -la /etc/shadow

Αυτό θα μας επιστρέψει το εξής:

-rw-r----- 1 root shadow 933 Apr 23 14:24 /etc/shadow

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

Ας δοκιμάσουμε τώρα να δώσουμε την ίδια εντολή με το "sudo":

sudo cat /etc/shadow

Το τερματικό θα μας ζητήσει τον κωδικό του χρήστη "root", τον οποίο αν πληκτρολογήσουμε σωστά θα μας ανοίξει το αρχείο!

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

sudo visudo


Διαφήμιση

Οι χρήστες και το αρχείο "etc/shadow"


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

root:*:18325:0:99999:7:::
chris:$6$04gaEkTj$QCwIaUf:18375:0:99999:7:::

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

  1. Το όνομα χρήστη. Στην περίπτωσή μας ο "root" και ο "chris".
  2. Ο κρυπτογραφημένος κωδικός πρόσβασης. Ο αστερίσκος (*) στην περίπτωση του "root" σημαίνει ότι δεν επιτρέπεται η είσοδος, ενώ αν δούμε το θαυμαστικό (!) στην ίδια θέση σημαίνει ότι ο λογαριασμός είναι κλειδωμένος.
  3. Η ημερομηνία που αλλάξαμε τελευταία φορά τον κωδικό πρόσβασης. Εκφράζεται ως ο αριθμός των ημερών που έχουν περάσει από την 1η Ιανουαρίου 1970. Στην περίπτωσή μας δηλαδή το 18325 σημαίνει ότι ο κωδικός άλλαξε 18.325 μέρες μετά την 1η Ιανουαρίου 1970, δηλαδή στις 23 Απριλίου 2020. Εάν σε αυτό το πεδίο δούμε το μηδέν (0), αυτό σημαίνει ότι ο χρήστης θα πρέπει να αλλάξει τον κωδικό πρόσβασης την επόμενη φορά που θα συνδεθεί.
  4. Η ελάχιστη ηλικία του κωδικού πρόσβασης. Εκφράζεται ως ο αριθμός των ημερών που υπολείπονται μέχρι να μας επιτρέψει το σύστημα να αλλάξουμε κωδικό. Στην περίπτωσή μας είναι 0 οπότε μας επιτρέπεται ήδη.
  5. Η μέγιστη ηλικία του κωδικού πρόσβασης. Αντίστοιχα εδώ είναι οι μέρες μετά από τις οποίες το σύστημα θα μας ζητήσει να αλλάξουμε υποχρεωτικά τον κωδικό μας. Στην περίπτωσή μας είναι 99999, ουσιαστικά δηλαδή δε θα λήξει ποτέ.
  6. Η περίοδος προειδοποίησης κωδικού πρόσβασης. Εδώ ο αριθμός 7 σημαίνει ότι επτά ημέρες πριν τη λήξη του κωδικού, το σύστημα θα μας ενημερώσει για να προετοιμαστούμε να αλλάξουμε τον κωδικό.

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

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

Σημείωση:
Επειδή η τεχνολογία και μαζί η ασφάλεια εξελίσσεται συνεχώς, πολλές Linux διανομές δε βασίζονται πλέον μόνο στο αρχείο "/etc/shadow", καθώς υπάρχουν άλλοι μηχανισμοί όπως το PAM (Pluggable Authentication Modules) που αντικαθιστούν τον έλεγχο ταυτότητας.


Το αρχείο "etc/passwd" και το εργαλείο "vipw"


Το "etc/passwd" είναι ένα ακόμη σημαντικό αρχείο που αφορά τους χρήστες του συστήματος. Εκεί θα βρούμε όλους τους χρήστες δηλαδή τα πραγματικά πρόσωπα αλλά και τα αυτόματα προγράμματα που έχουν καταχωρηθεί ως χρήστες. Μπορούμε να δούμε τα περιεχόμενά του αρχείου με την εντολή:

sudo cat /etc/passwd

Πρώτος από όλους είναι ο χρήστης "root" ο οποίος εμφανίζεται κάπως έτσι:

root:x:0:0:root:/root:/bin/bash

Ένα πραγματικό πρόσωπο, για παράδειγμα ο χρήστης "chris" θα εμφανίζεται στη λίστα ως εξής:

chris:x:1001:1001:Chris Kay,,+302310888888,,:/home/chris:/bin/bash

Ομοίως με το αρχείο "/etc/shadow" και εδώ τα πεδία πληροφοριών χωρίζονται με άνω και κάτω τελεία. Συγκεκριμένα είναι τα εξής:

  1. Το όνομα χρήστη. Στην περίπτωσή μας ο "chris".
  2. Ο κωδικός πρόσβασης του χρήστη. Ο πραγματικός κωδικός πρόσβασης δεν αποθηκεύεται εδώ. Αυτό που θα δούμε συνήθως είναι το γράμμα "x" το οποίο σημαίνει ότι ο κωδικός βρίσκεται στο αρχείο"/etc/shadow" αλλά όπως είδαμε είναι κρυπτογραφημένος. 
  3. Το αναγνωριστικό χρήστη. Είναι το UID που είπαμε στην αρχή και στην περίπτωση του "chris" είναι ο αριθμός 1001.
  4. Το αναγνωριστικό ομάδας. Είναι το GID που είδαμε επίσης προηγουμένως, το οποίο στη συγκεκριμένη περίπτωση είναι πάλι το 1001.
  5. Το πεδίο GECOS. Περιλαμβάνει διάφορες πληροφορίες για το χρήστη οι οποίες χωρίζονται με κόμμα. Εκεί θα βρούμε για παράδειγμα το πραγματικό του όνομα και το τηλέφωνό του, αν τα έχουμε συμπληρώσει παλιότερα φυσικά.
  6. Ο κεντρικός κατάλογος του χρήστη. Εδώ θα δούμε πού βρίσκονται τα προσωπικά αρχεία και οι φάκελοι του χρήστη. Για τον "chris" βρίσκονται στο "/home/chris".
  7. To κέλυφος του χρήστη. Οι περισσότεροι καταλήγουν στο προεπιλεγμένο που είναι το "/bin/bash".

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


Οι ομάδες και το αρχείο "/etc/group"


Με ένα παρόμοιο αρχείο το Linux διαχειρίζεται και τις ομάδες του συστήματος. Τα περιεχόμενά του μπορούμε να τα δούμε με την εντολή:

sudo cat /etc/group

Μερικές από τις ομάδες που θα δούμε στο αρχείο είναι οι εξής:

root:x:0:
sudo:x:27:chris
shadow:x:42:

Τα πεδία που βλέπουμε σε αυτή την περίπτωση μας λένε τα εξής:

  1. Το όνομα της ομάδας. Στην περίπτωσή μας "root", "sudo" και "shadow".
  2. Ομαδικός κωδικός πρόσβασης. Συνήθως δεν υπάρχει λόγος να οριστεί ένας κωδικός πρόσβασης.
  3. Το αναγνωριστικό ομάδας (GID). Στην περίπτωση της ομάδας "shadow" το GID είναι ο αριθμός 42.
  4. Η λίστα των χρηστών της ομάδας. Εδώ θα δούμε ποιοι χρήστες ανήκουν στη συγκεκριμένη ομάδα. Για παράδειγμα στην ομάδα "sudo" βρίσκεται ο χρήστης "chris".

Προσθήκη / αφαίρεση χρηστών


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

Τα εργαλεία για την προσθήκη χρηστών είναι το "adduser" και το "useradd", αλλά κάνουν το ίδιο πράγμα στην ουσία. Για να προσθέσουμε για παράδειγμα το χρήστη "kallis", θα πρέπει να δώσουμε μία από τις εξής εντολές:

sudo adduser kallis
sudo useradd kallis

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

Ομοίως για να αφαιρέσουμε το χρήστη "kallis" από το σύστημα, θα δώσουμε μία από τις ακόλουθες εντολές:

sudo deluser kallis
sudo userdel kallis

Όπως όλες οι εντολές του Linux έτσι και αυτές μπορούν να δεχτούν συγκεκριμένες παραμέτρους. Για παράδειγμα μπορούμε να δημιουργήσουμε το χρήστη "kallis" ο οποίος θα παραμένει κλειδωμένος μέχρι να του ορίσουμε έναν κωδικό πρόσβασης. Αυτό γίνεται με την εντολή:

sudo adduser kallis --disabled-login

Μπορούμε λοιπόν να μάθουμε όλες τις παραμέτρους του εργαλείου "adduser" και του "useradd" δίνοντας τις αντίστοιχες εντολές:

adduser -help
useradd -help

Προσθήκη / αφαίρεση ομάδων


Για να προσθέσουμε ένα group με το όνομα "business" στο σύστημά μας, δίνουμε αντίστοιχα την εντολή:

sudo addgroup business

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

groups

Για να προσθέσουμε τώρα το χρήστη "kallis" στην ομάδα "business" θα χρησιμοποιήσουμε το εργαλείο "usermod" το οποίο είναι κατά κάποιο τρόπο "η επεξεργασία χρηστών". Η εντολή που πρέπει να δώσουμε είναι η εξής:

sudo usermod -aG business kallis

Αντίστοιχα για να διαγράψουμε την ομάδα "business" δίνουμε το εξής:

sudo delgroup business

Αλλαγή κωδικών και εναλλαγή χρηστών


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

passwd

Θα μας ζητηθεί ο υπάρχων κωδικός και στη συνέχεια θα πρέπει να βάλουμε δύο φορές το νέο κωδικό. Μπορούμε επίσης να αλλάξουμε τον κωδικό και άλλων χρηστών! Για παράδειγμα για να αλλάξουμε τον κωδικό του χρήστη "kallis" θα πρέπει να δώσουμε το εξής:

sudo passwd kallis

Θα μας ζητηθεί πρώτα ο δικός μας κωδικός για να αποκτήσουμε δικαιώματα root και στη συνέχεια θα πρέπει να βάλουμε δύο φορές το νέο κωδικό για τον χρήστη "kallis".

Το δεύτερο εργαλείο είναι το "su" ("substitute users") με το οποίο μπορούμε να κάνουμε logout από τον ένα χρήστη και να κάνουμε login με έναν άλλο. Αν θέλουμε για παράδειγμα να μπούμε στο σύστημα με το χρήστη "kallis", θα δώσουμε την εντολή:

su - kallis

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

whoami

Εν κατακλείδι


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

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

Το άρθρο είναι μέρος της σειράς "Μάθε παιδί μου Linux". Δείτε επίσης:


Σχόλια

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

    ΑπάντησηΔιαγραφή
    Απαντήσεις
    1. Υπάρχει επιλογή ανώνυμου χρήστη και στο Ubuntu απλά θα πρέπει να εγκαταστήσεις το LightDM, έναντι της προεγκατεστημένης εφαρμογής login.

      Διαγραφή
    2. Ναι, το έχω κάνει αλλά όλες οι αλλαγές που έχω κάνει στο σύστημα (πχ άλλαξα την οθόνη εισόδου ή εγκατέστησα 4 browsers) περνάνε και στον λογαριασμό του ανώνυμου χωρίς βέβαια τις προσωπικές μου πληροφορίες (σελιδοδείκτες κλπ). Δεν έχει καθαρό σύστημα ο ανώνυμος, όπως είναι ας πούμε η επαναφορά στις εργοστασιακές ρυθμίσεις του android, το είχα και στα windows.

      Διαγραφή

Δημοσίευση σχολίου

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

Δείτε επίσης...

Android | Γιατί δε θα αγόραζα ποτέ smartphone της OnePlus

Φεύγω από την Google (μέρος 15) | ''Ξηλώνουμε'' τα Google apps από το Android

Ιδιωτικό απόρρητο | Το αφελές επιχείρημα του ''Δεν έχω τίποτα να κρύψω''

Docker (μέρος 7) | Στήνουμε έναν reverse proxy για τα container μας με το Traefik

Μάθε παιδί μου Linux (μέρος 11) | Δίσκοι, κατατμήσεις και σύστημα αρχείων (filesystem)

Ubuntu Touch 2020 review | Μια πραγματική mobile GNU/Linux διανομή έτοιμη για καθημερινή χρήση

Απόρρητο | ''Μπερδεύουμε'' τον αλγόριθμο Google και Facebook με ψεύτικες πληροφορίες

Android | Περιόρισε την παρακολούθηση των εφαρμογών και κόψε τις διαφημίσεις με το TrackerControl

Docker (μέρος 1) | Τι είναι και πώς το εγκαθιστούμε στον υπολογιστή μας;

Android | Βάλε στην ''απομόνωση'' τις εφαρμογές που δεν εμπιστεύεσαι με το Shelter