Linux Professional Institute Learning Logo.
Mετάβαση στο κύριο περιεχόμενο
  • Αρχική
    • Διαθέσιμοι Πόροι
    • Μαθησιακά Υλικά LPI
    • Γίνε Συνεργάτης
    • Συνεργάτες Εκδόσεων
    • Γίνε Συνεργάτης Εκδόσεων
    • Σχετικά
    • FAQ
    • Συνεργάτες
    • Roadmap
    • Επικοινωνία
  • LPI.org
5.1 Μάθημα 1
Θέμα 1: Η κοινότητα Linux και μια καριέρα στον Ανοιχτό Κώδικα
1.1 Εξέλιξη του Linux και Δημοφιλή Λειτουργικά Συστήματα
  • 1.1 Μάθημα 1
1.2 Κύριες Εφαρμογές Ανοιχτού Κώδικα
  • 1.2 Μάθημα 1
1.3 Λογισμικό Ανοιχτού Κώδικα και Αδειοδότηση
  • 1.3 Μάθημα 1
1.4 Δεξιότητες ICT και Εργασία στο Linux
  • 1.4 Μάθημα 1
Θέμα 2: Βρίσκοντας το Δρόμο σας σε ένα Σύστημα Linux
2.1 Βασικά Στοιχεία Γραμμής Εντολών
  • 2.1 Μάθημα 1
  • 2.1 Μάθημα 2
2.2 Χρήση της Γραμμής Εντολών για Λήψη Βοήθειας
  • 2.2 Μάθημα 1
2.3 Χρήση Καταλόγων και Παράθεση Αρχείων
  • 2.3 Μάθημα 1
  • 2.3 Μάθημα 2
2.4 Δημιουργία, Μετακίνηση και Διαγραφή Αρχείων
  • 2.4 Μάθημα 1
Θέμα 3: Η Δύναμη της Γραμμής Εντολών
3.1 Αρχειοθέτηση Αρχείων στη Γραμμή Εντολών
  • 3.1 Μάθημα 1
3.2 Αναζήτηση και Εξαγωγή Δεδομένων από Αρχεία
  • 3.2 Μάθημα 1
  • 3.2 Μάθημα 2
3.3 Μετατροπή Εντολών σε Σενάριο
  • 3.3 Μάθημα 1
  • 3.3 Μάθημα 2
Θέμα 4: Το Λειτουργικό Σύστημα Linux
4.1 Επιλογή Λειτουργικού Συστήματος
  • 4.1 Μάθημα 1
4.2 Κατανόηση του Υλικού του Υπολογιστή
  • 4.2 Μάθημα 1
4.3 Πού Αποθηκεύονται τα Δεδομένα
  • 4.3 Μάθημα 1
  • 4.3 Μάθημα 2
4.4 Ο Υπολογιστής σας στο Δίκτυο
  • 4.4 Μάθημα 1
Θέμα 5: Ασφάλεια και Δικαιώματα Αρχείων
5.1 Βασική Ασφάλεια και Αναγνώριση Τύπων Χρηστών
  • 5.1 Μάθημα 1
5.2 Δημιουργία Χρηστών και Ομάδων
  • 5.2 Μάθημα 1
5.3 Διαχείριση Δικαιωμάτων και Ιδιοκτησίας Αρχείων
  • 5.3 Μάθημα 1
5.4 Ειδικοί Κατάλογοι και Αρχεία
  • 5.4 Μάθημα 1
How to get certified
  1. Θέμα 5: Ασφάλεια και Δικαιώματα Αρχείων
  2. 5.1 Βασική Ασφάλεια και Αναγνώριση Τύπων Χρηστών
  3. 5.1 Μάθημα 1

5.1 Μάθημα 1

Πιστοποιητικό:

Linux Essentials

Έκδοση:

1.6

Θέμα:

5 Ασφάλεια και Δικαιώματα Αρχείων

Σκοπός:

5.1 Βασική Ασφάλεια και Αναγνώριση Τύπων Χρηστών

Μάθημα:

1 απο 1

Εισαγωγή

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

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

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

Λογαριασμοί

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

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

Αναγνωριστικά (UIDs/GIDs)

Τα Αναγνωριστικά Χρηστών και Ομάδων [User and Group Identifiers] (UID/GID) είναι οι βασικές, απαριθμημένες αναφορές σε λογαριασμούς. Οι πρώτες υλοποιήσεις ήταν περιορισμένες σε ακέραιους 16-bit (τιμές απο 0 έως 65535), αλλά τα συστήματα του 21ου αιώνα υποστηρίζουν 64-bit UID και GID. Οι χρήστες και οι ομάδες απαριθμούνται ανεξάρτητα, επομένως το ίδιο αναγνωριστικό [ID] μπορεί να αντιστοιχεί τόσο σε χρήστη όσο και σε ομάδα.

Κάθε χρήστης δεν έχει μόνο ένα UID, αλλά και ένα πρωταρχικό GID. Το πρωταρχικό GID για έναν χρήστη μπορεί να είναι μοναδικό για αυτόν τον χρήστη και μπορεί να καταλήξει να μην χρησιμοποιείται από άλλους χρήστες. Ωστόσο, αυτή η ομάδα θα μπορούσε επίσης να είναι μια ομάδα κοινής χρήσης από πολλούς χρήστες. Εκτός από αυτές τις πρωταρχικές ομάδες, κάθε χρήστης μπορεί να είναι μέλος και σε άλλες ομάδες.

Από προεπιλογή, στα συστήματα Linux, κάθε χρήστης εκχωρείται σε μια ομάδα με το ίδιο όνομα με το όνομα χρήστη του και το ίδιο GID με το UID του. Για παράδειγμα, δημιουργήστε έναν νέο χρήστη με το όνομα newuser και, από προεπιλογή, η προεπιλεγμένη ομάδα του είναι επίσης newuser.

Ο Λογαριασμός Υπερχρήστη

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

Η προεπιλεγμένη ομάδα για τον superuser έχει το GID 0 και ονομάζεται επίσης root. Ο αφετηριακός κατάλογος για τον superuser είναι ένας αποκλειστικός κατάλογος ανώτατου επιπέδου, /root, στον οποίο έχει πρόσβαση μόνο ο ίδιος ο χρήστης root.

Τυπικοί Λογαριασμοί Χρηστών

Όλοι οι λογαριασμοί εκτός από τον root είναι τεχνικά λογαριασμοί κανονικών χρηστών, αλλά σε ένα σύστημα Linux ο κοινός όρος λογαριασμός χρήστη σημαίνει συχνά έναν “κανονικό” (μη προνομιούχο) λογαριασμό χρήστη. Συνήθως έχουν τις ακόλουθες ιδιότητες, με επιλεγμένες εξαιρέσεις:

  • UID που ξεκινούν από το 1000 (4 ψηφία), αν και ορισμένα παλαιού τύπου συστήματα μπορεί να ξεκινούν από το 500.

  • Ένας καθορισμένος αφετηριακός κατάλογος, συνήθως ένας υποκατάλογος του /home, ανάλογα με την τοπική διαμόρφωση.

  • Ένα καθορισμένο shell σύνδεσης. Στο Linux το προεπιλεγμένο shell είναι συνήθως το Bourne Again Shell (/bin/bash), αν και άλλα μπορεί να είναι διαθέσιμα.

Εάν ένας λογαριασμός χρήστη δεν έχει ένα έγκυρο shell στα χαρακτηριστικά του, ο χρήστης δεν θα μπορεί να ανοίξει ένα διαδραστικό shell. Συνήθως το /sbin/nologin χρησιμοποιείται ως μη έγκυρο shell. Αυτό μπορεί να είναι σκόπιμο, εάν ο χρήστης θα πιστοποιηθεί μόνο για services εκτός από πρόσβαση στη κονσόλα ή SSH, π.χ. μόνο για ασφαλή πρόσβαση FTP (sftp).

Note

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

Λογαριασμοί Συστήματος

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

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

  • Τα UID είναι συνήθως κάτω από το 100 (2ψήφιο) ή 500-1000 (3ψήφιο).

  • Είτε χωρίς αποκλειστικό αφετηριακό κατάλογο είτε με ένα κατάλογο που συνήθως δεν βρίσκεται κάτω από το /home.

  • Δεν υπάρχει έγκυρο shell σύνδεσης (συνήθως /sbin/nologin), με σπάνιες εξαιρέσεις.

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

Note

Από τη σκοπιά του LPI Linux Essentials, οι λογαριασμοί συστήματος είναι UID <1000, με 2 ή 3 ψηφία UID (και GID).

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

Λογαριασμοί Υπηρεσίας

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

Σε πολλά εγχειρίδια, οι λογαριασμοί συστήματος και υπηρεσιών είναι παρόμοιοι και εναλλάσσονται συχνά. Αυτό περιλαμβάνει τη θέση των αφετηριακών καταλόγων που είναι συνήθως εκτός του /home, εάν ορίζονται καθόλου (οι λογαριασμοί services είναι συχνά πιο πιθανό να έχουν έναν, σε σύγκριση με τους λογαριασμούς συστήματος), και χωρίς έγκυρο shell σύνδεσης. Αν και δεν υπάρχει αυστηρός ορισμός, η πρωταρχική διαφορά μεταξύ λογαριασμών συστήματος και services αναλύεται σε UID/GID.

Λογαριασμός συστήματος

UID/GID <100 (2ψήφιο) ή <500-1000 (3ψήφιο)

Λογαριασμός service

UID/GID >1000 (4+ ψηφία), αλλά όχι “βασικός” ή “κανονικός” λογαριασμός χρήστη, ένας λογαριασμός για services, με UID/GID >1000 (4+ ψηφία)

Ορισμένες διανομές Linux εξακολουθούν να έχουν προ-δεσμευμένους λογαριασμούς services κάτω από UID <100, και αυτοί θα μπορούσαν επίσης να θεωρηθούν ως λογαριασμοί συστήματος, παρόλο που δεν έχουν δημιουργηθεί κατά την εγκατάσταση του συστήματος. Π.χ., σε διανομές Linux που βασίζονται στο Fedora (συμπεριλαμβανομένου του Red Hat), ο χρήστης για τον web server Apache έχει UID (και GID) 48, σαφώς έναν λογαριασμό συστήματος, παρόλο που έχει έναν αφετηριακό κατάλογο (συνήθως στο /usr/share/httpd ή στο /var/www/html/).

Note

Από τη σκοπιά του LPI Linux Essentials, οι λογαριασμοί συστήματος είναι UID <1000 και οι λογαριασμοί κανονικών χρηστών είναι UID >1000. Δεδομένου ότι οι λογαριασμοί κανονικών χρηστών είναι >1000, αυτά τα UID μπορούν επίσης να περιλαμβάνουν λογαριασμούς services.

Shells Σύνδεσης και Κατάλογοι Αφετηρίας

Ορισμένοι λογαριασμοί έχουν shell σύνδεσης, ενώ άλλοι όχι για λόγους ασφαλείας, καθώς δεν απαιτούν διαδραστική πρόσβαση. Το προεπιλεγμένο shell σύνδεσης στις περισσότερες διανομές Linux είναι το Bourne Again Shell ή bash, αλλά μπορεί να είναι διαθέσιμα άλλα shells, όπως το C Shell (csh), το shell Korn (ksh) ή το shell Z (zsh ), για να αναφέρουμε μερικά.

Ένας χρήστης μπορεί να αλλάξει το shell σύνδεσής του χρησιμοποιώντας την εντολή chsh. Από προεπιλογή, η εντολή εκτελείται σε διαδραστική λειτουργία και εμφανίζει μια ερώτηση που ρωτά ποιο shell πρέπει να χρησιμοποιηθεί. Η απάντηση θα πρέπει να είναι το πλήρες path προς το δυαδικό shell, όπως παρακάτω:

$ chsh

Changing the login shell for emma
Enter the new value, or press ENTER for the default
	Login Shell [/bin/bash]: /usr/bin/zsh

Μπορείτε επίσης να εκτελέσετε την εντολή σε μη διαδραστική λειτουργία, με την παράμετρο -s ακολουθούμενη από το path προς το δυαδικό, όπως:

$ chsh -s /usr/bin/zsh

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

Λήψη Πληροφοριών για τους Χρήστες σας

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

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

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

$ id
uid=1024(emma) gid=1024(emma) 1024(emma),20(games),groups=10240(netusers),20480(netadmin) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

Στην προηγούμενη παράθεση, ο χρήστης (emma) έχει αναγνωριστικά τα οποία αναλύονται ως εξής:

  • 1024 = Αναγνωριστικό Χρήστη (UID), ακολουθούμενο από το όνομα χρήστη (κοινό όνομα γνωστό και ως όνομα σύνδεσης) σε παρένθεση.

  • 1024 = το πρωταρχικό Αναγνωριστικό Ομάδας (GID), ακολουθούμενο από το όνομα ομάδας (κοινό όνομα) σε παρένθεση.

  • Μια λίστα με επιπλέον GID (ονόματα ομάδων) στα οποία ανήκει επίσης ο χρήστης.

Η παράθεση της τελευταίας φοράς που οι χρήστες έχουν συνδεθεί στο σύστημα γίνεται με την εντολή last:

$ last
emma     pts/3        ::1              Fri Jun 14 04:28   still logged in
reboot   system boot  5.0.17-300.fc30. Fri Jun 14 04:03   still running
reboot   system boot  5.0.17-300.fc30. Wed Jun  5 14:32 - 15:19  (00:46)
reboot   system boot  5.0.17-300.fc30. Sat May 25 18:27 - 19:11  (00:43)
reboot   system boot  5.0.16-100.fc28. Sat May 25 16:44 - 17:06  (00:21)
reboot   system boot  5.0.9-100.fc28.x Sun May 12 14:32 - 14:46  (00:14)
root     tty2                          Fri May 10 21:55 - 21:55  (00:00)
	...

Οι πληροφορίες που παρατίθενται στις στήλες μπορεί να διαφέρουν, αλλά ορισμένες αξιοσημείωτες εγγραφές στην προηγούμενη λίστα είναι:

  • Ένας χρήστης (emma) συνδέθηκε μέσω του δικτύου (ψεύδο TTY pts/3) και εξακολουθεί να είναι συνδεδεμένος.

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

  • Ο superuser (root) συνδέθηκε μέσω εικονικής κονσόλας (TTY tty2), για λίγο, στα μέσα Μαΐου.

Μια παραλλαγή της εντολής last είναι η εντολή lastb, η οποία παραθέτει όλες τις τελευταίες αποτυχημένες προσπάθειες σύνδεσης.

Οι εντολές who και w παραθέτουν μόνο τις ενεργές συνδέσεις στο σύστημα:

$ who
emma  pts/3        2019-06-14 04:28 (::1)

$ w
 05:43:41 up  1:40,  1 user,  load average: 0.25, 0.53, 0.51
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
emma  pts/3     04:28    1:14m  0.04s  0.04s -bash

Και οι δύο εντολές παραθέτουν μερικές από τις ίδιες πληροφορίες. Για παράδειγμα, ένας χρήστης (emma) είναι συνδεδεμένος με μια ψευδο συσκευή TTY (pts/3) και η ώρα σύνδεσης είναι 04:28.

Η εντολή w παραθέτει περισσότερες πληροφορίες, συμπεριλαμβανομένων των εξής:

  • Την τρέχουσα ώρα και πόσο καιρό έχει λειτουργήσει το σύστημα

  • Πόσοι χρήστες είναι συνδεδεμένοι

  • Τους μέσους όρους φόρτου για τα τελευταία 1, 5 και 15 λεπτά

Και τις πρόσθετες πληροφορίες για το κάθε ενεργό session λειτουργίας χρήστη.

  • Επιλέξτε, συνολικοί χρόνοι χρήσης της CPU (IDLE, JCPU και PCPU)

  • Το τρέχον process (-bash). Ο συνολικός χρόνος χρήσης της CPU αυτού του process είναι το τελευταίο στοιχείο (PCPU).

Και οι δύο εντολές έχουν περαιτέρω επιλογές για να παραθέσουν διάφορες, πρόσθετες πληροφορίες.

Αλλαγή Χρηστών και Κλιμάκωση Προνομίου

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

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

Ωστόσο, υπάρχουν εντολές που επιτρέπουν την κλιμάκωση των προνομίων όταν χρειάζεται. Δύο από τις πιο σημαντικές είναι οι su και το sudo.

Στα περισσότερα συστήματα Linux σήμερα, η εντολή su χρησιμοποιείται μόνο για την κλιμάκωση των δικαιωμάτων στον root, ο οποίος είναι ο προεπιλεγμένος χρήστης εάν δεν έχει καθοριστεί ένα όνομα χρήστη μετά το όνομα της εντολής. Αν και μπορεί να χρησιμοποιηθεί για αλλαγή σε άλλο χρήστη, δεν είναι καλή πρακτική: οι χρήστες θα πρέπει να συνδέονται από άλλο σύστημα, μέσω δικτύου ή από φυσική κονσόλα ή τερματικό στο σύστημα.

emma ~$ su -
Password:
root ~#

Αφού εισάγετε τον κωδικό πρόσβασης superuser (root), ο χρήστης έχει ένα superuser shell (προσέξτε το # στο τέλος της γραμμής εντολών) και είναι, για όλες τις προθέσεις και σκοπούς, ο superuser (root).

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

Το σύμβολο του δολαρίου ($) θα πρέπει να τερματίζει τη γραμμή εντολών για ένα μη προνομιούχο shell χρήστη, ενώ το σύμβολο της δίεσης (#) θα πρέπει να τερματίζει τη γραμμή εντολών για το superuser shell (root). Συνιστάται ιδιαίτερα ο τελικός χαρακτήρας οποιουδήποτε prompt ποτέ να μην αλλάξει από αυτό το "καθολικά κατανοητό" πρότυπο, καθώς αυτή η ονοματολογία χρησιμοποιείται σε εκπαιδευτικό υλικό, συμπεριλαμβανομένων αυτών.

Warning

Ποτέ μην αλλάξετε στον superuser (root) χωρίς να περάσετε την παράμετρο του shell σύνδεσης (-). Εκτός και εάν υπάρχει ρητή οδηγία για το αντίθετο από το λειτουργικό σύστημα ή τον προμηθευτή λογισμικού όταν απαιτείται su, να εκτελείτε πάντα το su - με εξαιρετικά περιορισμένες εξαιρέσεις. Τα περιβάλλοντα χρήστη ενδέχεται να προκαλέσουν ανεπιθύμητες αλλαγές διαμόρφωσης και προβλήματα όταν χρησιμοποιούνται σε πλήρη λειτουργία προνομίου superuser.

Ποιο είναι το μεγαλύτερο πρόβλημα με τη χρήση του su για αλλαγή στον superuser (root); Εάν το session ενός κανονικού χρήστη έχει παραβιαστεί, ο κωδικός πρόσβασης superuser (root) θα μπορούσε να καταγραφεί. Εκεί μπαίνει το “Switch User Do" (ή "`Superuser Do”):

$ cat /sys/devices/virtual/dmi/id/board_serial
cat: /sys/devices/virtual/dmi/id/board_serial: Permission denied

$ sudo cat /sys/devices/virtual/dmi/id/board_serial
[sudo] password for emma:
/6789ABC/

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

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

Tip

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

Αρχεία Ελέγχου Πρόσβασης

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

Τα κύρια αρχεία που σχετίζονται με τους λογαριασμούς χρηστών, τα χαρακτηριστικά και τον έλεγχο πρόσβασης είναι:

/etc/passwd

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

/etc/group

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

/etc/shadow

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

/etc/gshadow

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

Warning

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

Από προεπιλογή, κάθε χρήστης μπορεί να εισέλθει στο /etc και να διαβάσει τα αρχεία /etc/passwd και /etc/group. Και επίσης από προεπιλογή κανένας χρήστης, εκτός από τον root, δεν μπορεί να διαβάσει τα αρχεία /etc/shadow ή /etc/gshadow.

Υπάρχουν επίσης αρχεία που σχετίζονται με την κλιμάκωση βασικών προνομίων σε συστήματα Linux, όπως στις εντολές su και sudo. Από προεπιλογή, αυτά είναι προσβάσιμα μόνο από τον χρήστη root.

/etc/sudoers

Αυτό το αρχείο ελέγχει ποιος μπορεί να χρησιμοποιήσει την εντολή sudo και πώς.

/etc/sudoers.d

Αυτός ο κατάλογος μπορεί να περιέχει αρχεία που συμπληρώνουν τις ρυθμίσεις στο αρχείο sudoers.

Από τη σκοπιά της εξέτασης LPI Linux Essentials, να γνωρίζετε απλώς το path και το όνομα αρχείου του προεπιλεγμένου αρχείου ρύθμισης παραμέτρων sudo, /etc/sudoers. Η διαμόρφωσή του ξεφεύγει από το πεδίο εφαρμογής αυτού του υλικού.

Warning

Παρόλο που το /etc/sudoers είναι αρχείο κειμένου, δεν πρέπει ποτέ να το επεξεργαστείτε απευθείας. Εάν απαιτούνται αλλαγές στο περιεχόμενό του, θα πρέπει να γίνουν χρησιμοποιώντας το βοηθητικό πρόγραμμα visudo.

/etc/passwd

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

Η τυπική σύνταξη για μια γραμμή σε αυτό το αρχείο είναι:

USERNAME:PASSWORD:UID:GID:GECOS:HOMEDIR:SHELL

Όπου:

USERNAME

Το όνομα χρήστη γνωστό και ως login (όνομα), όπως root, nobody, emma.

PASSWORD

Κληροδοτημένη θέση του hash του κωδικού πρόσβασης. Σχεδόν πάντα x, υποδεικνύοντας ότι ο κωδικός πρόσβασης είναι αποθηκευμένος στο αρχείο /etc/shadow.

UID

Αναγνωριστικό χρήστη (UID), όπως 0, 99, 1024.

GID

Προεπιλεγμένο αναγνωριστικό ομάδας (GID), όπως 0, 99, 1024.

GECOS

Μια λίστα CSV με πληροφορίες χρήστη, συμπεριλαμβανομένου του ονόματος, της τοποθεσίας, του αριθμού τηλεφώνου. Για παράδειγμα: Emma Smith,42 Douglas St,555.555.5555

HOMEDIR

Path προς τον αφετηριακό κατάλογο του χρήστη, όπως /root, /home/emma κ.λ.π.

SHELL

Το προεπιλεγμένο shell για αυτόν τον χρήστη, όπως /bin/bash, /sbin/nologin, /bin/ksh κ.λ.π.

Για παράδειγμα, η ακόλουθη γραμμή περιγράφει τον χρήστη emma:

emma:x:1000:1000:Emma Smith,42 Douglas St,555.555.5555:/home/emma:/bin/bash
Κατανόηση του Πεδίου GECOS

Το πεδίο GECOS περιέχει τρία (3) ή περισσότερα πεδία, οριοθετημένα με κόμμα (,), γνωστό και ως μια λίστα Comma Separated Values (CSV). Αν και δεν υπάρχει επιβεβλημένο πρότυπο, τα πεδία είναι συνήθως με την ακόλουθη σειρά:

NAME,LOCATION,CONTACT

Όπου:

NAME

είναι το “Πλήρες Όνομα" του χρήστη ή το "`Όνομα Λογισμικού” στην περίπτωση λογαριασμού service.

LOCATION

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

CONTACT

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

Τα πρόσθετα πεδία ενδέχεται να περιλαμβάνουν πρόσθετες πληροφορίες επικοινωνίας, όπως αριθμό κατοικίας ή διεύθυνση e-mail. Για να αλλάξετε τις πληροφορίες στο πεδίο GECOS, χρησιμοποιήστε την εντολή chfn και απαντήστε στις ερωτήσεις, όπως παρακάτω. Εάν δεν παρασχεθεί όνομα χρήστη μετά το όνομα της εντολής, θα αλλάξετε τις πληροφορίες για τον τρέχοντα χρήστη:

$ chfn

Changing the user information for emma
Enter the new value, or press ENTER for the default
	Full Name: Emma Smith
	Room Number []: 42
	Work Phone []: 555.555.5555
	Home Phone []: 555.555.6666

/etc/group

Το αρχείο /etc/group περιέχει πεδία που οριοθετούνται πάντα με άνω και κάτω τελεία (:), που αποθηκεύουν βασικές πληροφορίες σχετικά με τις ομάδες στο σύστημα. Μερικές φορές ονομάζεται “αρχείο ομάδας”. Η σύνταξη για κάθε γραμμή είναι:

NAME:PASSWORD:GID:MEMBERS

Όπου:

NAME

είναι το όνομα της ομάδας, όπως root, users, emma κ.λ.π.

PASSWORD

Κληροδοτημένη θέση ενός προαιρετικού hash κωδικού πρόσβασης ομάδας. Σχεδόν πάντα x, υποδεικνύοντας ότι ο κωδικός πρόσβασης (αν έχει οριστεί) είναι αποθηκευμένος στο αρχείο /etc/gshadow.

GID

Αναγνωριστικό ομάδας (GID), όπως 0, 99, 1024.

MEMBERS

μια λίστα ονομάτων χρηστών που είναι μέλη της ομάδας, διαχωρισμένη με κόμματα, όπως jsmith,emma.

Το παρακάτω παράδειγμα δείχνει μια γραμμή που περιέχει πληροφορίες σχετικά με την ομάδα students:

students:x:1023:jsmith,emma

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

Note

Η χρήση κωδικών πρόσβασης για ομάδες δεν εμπίπτει στο πεδίο εφαρμογής αυτής της ενότητας, ωστόσο, εάν οριστεί, το hash του κωδικού πρόσβασης αποθηκεύεται στο αρχείο /etc/gshadow. Αυτό είναι επίσης εκτός του πεδίου εφαρμογής αυτής της ενότητας.

/etc/shadow

Ο ακόλουθος πίνακας παραθέτει τα χαρακτηριστικά που είναι αποθηκευμένα στο αρχείο /etc/shadow, που συνήθως αναφέρεται ως “shadow file”. Το αρχείο περιέχει πεδία που οριοθετούνται πάντα με άνω και κάτω τελεία (:). Αν και το αρχείο έχει πολλά πεδία, τα περισσότερα είναι εκτός του πεδίου αυτού του μαθήματος, εκτός από τα δύο πρώτα.

Η βασική σύνταξη για μια γραμμή σε αυτό το αρχείο είναι:

USERNAME:PASSWORD:LASTCHANGE:MINAGE:MAXAGE:WARN:INACTIVE:EXPDATE

Όπου:

USERNAME

Το όνομα χρήστη (ίδιο με το /etc/passwd), όπως το root, nobody, emma.

PASSWORD

Ένα μονής κατεύθυνσης hash του κωδικού πρόσβασης, συμπεριλαμβανομένου ενός προηγηθέντος salt. Για παράδειγμα: !!, !$1$01234567$ABC…​, $6$012345789ABCDEF$012…​.

LASTCHANGE

Ημερομηνία της τελευταίας αλλαγής κωδικού πρόσβασης σε ημέρες από την “εποχή” [epoch], όπως 17909.

MINAGE

Ελάχιστη ηλικία κωδικού πρόσβασης σε ημέρες.

MAXAGE

Μέγιστη ηλικία κωδικού πρόσβασης σε ημέρες.

WARN

Προειδοποιητική περίοδος πριν από τη λήξη του κωδικού πρόσβασης, σε ημέρες.

INACTIVE

Μέγιστη ηλικία κωδικού πρόσβασης μετά τη λήξη, σε ημέρες.

EXPDATE

Ημερομηνία λήξης κωδικού πρόσβασης, σε ημέρες από την “εποχή”.

Στο παρακάτω παράδειγμα, μπορείτε να δείτε ένα δείγμα καταχώρησης από το αρχείο /etc/shadow. Λάβετε υπόψη ότι ορισμένες τιμές, όπως INACTIVE και EXPDATE δεν έχουν καθοριστεί.

emma:$6$nP532JDDogQYZF8I$bjFNh9eT1xpb9/n6pmjlIwgu7hGjH/eytSdttbmVv0MlyTMFgBIXESFNUmTo9EGxxH1OT1HGQzR0so4n1npbE0:18064:0:99999:7:::

Η “εποχή” ενός συστήματος POSIX είναι τα μεσάνυχτα (0000), της Παγκόσμια Ώρα Συντεταγμένων (UTC), την Πέμπτη 1η Ιανουαρίου 1970. Οι περισσότερες ημερομηνίες και ώρες POSIX είναι είτε σε δευτερόλεπτα από την “εποχή”, είτε στη περίπτωση του αρχείου /etc/shadow, ημέρες από την “εποχή”.

Note

Το shadow αρχείο έχει σχεδιαστεί για να είναι αναγνώσιμο μόνο από τον superuser και από επιλεγμένα services ελέγχου ταυτότητας του βασικού συστήματος που ελέγχουν το μονής κατεύθυνσης hash του κωδικού πρόσβασης κατά τη σύνδεση ή κατά άλλο χρόνο ελέγχου της ταυτότητας.

Παρόλο που υπάρχουν διαφορετικές λύσεις ελέγχου ταυτότητας, η στοιχειώδης μέθοδος αποθήκευσης κωδικού πρόσβασης είναι η μονής κατεύθυνσης hash function. Αυτό γίνεται έτσι ώστε ο κωδικός πρόσβασης να μην αποθηκεύεται ποτέ σε καθαρό κείμενο σε ένα σύστημα, καθώς η συνάρτηση hashing είναι μη αναστρέψιμη. Μπορείτε να μετατρέψετε έναν κωδικό πρόσβασης σε hash, αλλά (ιδανικά) δεν είναι δυνατό να μετατρέψετε ένα hash σε κωδικό πρόσβασης.

Το πολύ, απαιτείται μια μέθοδος brute force για το hashing όλων των συνδυασμών ενός κωδικού πρόσβασης, μέχρι να ταιριάζει κάποιος. Για να περιοριστεί το πρόβλημα του σπασίματος ενός hash κωδικού πρόσβασης σε ένα σύστημα, τα συστήματα Linux χρησιμοποιούν ένα τυχαίο “salt” σε κάθε hash κωδικού πρόσβασης για έναν χρήστη. Έτσι, το hash για έναν κωδικό πρόσβασης χρήστη σε ένα σύστημα Linux συνήθως δεν θα είναι ο ίδιος όπως σε άλλο σύστημα Linux, ακόμα κι αν ο κωδικός πρόσβασης είναι ο ίδιος.

Στο αρχείο /etc/shadow, ο κωδικός πρόσβασης μπορεί να έχει διάφορες μορφές. Αυτές οι μορφές περιλαμβάνουν συνήθως τα ακόλουθα:

!!

Αυτό σημαίνει έναν “απενεργοποιημένο” λογαριασμό (δεν είναι δυνατός ο έλεγχος ταυτότητας), χωρίς αποθηκευμένο hash κωδικού πρόσβασης.

!$1$01234567$ABC…​

Ένας “απενεργοποιημένος” λογαριασμός (λόγω του αρχικού θαυμαστικού), με μια προγενέστερη συνάρτηση hash, hash salt και μια hash συμβολοσειρά αποθηκευμένη.

$1$0123456789ABC$012…​

Ένας “ενεργοποιημένος” λογαριασμός με αποθηκευμένη συνάρτηση hash, hash salt και hash συμβολοσειρά.

Η συνάρτηση hash, το hash salt και η hash συμβολοσειρά προηγούνται και οριοθετούνται από ένα σύμβολο δολαρίου ($). Το μήκος του hash salt πρέπει να είναι μεταξύ οκτώ και δεκαέξι (8-16) χαρακτήρων. Παραδείγματα από τα τρία πιο κοινά είναι τα εξής:

$1$01234567$ABC…​

Μια συνάρτηση hash του MD5 (1), με ένα παράδειγμα μήκους hash οκτώ.

$5$01234567ABCD$012…​

Μια συνάρτηση hash του SHA256 (5), με ένα παράδειγμα μήκους hash δώδεκα.

$6$01234567ABCD$012…​

Μια συνάρτηση hash του SHA512 (6), με ένα παράδειγμα μήκους hash δώδεκα.

Note

Η συνάρτηση hash MD5 θεωρείται μη ασφαλής κρυπτογραφικά με το σημερινό επίπεδο (δεκαετία 2010 και μεταγενέστερα) του ASIC και ακόμη και της γενικής απόδοσης SIMD υπολογιστών. Για παράδειγμα, τα Ομοσπονδιακά Πρότυπα Επεξεργασίας Πληροφοριών των ΗΠΑ (FIPS) δεν επιτρέπουν τη χρήση του MD5 για οποιεσδήποτε κρυπτογραφικές λειτουργίες, μόνο για πολύ περιορισμένες πτυχές επικύρωσης, αλλά όχι για την ακεραιότητα των ψηφιακών υπογραφών ή για παρόμοιους σκοπούς.

Από τη σκοπιά των σκοπών και της εξέτασης του LPI Linux Essentials, κατανοήστε απλώς ότι το hash κωδικού πρόσβασης για έναν τοπικό χρήστη αποθηκεύεται μόνο στο αρχείο /etc/shadow το οποίο μόνο επιλεγμένες, services ελέγχου ταυτότητας μπορούν να διαβάσουν ή ο superuser μπορεί να τροποποιήσει μέσω άλλων εντολών .

Καθοδηγούμενες Ασκήσεις

  1. Εξετάστε την ακόλουθη έξοδο της εντολής id:

    $ id emma
    uid=1000(emma) gid=1000(emma) groups=1000(emma),4(adm),5(tty),10(uucp),20(dialout),27(sudo),46(plugdev)

    Σε ποια αρχεία είναι αποθηκευμένα τα ακόλουθα χαρακτηριστικά;

    UID και GID

    Ομάδες

    • Επιπλέον, σε ποιο αρχείο είναι αποθηκευμένος ο κωδικός πρόσβασης χρήστη;

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

    • Ασύμμετρη

    • Μονής κατεύθυνσης hash

    • Συμμετρική

    • ROT13

  3. Εάν ένας λογαριασμός έχει αναγνωριστικό χρήστη (UID) που απαριθμείται κάτω από το 1000, τι τύπος λογαριασμού είναι αυτός;

  4. Πώς μπορείτε να λάβετε μια λίστα με τις ενεργές συνδέσεις στο σύστημά σας, καθώς και έναν αριθμό από αυτές;

  5. Χρησιμοποιώντας την εντολή grep, πήραμε το παρακάτω αποτέλεσμα με πληροφορίες για τoν χρήστη emma.

    $ grep emma /etc/passwd
    emma:x:1000:1000:Emma Smith,42 Douglas St,555.555.5555,:/home/emma:/bin/ksh

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

    Όνομα χρήστη

    Κωδικός πρόσβασης

    UID

    Πρωταρχικό GID

    GECOS

    Αφετηριακός Κατάλογος

    Κέλυφος

Ασκήσεις Εξερεύνησης

  1. Συγκρίνετε τα αποτελέσματα του last με τα w και who. Ποιες λεπτομέρειες λείπουν από καθεμία από τις εντολές σε σύγκριση μεταξύ τους;

  2. Δοκιμάστε να δώσετε τις εντολές who και w -his.

    • Ποιες πληροφορίες έχουν αφαιρεθεί από την έξοδο της εντολής w με τις επιλογές “no header” (-h) και “short” (-s);

    • Ποιες πληροφορίες έχουν προστεθεί στην έξοδο της εντολής w με την επιλογή “ip address” (-i);

  3. Ποιο αρχείο είναι το αρχείο που αποθηκεύει το μονής κατεύθυνσης hash του κωδικού πρόσβασης ενός λογαριασμού χρήστη;

  4. Ποιο αρχείο περιέχει τη λίστα των ομάδων στις οποίες είναι μέλος ένας λογαριασμός χρήστη; Ποια λογική θα μπορούσε να χρησιμοποιηθεί για τη σύνταξη μιας λίστας ομάδων στις οποίες είναι μέλος ένας λογαριασμός χρήστη;

  5. Ένα ή περισσότερα (1+) από τα ακόλουθα αρχεία δεν είναι αναγνώσιμα από τακτικούς, μη προνομιούχους χρήστες, από προεπιλογή. Ποια από όλα;

    • /etc/group

    • /etc/passwd

    • /etc/shadow

    • /etc/sudoers

  6. Πώς θα αλλάζατε το shell σύνδεσης του τρέχοντος χρήστη στο Korn Shell (/usr/bin/ksh) σε μη διαδραστική λειτουργία;

  7. Γιατί ο αφετηριακός κατάλογος του χρήστη root δεν τοποθετείται στον κατάλογο /home;

Σύνοψη

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

Όλες αυτές οι πληροφορίες αποθηκεύονται στα ακόλουθα τέσσερα αρχεία, τα οποία παρέχουν τους πιο βασικούς, τοπικούς ελέγχους πρόσβασης ασφαλείας σε ένα σύστημα Linux:

/etc/passwd

Όλα τα χαρακτηριστικά POSIX του λογαριασμού του τοπικού χρήστη συστήματος, εκτός από το hash κωδικού πρόσβασης, αναγνώσιμα από όλους.

/etc/group

Όλα τα χαρακτηριστικά POSIX του λογαριασμού της τοπικής ομάδας συστήματος, αναγνώσιμα από όλους.

/etc/shadow

Όλοι τα hashes κωδικών πρόσβασης των τοπικών χρήστών συστήματος (και πληροφορίες λήξης), μη αναγνώσιμες από καμία (μόνο επιλεγμένα processes).

/etc/sudoers

Όλες οι πληροφορίες/παραχωρήσεις κλιμάκωσης των τοπικών προνομίων συστήματος από την εντολή `sudo.

Οι ακόλουθες εντολές συζητήθηκαν σε αυτό το μάθημα:

id

Παραθέστε τα πραγματικά (ή αποτελεσματικά) αναγνωριστικά χρηστών και ομάδων.

last

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

who

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

w

Παρόμοια με το who αλλά με πρόσθετες πληροφορίες.

su

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

sudo

Αλλαγή Χρήστη (ή Υπερχρήστη) Εκτέλεσε, εάν έχει δικαίωμα, ο τρέχων χρήστης εισάγει τον δικό του κωδικό πρόσβασης (εάν απαιτείται) για να αυξήσει τα προνόμια.

chsh

Αλλάξτε το shell ενός χρήστη.

chfn

Αλλάξτε τα στοιχεία του χρήστη στο πεδίο GECOS.

Απαντήσεις στις Καθοδηγούμενες Ασκήσεις

  1. Εξετάστε την ακόλουθη έξοδο της εντολής id:

    $ id emma
    uid=1000(emma) gid=1000(emma) groups=1000(emma),4(adm),5(tty),10(uucp),20(dialout),27(sudo),46(plugdev)

    Σε ποια αρχεία είναι αποθηκευμένα τα ακόλουθα χαρακτηριστικά;

    UID και GID

    /etc/passwd

    Ομάδες

    /etc/group

    • Επιπλέον, σε ποιο αρχείο είναι αποθηκευμένος ο κωδικός πρόσβασης χρήστη;

      Ο hashed κωδικός πρόσβασης χρήστη αποθηκεύεται στο /etc/shadow.

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

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

  3. Εάν ένας λογαριασμός έχει αναγνωριστικό χρήστη (UID) που απαριθμείται κάτω από το 1000, τι τύπος λογαριασμού είναι αυτός;

    Οι λογαριασμοί με UID μικρότερο από 1000 είναι γενικά λογαριασμοί συστήματος.

  4. Πώς μπορείτε να λάβετε μια λίστα με τις ενεργές συνδέσεις στο σύστημά σας, καθώς και έναν αριθμό από αυτές;

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

  5. Χρησιμοποιώντας την εντολή grep, πήραμε το παρακάτω αποτέλεσμα με πληροφορίες για τoν χρήστη emma.

    $ grep emma /etc/passwd
    emma:x:1000:1000:Emma Smith,42 Douglas St,555.555.5555,:/home/emma:/bin/ksh

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

    Όνομα χρήστη

    emma

    Κωδικός πρόσβασης

    x - πρέπει πάντα να είναι x για μια έγκυρη, ενεργή σύνδεση χρήστη

    UID

    1000

    Πρωταρχικό GID

    1000

    GECOS

    Emma Smith,42 Douglas St,555.555.5555

    Αφετηριακός Κατάλογος

    /home/emma

    Κέλυφος

    /bin/ksh

Απαντήσεις στις Ασκήσεις Εξερεύνησης

  1. Συγκρίνετε τα αποτελέσματα του last με τα w και who. Ποιες λεπτομέρειες λείπουν από καθεμία από τις εντολές σε σύγκριση μεταξύ τους;

    Τα εργαλεία w και who αναφέρουν μόνο τους τρέχοντες χρήστες που έχουν συνδεθεί στο σύστημα, ενώ το last εμφανίζει επίσης χρήστες που έχουν αποσυνδεθεί. Η εντολή w παραθέτει τη χρήση του συστήματος, ενώ η εντολή who όχι.

  2. Δοκιμάστε να δώσετε τις εντολές who και w -his.

    • Ποιες πληροφορίες έχουν αφαιρεθεί από την έξοδο της εντολής w με τις επιλογές “no header” (-h) και “short” (-s);

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

    • Ποιες πληροφορίες έχουν προστεθεί στην έξοδο της εντολής w με την επιλογή “ip address” (-i);

      Αυτό εκτυπώνει τη διεύθυνση IP, αντί να επιχειρήσει επίλυση ονόματος DNS, εκτυπώνει το όνομα του host. Αυτή η επιλογή του w ταιριάζει καλύτερα με την προεπιλεγμένη έξοδο της εντολής last.

  3. Ποιο αρχείο είναι το αρχείο που αποθηκεύει το μονσήμαντο hash του κωδικού πρόσβασης ενός λογαριασμού χρήστη;

    Το αρχείο /etc/shadow αποθηκεύει το μονής κατεύθυνσης hash του κωδικού πρόσβασης ενός λογαριασμού χρήστη, καθώς δεν είναι αναγνώσιμος από έναν κανονικό, μη προνομιούχο λογαριασμό χρήστη, σε αντίθεση με το αρχείο /etc/passwd.

  4. Ποιο αρχείο περιέχει τη λίστα των ομάδων στις οποίες είναι μέλος ένας λογαριασμός χρήστη; Ποια λογική θα μπορούσε να χρησιμοποιηθεί για τη σύνταξη μιας λίστας ομάδων στις οποίες είναι μέλος ένας λογαριασμός χρήστη;

    Το αρχείο /etc/group έχει μια λίστα ονομάτων χρήστη στο τελευταίο πεδίο, διαχωρισμένα με κόμμα, που ονομάζεται “members”, οποιασδήποτε γραμμής για μια ομάδα.

    Οποιαδήποτε γραμμή στο αρχείο /etc/group όπου ο χρήστης αναφέρεται στο τελικό πεδίο, “members”, θα σήμαινε ότι ο χρήστης είναι μέλος αυτής της ομάδας — με την προϋπόθεση ότι έχει μορφοποιηθεί σωστά (οριοθετημένο με κόμμα). Επιπλέον, η πρωταρχική ιδιότητα μέλους ομάδας του χρήστη στο αρχείο /etc/passwd θα έχει επίσης μια αντίστοιχη καταχώρηση στο αρχείο /etc/group τόσο για το όνομα της ομάδας όσο και για το GID.

  5. Ένα ή περισσότερα (1+) από τα ακόλουθα αρχεία δεν είναι αναγνώσιμα από τακτικούς, μη προνομιούχους χρήστες, από προεπιλογή. Ποια από όλα;

    • /etc/group

    • /etc/passwd

    • /etc/shadow

    • /etc/sudoers

      Τα αρχεία /etc/shadow και /etc/sudoers δεν είναι αναγνώσιμα από προεπιλογή, εκτός από επιλεγμένα services ή τον superuser. Αυτές οι απαντήσεις θα προσαρμοστούν, με βάση τα συστήματα και τα ονόματα χρήστη που χρησιμοποιούνται στο εργαστήριο.

  6. Πώς θα αλλάζατε το shell σύνδεσης του τρέχοντος χρήστη στο Korn Shell (/usr/bin/ksh) σε μη διαδραστική λειτουργία;

    $ chsh -s /usr/bin/ksh
  7. Γιατί ο αφετηριακός κατάλογος του χρήστη root δεν τοποθετείται στον κατάλογο /home;

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

Linux Professional Insitute Inc. All rights reserved. Επισκεφθείτε την ιστοσελίδα των Μαθησιακών Υλικών: https://learning.lpi.org
Αυτό το έργο έχει άδεια βάσει της Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Επόμενο Μάθημα

5.2 Δημιουργία Χρηστών και Ομάδων (5.2 Μάθημα 1)

Διάβασε το επόμενο μάθημα

Linux Professional Insitute Inc. All rights reserved. Επισκεφθείτε την ιστοσελίδα των Μαθησιακών Υλικών: https://learning.lpi.org
Αυτό το έργο έχει άδεια βάσει της Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Το LPI είναι ένας μη κερδοσκοπικός οργανισμός.

© 2023 Το Linux Professional Institute (LPI) είναι το παγκόσμιο πρότυπο πιστοποίησης και οργανισμός υποστήριξης σταδιοδρομίας για επαγγελματίες ανοιχτού κώδικα. Με περισσότερους από 200.000 κατόχους πιστοποίησης, είναι ο πρώτος και μεγαλύτερος στον κόσμο ουδέτερος οργανισμός πιστοποιήσεων Linux και ανοιχτού κώδικα. Το LPI έχει πιστοποιημένους επαγγελματίες σε περισσότερες από 180 χώρες, παραδίδει εξετάσεις σε πολλές γλώσσες και έχει εκατοντάδες συνεργάτες εκπαίδευσης.

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

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Επικοινωνήστε Μαζί Μας
  • Πολιτική Απορρήτου και Πολιτική Cookie

Εντοπίσατε ένα λάθος ή θέλετε να βοηθήσετε στη βελτίωση αυτής της σελίδας; Παρακαλούμε ενημερώστε μας.

© 1999–2023 The Linux Professional Institute Inc. All rights reserved.