Could not read pid file og shm_open(...): Permission denied kan oppstå under same mislukka Squid-start. Dei nemner ulike ressursar. Å rette eigarskapen til ei cache-mappe løyser ikkje i seg sjølv nokon av dei.

På Linux blir eit POSIX-objekt for delt minne vanlegvis representert under /dev/shm. Eigaren og tilgangsmodusen har noko å seie. Eit objekt som er lagt att av ein annan køyreidentitet kan difor få ein seinare prosess til å feile, sjølv når squid.conf er lesbar og den lyttande porten er ledig.

Rekonstruer korleis denne instansen starta

Samanlikn den normale tenestestarten med kvar manuell start som vart brukt under feilsøkinga. Ein manuelt starta prosess og den pakka tenesta kan bruke ulike brukarar, stiar eller konfigurasjonsfiler. Fastslå om ein annan Squid-instans framleis køyrer før eit objekt blir handsama som utdatert.

Les deretter den nøyaktige feilande operasjonen. Ein PID-feil gjeld den konfigurerte PID-plasseringa og overmappa. Ein loggfeil gjeld loggfilen eller mappa. Ein feil ved cache-initialisering gjeld lagringa. Ein shm_open-feil gjeld det namngjevne objektet for delt minne og kan òg omfatte tryggingspolicyen som blir brukt på prosessen.

Samanlikn for kvar ressurs den nødvendige køyretilgangen med den noverande eigaren og modusen. Viss vanlege løyve ser tilstrekkelege ut, undersøk dei relevante avvisingane i SELinux eller AppArmor. “Permission denied” åleine viser ikkje kva lag som avviste tilgangen.

Rett eigarskapen utan å skape eit nytt problem

Hald køyrekontoen i samsvar med tenestekonfigurasjonen i installasjonen. Å bytte alt til nobody kan bryte hjelpeprogramtilgang og føre inn eit nytt avvik med tenestestyrte filer.

Det er heller ikkje eit godt første steg å slette alle Squid-liknande objekt i /dev/shm. Eit namngjeve objekt kan høyre til ein aktiv instans. Opprydding bør, der det er nødvendig, rettast mot ein stadfesta forlaten ressurs med den råka tenesta stoppa, etterfølgt av start via den normale tenestemekanismen.

Det nyttige resultatet er ein konsistent start- og eigarskapsmodell. Å køyre éin kommando som root til feilen forsvinn, kan late den neste rutinemessige omstarten stå att med nøyaktig same problem.

Relaterte artiklar