Γιατί μια νέα συντόμευση VPN δεν επαναφέρει χαμένες ρυθμίσεις
Ο εκκινητής καθορίζει πώς ξεκινά ένα πρόγραμμα, όχι πού κρατά τις προτιμήσεις του. Συγκρίνετε το πλαίσιο του εκτελέσιμου, του χρήστη και της διαμόρφωσης πριν κατηγορήσετε το εικονίδιο.
Ελλείπουσες καταχωρίσεις μενού και προτιμήσεις που εξαφανίζονται διορθώνονται με το ίδιο αντανακλαστικό, και είναι άσχετα προβλήματα. Το ένα είναι ενσωμάτωση επιφάνειας εργασίας, το άλλο είναι κατάσταση εφαρμογής, και ένα νέο εικονίδιο δεν αλλάζει κανένα από τα δύο από μόνο του. Ο διαχωρισμός τους κοστίζει ένα πείραμα και εξηγεί το μεγαλύτερο μέρος της σύγχυσης που φέρνει ο κόσμος σε αυτό το θέμα. Ο εκκινητής ξεκινά ένα πρόγραμμα· το πρόγραμμα αποφασίζει τι θυμάται.
Δύο εργασίες που μοιάζουν με μία
Η ενσωμάτωση επιφάνειας εργασίας σημαίνει ότι το περιβάλλον μπορεί να βρει ένα εκτελέσιμο αρχείο, να παρουσιάσει όνομα και εικονίδιο και να περάσει τα σωστά ορίσματα. Η κατάσταση εφαρμογής σημαίνει ότι το πρόγραμμα γράφει ένα προφίλ σε μόνιμη θέση και το διαβάζει ξανά στην επόμενη εκκίνηση. Κανένα δεν συνεπάγεται το άλλο, γι' αυτό μια συντόμευση που δουλεύει μπορεί να ξεκινήσει έναν πελάτη που τα έχει ξεχάσει όλα.
Αλλάξτε μια ακίνδυνη προτίμηση εμφάνισης μέσα από τα δικά της χειριστήρια της εφαρμογής, μετά κλείστε την και ανοίξτε την ξανά με τον ίδιο τρόπο. Αν η προτίμηση επιστρέψει, η αποθήκευση δουλεύει και το υπόλοιπο παράπονο αφορά την εύρεση του παραθύρου και όχι την αποθήκευση δεδομένων. Αν εξαφανιστεί, η συντόμευση είναι περισπασμός και το πραγματικό ερώτημα είναι πού κρατά τα αρχεία της αυτή η διεργασία. Δοκιμάστε μία προτίμηση τη φορά, γιατί ένας πελάτης που ζητά ξανά κωδικό μπορεί να προστατεύει ένα μυστικό και όχι να χάνει μια διαμόρφωση.
Συγκρίνετε τις εισόδους εκκίνησης πριν την επανεγκατάσταση
Ξεκινήστε από την καταχώριση της επιφάνειας εργασίας και διαβάστε τι κάνει στην πραγματικότητα, γιατί μια εκκίνηση από το μενού δεν είναι αυτόματα το ίδιο περιβάλλον διεργασίας με μια εκκίνηση από το τερματικό. Τα κλειδιά που μετράνε είναι τα Exec, Path και, έμμεσα, το περιβάλλον που παρέχει η συνεδρία. Ένα σενάριο περιτυλίγματος στο Exec μπορεί να ορίσει μια μεταβλητή, να αλλάξει κατάλογο ή να καλέσει έναν προνομιούχο βοηθό που το μενού δεν δείχνει ποτέ. Η επανεγκατάσταση αντικαθιστά αρχεία που η εφαρμογή είχε ήδη, και αυτή είναι σπάνια η μεταβλητή που άλλαξε.
grep -h '^Exec=' ~/.local/share/applications/*.desktop
desktop-file-validate ~/.local/share/applications/client.desktop
Κοιτάξτε το αρχείο στο ~/.local/share/applications πριν από εκείνο στο /usr/share/applications, γιατί το αντίγραφο χρήστη επισκιάζει το αντίγραφο συστήματος. Εκτελέστε το desktop-file-validate όταν η καταχώριση συμπεριφέρεται λάθος, και ψάξτε για ένα παρωχημένο αντίγραφο που δείχνει ακόμη σε μια διαγραμμένη διαδρομή. Ένα μη έγκυρο αντίγραφο χρήστη εξακολουθεί να προτιμάται από τις περισσότερες επιφάνειες εργασίας, οπότε ένα χαλασμένο αρχείο μπορεί να αφαιρέσει την καταχώριση από το μενού ενώ το αρχείο του πακέτου παραμένει έγκυρο. Μετά εκτελέστε την ίδια εντολή με το χέρι και συγκρίνετε τι παράγουν οι δύο εκκινήσεις.
Πού ζει πραγματικά μια προτίμηση
Οι εφαρμογές που ακολουθούν τους κανόνες βασικών καταλόγων XDG βάζουν τη διαμόρφωση στο $XDG_CONFIG_HOME, τη μόνιμη κατάσταση στο $XDG_STATE_HOME και τα αναλώσιμα δεδομένα στο $XDG_CACHE_HOME, με προεπιλογή τα ~/.config, ~/.local/state και ~/.cache όταν αυτές οι μεταβλητές δεν έχουν οριστεί. Τα τρία είναι ρόλοι και όχι υποσχέσεις, οπότε ένα συγκεκριμένο προϊόν VPN μπορεί να τεκμηριώνει κάτι εντελώς διαφορετικό. Το να διαβάζετε την τεκμηρίωση του ίδιου του κατασκευαστή είναι καλύτερο από το να μαντεύετε μια διαδρομή από ένα όνομα καταλόγου. Όταν η τεκμηρίωση είναι φτωχή, παρατηρήστε τη διεργασία αντί για το σύστημα αρχείων.
Ένα ίχνος φιλτραρισμένο στα ανοίγματα αρχείων δείχνει κάθε διαδρομή διαμόρφωσης που δοκιμάζει ο πελάτης, μαζί με εκείνη που γράφει κατά την έξοδο. Εκτελέστε το ως ο ίδιος χρήστης με το ίδιο περιβάλλον και μετά συγκρίνετε αυτές τις διαδρομές με τους καταλόγους που περιμένατε.
strace -f -e trace=openat,stat -o /tmp/vpn.log vpn-client
Τα μυστικά και τα προφίλ έχουν διαφορετικούς ιδιοκτήτες
Ένα αποθηκευμένο προφίλ και ένα αποθηκευμένο διαπιστευτήριο είναι ξεχωριστά αντικείμενα, συχνά με ξεχωριστή αποθήκευση. Το ένα μπορεί να ζει σε ένα αρχείο διαμόρφωσης ενώ το άλλο κάθεται σε μια κλειδοθήκη που ξεκλειδώνει ανά συνεδρία, οπότε ένας πελάτης που ζητά ξανά κωδικό ίσως απλώς κάνει αυτό για το οποίο σχεδιάστηκε. Η διαγραφή του προφίλ για να σταματήσει η προτροπή είναι ο τρόπος με τον οποίο ο κόσμος χάνει μια διαμόρφωση που δουλεύει.
Οι προνομιούχες εκκινήσεις το περιπλέκουν περαιτέρω, γιατί μια εκκίνηση μέσω sudo ή βοηθού PolicyKit μπορεί να παρουσιάσει διαφορετικό κατάλογο αρχικού και επομένως διαφορετικό σύνολο διαμόρφωσης. Διορθώστε την κυριότητα στο συγκεκριμένο αρχείο που τεκμηριώνει η εφαρμογή και όχι αναδρομικά σε όλο τον κατάλογο αρχικού, μετά αποφασίστε ποια ταυτότητα πρέπει να κατέχει το προφίλ στο εξής και κρατήστε τις μελλοντικές εκκινήσεις συνεπείς με αυτή.
Τι μπορεί και τι δεν μπορεί να σας πει το εικονίδιο
Ένα εικονίδιο αποδεικνύει ότι ένα αρχείο εκκινητή επιλύεται, και τίποτα περισσότερο. Η κατάσταση σύνδεσης ανήκει στον πελάτη, οπότε ο μόνος αξιόπιστος έλεγχος είναι η διεπαφή, η διαδρομή ή η δική του έξοδος κατάστασης. Ένα μικροεφαρμογή δίσκου που απέτυχε να ξεκινήσει μπορεί να κάνει μια σήραγγα που δουλεύει να φαίνεται χαλασμένη, ενώ μια παρωχημένη μικροεφαρμογή μπορεί να κάνει μια χαλασμένη να φαίνεται εντάξει. Δοκιμάστε τη σύνδεση και τον εκκινητή χωριστά, μετά σημειώστε ποιο από τα δύο διορθώσατε πραγματικά.
Αν και τα δύο ήταν χαλασμένα, αντισταθείτε στην αντιμετώπιση της επισκευής ως μία αλλαγή. Διορθώστε την καταχώριση, επιβεβαιώστε την εκκίνηση, μετά επιβεβαιώστε τη σήραγγα και σημειώστε το αποτέλεσμα κάθε βήματος. Αυτή η καταγραφή είναι που κάνει την επόμενη αναφορά για χαμένες ρυθμίσεις διαγνώσιμη αντί για επανάληψη αυτής, και είναι επίσης αυτό που λέει στον επόμενο άνθρωπο ποιο μισό του προβλήματος ήταν πραγματικό.