Squid shm_open: toegang geweigerd — controleer het eigendom van gedeeld geheugen
Onderscheid eigendomsfouten van Squids gedeelde geheugen van machtigingsfouten bij PID, log en cachemap.
Could not read pid file en shm_open(...): Permission denied kunnen tijdens dezelfde mislukte Squid-start verschijnen. Ze noemen verschillende bronnen. Het herstellen van het eigendom van een cachemap lost op zichzelf geen van beide op.
Op Linux wordt een POSIX-object voor gedeeld geheugen gewoonlijk weergegeven onder /dev/shm. De eigenaar en de toegangsmodus ervan zijn van belang. Een object dat door een andere uitvoeringsidentiteit is achtergelaten, kan daardoor een later proces laten mislukken, zelfs wanneer squid.conf leesbaar is en de luisterende poort vrij is.
Reconstrueer hoe deze instantie is gestart
Vergelijk de normale servicestart met elke handmatige start die bij het oplossen is gebruikt. Een handmatig gestart proces en de verpakte service kunnen verschillende gebruikers, paden of configuratiebestanden gebruiken. Stel vast of een andere Squid-instantie nog draait voordat u een object als verouderd beschouwt.
Lees daarna de precieze mislukkende bewerking. Een PID-fout betreft de geconfigureerde PID-locatie en de bovenliggende map. Een logfout betreft het logbestand of de map. Een fout bij het initialiseren van de cache betreft de opslag. Een shm_open-fout betreft het genoemde object voor gedeeld geheugen en kan ook het beveiligingsbeleid omvatten dat op het proces wordt toegepast.
Vergelijk voor elke bron de vereiste uitvoeringstoegang met de huidige eigenaar en modus. Als gewone machtigingen voldoende lijken, bekijk dan de relevante weigeringsbewijzen in SELinux of AppArmor. Alleen “Permission denied” geeft niet aan welke laag de toegang heeft geweigerd.
Herstel het eigendom zonder een tweede probleem te creëren
Houd het uitvoeringsaccount consistent met de serviceconfiguratie van de installatie. Alles naar nobody omzetten kan de toegang van hulpprogramma's breken en een nieuwe mismatch met door de service beheerde bestanden introduceren.
Ook het verwijderen van elk Squid-achtig object in /dev/shm is geen goede eerste stap. Een genoemd object kan bij een actieve instantie horen. Opruimen moet, waar nodig, gericht zijn op een bevestigde achtergelaten bron terwijl de getroffen service is gestopt, gevolgd door een start via het normale servicemechanisme.
Het bruikbare resultaat is een consistent start- en eigendomsmodel. Eén commando als root uitvoeren tot de fout verdwijnt, kan de volgende routinematige herstart met precies hetzelfde probleem achterlaten.