Το Systemd θα αλλάξει τον τρόπο με τον οποίο λειτουργεί ο οικιακός κατάλογος Linux

Η ομάδα πίσω από το systemd θέλει να υιοθετήσετε έναν νέο τρόπο διαχείρισης οικιακών καταλόγων. Το να το αποκαλείς «νέο τρόπο» το θέτει ελαφρά — αυτή είναι μια πραγματική αλλαγή παραδείγματος για το Linux. Εδώ είναι όλα όσα πρέπει να ξέρετε για το systemd-homed, το οποίο πιθανότατα έρχεται σε μια διανομή Linux κοντά σας.

Κανένας ξένος στη διαμάχη

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

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

Τραγούδια που υποστήριζαν τη βία κατά του Poettering δημοσιεύτηκαν στο YouTube και εμφανίστηκαν ιστότοποι που προσπαθούσαν να εξαναγκάσουν τους χρήστες του Linux να μποϊκοτάρουν το σύστημα. Ο συν-προγραμματιστής του, Κέι Σίβερς, δέχτηκε επίσης κριτική και κατάχρηση, αλλά ο Poettering σίγουρα έφερε το μεγαλύτερο βάρος.

Ωστόσο, μέσα σε οκτώ μήνες, το Fedora χρησιμοποιούσε το systemd. Μέχρι το τέλος του 2013, Αψίδα, Debian, Manjaro, και Ubuntu είχαν περάσει όλα στο systemd. Φυσικά, η δόξα του ανοιχτού κώδικα είναι ότι αν κάτι δεν σας αρέσει, μπορείτε να διαχωρίσετε τον πηγαίο κώδικα και να κάνετε τα δικά σας με αυτό. Νέες διανομές—όπως Devuan, που ήταν μια διχάλα του Debian—δημιουργήθηκαν αποκλειστικά για να αποφευχθεί η χρήση του systemd.

Ο κατάλογός σας $HOME

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

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

  Πώς να εγκαταστήσετε το Slackware Linux

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

Μπορείτε να χρησιμοποιήσετε το ls με την επιλογή -a (όλα) για να δείτε κρυφά αρχεία και καταλόγους. Πρώτα, πληκτρολογήστε τα εξής:

ls

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

ls -a

Τώρα, μπορείτε να δείτε τα κρυφά αρχεία και τους καταλόγους.

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

Δεδομένα για εσάς

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

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

Έτσι φαίνεται το περιεχόμενο του αρχείου “/etc/passwd”:

cat /etc/passwd

Οι αλλαγές στο systemd-homed

Ο σκοπός των αλλαγών systemd-homed είναι να παρέχει έναν πλήρως φορητό οικιακό κατάλογο με τα δεδομένα σας και την ψηφιακή ταυτότητα Linux που είναι αποθηκευμένα σε αυτόν. Το UID σας και όλοι οι άλλοι μηχανισμοί αναγνώρισης και ελέγχου ταυτότητας θα αποθηκευτούν μόνο στον αρχικό σας κατάλογο.

Λόγω του σχεδιασμού τους “όλα τα αυγά σε ένα καλάθι”, οι οικείοι κατάλογοι είναι κρυπτογραφημένοι. Αποκρυπτογραφούνται αυτόματα κάθε φορά που συνδέεστε και κρυπτογραφούνται ξανά κάθε φορά που αποσυνδέεστε. Η προτιμώμενη μέθοδος είναι η χρήση του Εγκατάσταση ενοποιημένου κλειδιού Linux (LUKS) κρυπτογράφηση δίσκου. Ωστόσο, υπάρχουν και άλλα προγράμματα διαθέσιμα, όπως π.χ fscrypt.

  Πώς να εγκαταστήσετε και να χρησιμοποιήσετε το Nozbe Task Manager στο Linux

ΕΝΑ Σημείωση αντικειμένου JavaScript Το αρχείο χρήστη (JSON) αποθηκεύει όλες τις πληροφορίες ταυτότητάς σας σε έναν κατάλογο που ονομάζεται “~/.identity”. Είναι κρυπτογραφικά υπογεγραμμένο με ένα κλειδί που είναι εκτός του ελέγχου σας.

Ο αρχικός κατάλογος κάθε ατόμου είναι τοποθετημένος σε μια συσκευή βρόχου, παρόμοια με τον τρόπο με τον οποίο τοποθετείται μια εφαρμογή snap. Αυτό συμβαίνει έτσι ώστε το δέντρο καταλόγου μέσα στον οικιακό κατάλογο εμφανίζεται ως ένα απρόσκοπτο μέρος του δέντρου καταλόγου του λειτουργικού συστήματος. Το σημείο προσάρτησης είναι από προεπιλογή “/home/$USER.homedir” (το “$USER” αντικαθίσταται από το όνομα λογαριασμού του ατόμου).

Ποια είναι τα οφέλη;

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

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

Καταργεί αυτό που αποκαλεί “βάσεις δεδομένων sidecar”, οι οποίες περιέχουν αποσπάσματα σημαντικών πληροφοριών για εσάς που ο Poettering πιστεύει ότι πρέπει να είναι συγκεντρωμένες. Τα αρχεία “/etc/passwd” και “/etc/shadow” περιέχουν πληροφορίες ελέγχου ταυτότητας και κατακερματισμένους κωδικούς πρόσβασης. Ωστόσο, περιέχουν επίσης πληροφορίες όπως το προεπιλεγμένο κέλυφός σας, το Γενικός Επόπτης Λειτουργίας General Electric (GECOS) πεδίο.

Ο Poettering το είπε αυτό μεταδεδομένα θα πρέπει να εξορθολογιστεί και να αποθηκευτεί σε σημαντικές ομάδες στην εγγραφή JSON κάθε ατόμου στον οικιακό κατάλογο.

Διαχείριση του νέου σας $HOME

Η υπηρεσία systemd-homed ελέγχεται μέσω του νέου homectl εργαλείο γραμμής εντολών.

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

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

  Πώς να εκτελέσετε το SpeedTest από το τερματικό Linux

Αν κοιτάξετε στον κατάλογο “/home”, θα δείτε διαχειριζόμενες εγγραφές systemd-homed που μοιάζουν με τις παρακάτω, με το “.homedir” προσαρτημένο στο όνομα χρήστη:

/home/dave.homedir

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

Περιορισμοί και ζητήματα

Το systemd-homed προορίζεται μόνο για χρήση σε λογαριασμούς χρηστών ανθρώπων. Δεν μπορεί να χειριστεί λογαριασμούς χρηστών με UID μικρότερο από 1.000. Με άλλα λόγια, το root, ο δαίμονας, το bin και ούτω καθεξής δεν μπορούν να διαχειρίζονται χρησιμοποιώντας το νέο σχήμα. Πάντα θα υπάρχει ανάγκη για τους τυπικούς τρόπους διαχείρισης των χρηστών. Επομένως, το systemd-homed δεν είναι μια παγκόσμια λύση.

Υπάρχει ένα γνωστό πιάσε-22 που πρέπει να επιλυθεί. Όπως αναφέραμε προηγουμένως, ο οικιακός κατάλογος ενός ατόμου αποκρυπτογραφείται κάθε φορά που συνδέεται. Αλλά εάν κάποιος έχει απομακρυσμένη πρόσβαση στον υπολογιστή μέσω SSH, τα κλειδιά SSH στον οικιακό κατάλογο δεν μπορούν να αναφερθούν επειδή ο οικιακός κατάλογος εξακολουθεί να είναι κρυπτογραφημένος μέχρι αυτό Το άτομο συνδέεται. Φυσικά, χρειάζεται τα κλειδιά SSH για έλεγχο ταυτότητας πριν μπορέσει να συνδεθεί.

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

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

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

Πότε συμβαίνει αυτό;

Αυτό συμβαίνει τώρα. Οι αλλαγές στον κώδικα ήταν υποβλήθηκε στις 20 Ιανουαρίου 2020, και συμπεριλήφθηκαν στο build 245 του systemd, το οποίο απεστάλη με το Ubuntu 20.04 τον Απρίλιο του 2020.

Για να ελέγξετε ποια έκδοση έχετε, πληκτρολογήστε τα εξής:

systemd --version

Ωστόσο, η εντολή homectl δεν είναι ακόμη παρούσα. Το Ubuntu 20.04 χρησιμοποιεί έναν παραδοσιακό κατάλογο /home και δεν χρησιμοποιεί systemd-homed.

Φυσικά, εναπόκειται στις μεμονωμένες διανομές να αποφασίσουν πότε θα συμπεριλάβουν και θα υποστηρίξουν το systemd-homed και homectl.

Έτσι, δεν χρειάζεται κανείς να μπει σε λειτουργία full-on pitchforks και αναμμένων φακών. Επειδή οι τυπικές μέθοδοι διαχείρισης χρηστών και οικιακών καταλόγων θα παραμείνουν, όλοι θα έχουμε ακόμα επιλογές.