Squid shm_open: permís denegat — comproveu la propietat de la memòria compartida
Separeu les fallades de propietat de la memòria compartida de Squid dels errors de permisos de PID, registre i directori de memòria cau.
Could not read pid file i shm_open(...): Permission denied poden aparèixer durant un mateix inici de Squid fallit. Anomenen recursos diferents. Corregir la propietat d'un directori de memòria cau no corregeix, per si sol, cap dels dos.
A Linux, l'objecte de memòria compartida POSIX se sol representar sota /dev/shm. El seu propietari i el mode d'accés són importants. Per tant, un objecte deixat per una identitat d'execució diferent pot fer fallar un procés posterior, fins i tot quan squid.conf és llegible i el port d'escolta és lliure.
Reconstruïu com es va iniciar aquesta instància
Compareu l'inici normal del servei amb qualsevol inici manual utilitzat durant la diagnosi. Un procés iniciat manualment i el servei empaquetat poden fer servir usuaris, camins o fitxers de configuració diferents. Determineu si encara s'executa una altra instància de Squid abans de tractar un objecte com a obsolet.
Llegiu després l'operació que falla exactament. Un error de PID fa referència a la ubicació configurada del PID i al seu directori pare. Un error de registre fa referència al fitxer o directori de registre. Un error d'inicialització de la memòria cau fa referència a l'emmagatzematge. Un error de shm_open fa referència a l'objecte de memòria compartida amb nom i també pot implicar la política de seguretat aplicada al procés.
Per a cada recurs, compareu l'accés d'execució necessari amb el propietari i el mode actuals. Si els permisos ordinaris semblen suficients, reviseu les proves de denegació de SELinux o AppArmor corresponents. “Permission denied” per si sol no identifica quina capa ha denegat l'accés.
Repareu la propietat sense crear un segon problema
Mantingueu el compte d'execució coherent amb la configuració del servei de la instal·lació. Canviar-ho tot a nobody pot trencar l'accés dels auxiliars i introduir un nou desajustament amb els fitxers gestionats pel servei.
Esborrar tots els objectes que semblen de Squid a /dev/shm tampoc no és un bon primer pas. Un objecte amb nom pot pertànyer a una instància activa. La neteja, quan calgui, ha d'apuntar a un recurs abandonat confirmat amb el servei afectat aturat, seguit d'un inici pel mecanisme normal del servei.
El resultat útil és un model d'inici i propietat coherent. Executar una ordre com a root fins que l'error desaparegui pot deixar el següent reinici rutinari amb exactament el mateix problema.