Could not read pid file en shm_open(...): Permission denied kan tydens dieselfde mislukte Squid-opstart verskyn. Hulle verwys na verskillende hulpbronne. Om die eienaarskap van 'n kasgids reg te maak, herstel nie op sigself een van hulle nie.

Op Linux word 'n POSIX-objek vir gedeelde geheue gewoonlik onder /dev/shm voorgestel. Die eienaar en toegangsmodus daarvan maak saak. 'n Objek wat deur 'n ander looptyd-identiteit agtergelaat is, kan dus 'n latere proses laat misluk, selfs wanneer squid.conf leesbaar is en die luisterpoort vry is.

Herlei hoe hierdie instansie begin het

Vergelyk die normale dienslanseering met enige handmatige lanseering wat tydens foutopsporing gebruik is. 'n Handmatig gestarte proses en die verpakte diens kan verskillende gebruikers, paaie of konfigurasielêers gebruik. Stel vas of 'n ander Squid-instansie nog loop voordat jy 'n objek as verouderd beskou.

Lees dan die presiese mislukkende bewerking. 'n PID-fout raak die gekonfigureerde PID-ligging en sy ouergids. 'n Logfout raak die loglêer of -gids. 'n Kas-inisialiseringsfout raak die berging. 'n shm_open-fout raak die genoemde objek vir gedeelde geheue en kan ook die sekuriteitsbeleid betrek wat op die proses toegepas word.

Vergelyk vir elke hulpbron die vereiste looptydtoegang met die huidige eienaar en modus. As gewone regte voldoende lyk, ondersoek die betrokke SELinux- of AppArmor-weieringsbewyse. “Permission denied” alleen dui nie aan watter laag toegang geweier het nie.

Herstel eienaarskap sonder om 'n tweede probleem te skep

Hou die looptydrekening konsekwent met die dienskonfigurasie van die installasie. Om alles na nobody oor te skakel, kan helper-toegang breek en 'n nuwe wanverhouding met diensbestuurde lêers skep.

Om elke Squid-agtige objek in /dev/shm te verwyder, is ook nie 'n goeie eerste stap nie. 'n Genoemde objek kan aan 'n aktiewe instansie behoort. Opruiming, waar nodig, moet 'n bevestigde verlate hulpbron teiken terwyl die betrokke diens gestop is, gevolg deur opstart via die normale diensmeganisme.

Die nuttige resultaat is 'n konsekwente lanseer- en eienaarskapmodel. Om een opdrag as root te laat loop tot die fout verdwyn, kan die volgende roetine-herstarting met presies dieselfde probleem laat.

Verwante artikels