Πρέπει η συνεδρία χρήστη να κατέχει την προσάρτηση SSHFS μέσω VPN;
Ένα hook VPN με δικαιώματα root δεν μπορεί να δανειστεί έναν πράκτορα επιφάνειας εργασίας. Προσαρτήστε ως συνδεδεμένος χρήστης, περιορίστε το έναυσμα σε μία σύνδεση και σχεδιάστε την αποπροσάρτηση πριν την εξαναγκάσετε.
Η προσάρτηση ενός κοινόχρηστου φακέλου αφού ανέβει το VPN περιλαμβάνει δύο ταυτότητες που εύκολα συγχέονται: το στοιχείο που επιτρέπεται να ρυθμίζει το δίκτυο και τον λογαριασμό που επιτρέπεται να συνδεθεί στον διακομιστή αρχείων. Σπάνια είναι η ίδια. Ένα hook VPN που ανήκει στο root είναι κακό σημείο για να ξεκινήσει η προσάρτηση SSHFS ενός χρήστη επιφάνειας εργασίας, επειδή δεν έχει ούτε τον πράκτορα του χρήστη ούτε την προβλεπόμενη κυριότητα της προσάρτησης. Το να οριστεί πρώτα σωστά η κυριότητα κάνει το έναυσμα απλό.
Δύο ταυτότητες, δύο ξεχωριστές άδειες
Ο πελάτης VPN χρειάζεται προνόμια για να αλλάζει διαδρομές και διεπαφές. Η προσάρτηση SSHFS χρειάζεται ταυτότητα SSH που δέχεται ο διακομιστής αρχείων και προσάρτηση FUSE που ανήκει στον λογαριασμό που θα διαβάζει τα αρχεία. Ένα script που τρέχει ως root ικανοποιεί την πρώτη απαίτηση και σπάει σιωπηλά τη δεύτερη.
Η προσάρτηση ως root αφήνει τα αρχεία έξω από τη συνεδρία επιφάνειας εργασίας και πιθανώς χωρίς πρόσβαση στον πράκτορα που κρατά το κλειδί του χρήστη. Η προσάρτηση υπάρχει, ο χρήστης δεν μπορεί να γράψει μέσω αυτής και η αποτυχία μοιάζει με πρόβλημα δικαιωμάτων στην πλευρά του διακομιστή. Αυτή η λανθασμένη διάγνωση κοστίζει ένα απόγευμα και ένα δελτίο στην ομάδα αποθήκευσης.
Αποφασίστε ποιος λογαριασμός κατέχει την προσάρτηση πριν γράψετε οποιαδήποτε αυτοματοποίηση, επειδή αυτή η επιλογή καθορίζει πού ζει το έναυσμα και σε ποια διαπιστευτήρια μπορεί να φτάσει.
Στήστε πρώτα με το χέρι μια προσάρτηση που ανήκει στον χρήστη
Ξεκινήστε από έναν συνδεδεμένο χρήστη με κενό σημείο προσάρτησης, εξουσιοδοτημένο λογαριασμό SSH και λειτουργική διαδρομή προς τον διακομιστή μέσω της σήραγγας. Η χειροκίνητη προσάρτηση καθιερώνει τη βάση που πρέπει να αναπαράγει κάθε αυτοματοποίηση.
mkdir -p "$HOME/mnt/team" sshfs [email protected]:/exports/team "$HOME/mnt/team" mount | grep sshfs
Τα ονόματα είναι παραδείγματα, οπότε αντικαταστήστε το host και τη διαδρομή εξαγωγής που προσφέρει πραγματικά ο διακομιστής σας. Επαληθεύστε το κλειδί του host μέσω της εγκεκριμένης διαδικασίας στην πρώτη σύνδεση. Σημειώστε ότι ο κωδικός του λογαριασμού VPN δεν είναι αυτόματα τα διαπιστευτήρια του λογαριασμού αποθήκευσης και αυτό είναι συχνή αιτία αποτυχημένων προσπαθειών.
Εκτελέστε το ως κανονικός χρήστης με σημείο προσάρτησης που ανήκει σε αυτόν τον χρήστη. Από προεπιλογή μόνο ο λογαριασμός που προσαρτά φτάνει στα αρχεία και το allow_other διευρύνει αυτό το όριο σε κάθε τοπικό χρήστη. Αυτή είναι σκόπιμη διεύρυνση της πρόσβασης, όχι παράκαμψη για την αυτοματοποίηση.
Αφήστε το έναυσμα να δράσει στο ίδιο πλαίσιο συνεδρίας
Αφήστε την υποστηριζόμενη ενσωμάτωση συμβάντων VPN να ζητήσει την εκτέλεση μιας ενέργειας συνεδρίας χρήστη, αντί να υποθέσετε ότι ένα προνομιούχο callback μπορεί να δανειστεί διαπιστευτήρια επιφάνειας εργασίας. Περιορίστε το έναυσμα στο προβλεπόμενο αναγνωριστικό σύνδεσης και όχι σε οποιαδήποτε διεπαφή τυχαίνει να ονομάζεται tun0. Ένας κανόνας αποστολέα που ταιριάζει με το λάθος πράγμα ενεργοποιείται σε κάθε αλλαγή δικτύου, ακόμη και σε όσες δεν έχουν καμία σχέση με αυτή την προσάρτηση.
Η ενέργεια πρέπει να επιβεβαιώνει το αναμενόμενο όνομα host, να αντιλαμβάνεται μια υπάρχουσα προσάρτηση και να κάνει μία περιορισμένη προσπάθεια. Ένας βρόχος ερωτήσεων που ξεκινά μια νέα διεργασία SSHFS κάθε λίγα δευτερόλεπτα ή επαναλαμβάνει ένα αίτημα διαπιστευτηρίων ενώ ο διακομιστής είναι κάτω μετατρέπει μια σύντομη διακοπή σε σωρό κολλημένων διεργασιών. Περιορίστε την προσπάθεια με ένα χρονικό όριο και μία μόνο επανάληψη.
nmcli -g UUID connection show --active systemctl --user list-units 'sshfs*' pgrep -a sshfs
Η πρώτη εντολή δίνει το αναγνωριστικό σύνδεσης που πρέπει να ταιριάξει ο αποστολέας. Οι άλλες δύο δείχνουν αν μια προσπάθεια εκτελείται ήδη και αυτός είναι ο έλεγχος που αποτρέπει τα διπλότυπα.
Μια υπηρεσία χωρίς επίβλεψη χρειάζεται τα δικά της εγκεκριμένα διαπιστευτήρια και τη δική της επαλήθευση host στο δικό της πλαίσιο εκτέλεσης. Δεν μπορεί να υποθέσει ότι ένας γραφικός πράκτορας είναι ξεκλείδωτος και δεν πρέπει να προσπαθήσει να ξεκλειδώσει έναν.
Σχεδιάστε την αποσύνδεση πριν εξαναγκάσετε τον καθαρισμό
Για προγραμματισμένη αποσύνδεση, ολοκληρώστε τις εργασίες αρχείων και αποπροσαρτήστε από τη ροή εργασίας του ίδιου του χρήστη που προσαρτά. Στοχεύστε το σημείο προσάρτησης και όχι τη διεργασία και επιβεβαιώστε το αποτέλεσμα πριν αναφέρετε επιτυχία.
fusermount3 -u "$HOME/mnt/team" mountpoint "$HOME/mnt/team"
Αποπροσαρτήστε μόνο την προσάρτηση που δημιούργησε αυτή η ροή εργασίας. Αν είναι απασχολημένη, αυτό είναι απόφαση της εφαρμογής: μια εξαναγκασμένη αποσύνδεση που υπάρχει για να επιστρέψει ένα hook επιτυχία κρύβει την απώλεια δεδομένων αντί να την αποτρέπει.
Η απροσδόκητη απώλεια συμπεριφέρεται διαφορετικά. Το SSHFS τεκμηριώνει ότι μια διακοπή δικτύου μπορεί να μπλοκάρει μια λειτουργία συστήματος αρχείων και η επιλογή reconnect αποκαθιστά τη μεταφορά χωρίς να αποκαθιστά handles: ένα αρχείο που άνοιξε πριν από την επανασύνδεση μπορεί να αποτύχει στην επόμενη εγγραφή και μια διακοπείσα εγγραφή δεν διατηρείται. Αυτή η διάκριση έχει τη μεγαλύτερη σημασία για επεξεργαστές που κρατούν ένα αρχείο ανοιχτό για ώρες. Σχεδιάστε ένα βήμα επανανοίγματος αντί να υποθέσετε ανάκτηση.
Δοκιμάστε τη συμπεριφορά με αρχεία μιας χρήσης πριν βασιστείτε σε αυτή. Ένας κατάλογος που εμφανίζεται ξανά αφού επιστρέψει η σήραγγα δεν αποδεικνύει ότι τα προηγούμενα handles ή η μη αποθηκευμένη εργασία επιβίωσαν.