Squid shm_open: хандах эрх татгалзагдлаа — хуваалцсан санах ойн эзэмшигчийг шалгана уу
Squid-ийн хуваалцсан санах ойн эзэмшлийн алдааг PID, лог, кэш хавтасны зөвшөөрлийн алдаанаас ялгаарай.
Could not read pid file болон shm_open(...): Permission denied нэг амжилтгүй Squid эхлэх үед хамт гарч болно. Тэд өөр өөр нөөцийг нэрлэдэг. Кэш хавтасны эзэмшлийг засах нь өөрөө аль нэгийг нь ч засахгүй.
Linux дээр POSIX хуваалцсан санах ойн объект ихэвчлэн /dev/shm дор дүрслэгддэг. Түүний эзэн болон хандалтын горим чухал. Иймд өөр гүйцэтгэлийн таних тэмдэг үлдээсэн объект нь squid.conf уншигдаж, сонсох порт чөлөөтэй байсан ч дараагийн процесс бүтэлгүй болгож болно.
Энэ хувилбар хэрхэн эхэлснийг сэргээ
Үйлчилгээний ердийн эхлэлийг алдаа мөрдөх үед ашигласан гар аргын эхлэлтэй харьцуул. Гараар эхлүүлсэн процесс болон багцлагдсан үйлчилгээ өөр хэрэглэгч, зам эсвэл тохиргооны файл ашиглаж болно. Объектыг хуучирсан гэж үзэхээс өмнө өөр Squid хувилбар ажиллаж байгаа эсэхийг тогтоо.
Дараа нь бүтэлгүй болж буй яг үйлдлийг унш. PID алдаа нь тохируулсан PID-ийн байршил болон түүний эх хавтаст хамаарна. Логийн алдаа нь лог файл эсвэл хавтаст хамаарна. Кэш эхлүүлэх алдаа нь хадгалалтад хамаарна. shm_open алдаа нь нэрлэсэн хуваалцсан санах ойн объектод хамаарах бөгөөд процесс дээр хэрэглэгдэх аюулгүй байдлын бодлогыг ч хамаарч болно.
Нөөц бүрийн хувьд шаардлагатай гүйцэтгэлийн хандалтыг одоогийн эзэн, горимтой харьцуул. Энгийн зөвшөөрөл хангалттай мэт санагдвал холбогдох SELinux эсвэл AppArmor-ын татгалзлын нотолгоог шалга. Зөвхөн “Permission denied” аль давхарга хандалтыг татгалзсаныг заахгүй.
Хоёр дахь асуудал үүсгэхгүйгээр эзэмшлийг зас
Гүйцэтгэлийн бүртгэлийг суулгацын үйлчилгээний тохиргоотой нийцүүлэн байлга. Бүгдийг nobody руу шилжүүлэх нь туслах програмын хандалтыг эвдэж, үйлчилгээний удирддаг файлуудтай шинэ зөрүү үүсгэж болно.
/dev/shm дотор Squid-той төстэй бүх объектыг устгах нь ч сайн эхний алхам биш. Нэрлэсэн объект идэвхтэй хувилбарт хамаарч болно. Шаардлагатай бол цэвэрлэгээг нөлөөлөлд өртсөн үйлчилгээг зогсоосон байхад баталгаажсан хаягдсан нөөц рүү чиглүүлж, дараа нь үйлчилгээний ердийн механизмаар эхлүүлэх ёстой.
Ашигтай үр дүн нь нийцтэй эхлэл ба эзэмшлийн загвар юм. Алдаа арилах хүртэл root-оор нэг тушаал ажиллуулах нь дараагийн ердийн дахин эхлэлийг яг ижил асуудалтай үлдээж болно.