Squid shm_open: käyttö estetty — tarkista jaetun muistin omistajuus
Erota Squidin jaetun muistin omistajuusvirheet PID-, loki- ja välimuistihakemiston käyttöoikeusvirheistä.
Could not read pid file ja shm_open(...): Permission denied voivat esiintyä samassa epäonnistuneessa Squidin käynnistyksessä. Ne nimeävät eri resurssit. Välimuistihakemiston omistajuuden korjaaminen ei itsessään korjaa kumpaakaan.
Linuxissa POSIX-jaetun muistin objekti esitetään yleensä /dev/shm-polun alla. Sen omistaja ja käyttöoikeustila ovat merkityksellisiä. Toisen suoritusympäristön identiteetin jättämä objekti voi siksi saada myöhemmän prosessin epäonnistumaan, vaikka squid.conf olisi luettavissa ja kuunteleva portti vapaa.
Rekonstruoi, miten tämä instanssi käynnistettiin
Vertaa palvelun normaalia käynnistystä mihin tahansa vianetsinnän aikana käytettyyn manuaaliseen käynnistykseen. Manuaalisesti käynnistetty prosessi ja paketoitu palvelu voivat käyttää eri käyttäjiä, polkuja tai asetustiedostoja. Selvitä, onko toinen Squid-instanssi yhä käynnissä, ennen kuin käsittelet objektia vanhentuneena.
Lue sitten tarkka epäonnistuva toiminto. PID-virhe koskee määritettyä PID-sijaintia ja sen yläkansiota. Lokivirhe koskee lokitiedostoa tai -kansiota. Välimuistin alustusvirhe koskee tallennustilaa. shm_open-virhe koskee nimettyä jaetun muistin objektia ja voi liittyä myös prosessiin sovellettavaan tietoturvakäytäntöön.
Vertaa kunkin resurssin vaatimaa suoritusaikaista käyttöoikeutta sen nykyiseen omistajaan ja tilaan. Jos tavalliset oikeudet vaikuttavat riittäviltä, tarkastele asiaankuuluvia SELinuxin tai AppArmorin hylkäystodisteita. Pelkkä “Permission denied” ei kerro, mikä kerros esti käytön.
Korjaa omistajuus luomatta toista ongelmaa
Pidä suoritustili yhdenmukaisena asennuksen palvelukokoonpanon kanssa. Kaiken vaihtaminen nobody-tilille voi rikkoa apuohjelmien käytön ja tuoda uuden ristiriidan palvelun hallitsemien tiedostojen kanssa.
Sekään ei ole hyvä ensiaskel, että poistetaan kaikki Squidilta näyttävät objektit /dev/shm-hakemistosta. Nimetty objekti voi kuulua aktiiviselle instanssille. Siivous tulisi tarvittaessa kohdistaa vahvistettuun hylättyyn resurssiin, kun asianomainen palvelu on pysäytetty, ja sen jälkeen käynnistys palvelun normaalin mekanismin kautta.
Hyödyllinen tulos on johdonmukainen käynnistys- ja omistajuusmalli. Yhden komennon ajaminen rootina, kunnes virhe katoaa, voi jättää seuraavan rutiininomaisen uudelleenkäynnistyksen täsmälleen saman ongelman kanssa.