Τα Could not read pid file και shm_open(...): Permission denied μπορούν να εμφανιστούν στην ίδια αποτυχημένη εκκίνηση του Squid. Ονομάζουν διαφορετικούς πόρους. Η διόρθωση της ιδιοκτησίας ενός καταλόγου προσωρινής μνήμης δεν διορθώνει από μόνη της κανένα από τα δύο.

Στο Linux, ένα αντικείμενο κοινόχρηστης μνήμης POSIX αναπαρίσταται συνήθως κάτω από το /dev/shm. Ο ιδιοκτήτης και ο τρόπος πρόσβασής του έχουν σημασία. Ένα αντικείμενο που άφησε διαφορετική ταυτότητα εκτέλεσης μπορεί επομένως να κάνει μια μεταγενέστερη διεργασία να αποτύχει, ακόμη και όταν το squid.conf είναι αναγνώσιμο και η θύρα ακρόασης είναι ελεύθερη.

Ανασυστήστε πώς ξεκίνησε αυτή η παρουσία

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

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

Για κάθε πόρο, συγκρίνετε την απαιτούμενη πρόσβαση εκτέλεσης με τον τρέχοντα ιδιοκτήτη και τον τρόπο του. Αν τα συνήθη δικαιώματα φαίνονται επαρκή, εξετάστε τα σχετικά στοιχεία άρνησης του SELinux ή του AppArmor. Το “Permission denied” από μόνο του δεν δείχνει ποιο επίπεδο αρνήθηκε την πρόσβαση.

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

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

Ούτε η διαγραφή κάθε αντικειμένου που μοιάζει με Squid στο /dev/shm είναι καλή πρώτη κίνηση. Ένα ονομασμένο αντικείμενο μπορεί να ανήκει σε ενεργή παρουσία. Ο καθαρισμός, όπου χρειάζεται, πρέπει να στοχεύει ένα επιβεβαιωμένα εγκαταλελειμμένο αντικείμενο με την επηρεαζόμενη υπηρεσία σταματημένη και έπειτα εκκίνηση μέσω του κανονικού μηχανισμού υπηρεσίας.

Το χρήσιμο αποτέλεσμα είναι ένα συνεπές μοντέλο εκκίνησης και ιδιοκτησίας. Η εκτέλεση μίας εντολής ως root μέχρι να εξαφανιστεί το σφάλμα μπορεί να αφήσει την επόμενη τακτική επανεκκίνηση με ακριβώς το ίδιο πρόβλημα.

Σχετικά άρθρα