Squid shm_open: ປະຕິເສດການອະນຸຍາດ — ກວດເຈົ້າຂອງຄວາມຊົງຈຳຮ່ວມ
ແຍກຄວາມຜິດພາດເຈົ້າຂອງຄວາມຊົງຈຳຮ່ວມຂອງ Squid ອອກຈາກຄວາມຜິດພາດສິດ PID, log ແລະໂຟນເດີ cache.
Could not read pid file ແລະ shm_open(...): Permission denied ອາດປາກົດໃນການເລີ່ມ Squid ທີ່ລົ້ມເຫຼວຄັ້ງດຽວກັນ. ພວກມັນຊີ້ໄປຫາແຫຼ່ງຊັບພະຍາກອນຕ່າງກັນ. ການແກ້ເຈົ້າຂອງໂຟນເດີ cache ບໍ່ໄດ້ແກ້ທັງສອງດ້ວຍຕົວມັນເອງ.
ໃນ Linux ວັດຖຸຄວາມຊົງຈຳຮ່ວມ POSIX ມັກສະແດງຢູ່ພາຍໃຕ້ /dev/shm. ເຈົ້າຂອງ ແລະ ໂໝດການເຂົ້າເຖິງຂອງມັນສຳຄັນ. ດັ່ງນັ້ນວັດຖຸທີ່ຖືກປະໄວ້ໂດຍຕົວຕົນການຮັນອື່ນອາດເຮັດໃຫ້ຂະບວນການຕໍ່ມາລົ້ມເຫຼວ, ເຖິງແມ່ນ squid.conf ອ່ານໄດ້ ແລະ ພອດຮັບຟັງວ່າງ.
ສ້າງຄືນວ່າຕົວຢ່າງນີ້ເລີ່ມຢ່າງໃດ
ປຽບທຽບການເລີ່ມບໍລິການປົກກະຕິກັບການເລີ່ມດ້ວຍມືໃດໆທີ່ໃຊ້ເວລາແກ້ບັນຫາ. ຂະບວນການທີ່ເລີ່ມດ້ວຍມື ແລະ ບໍລິການທີ່ຫຸ້ມຫໍ່ອາດໃຊ້ຜູ້ໃຊ້, ເສັ້ນທາງ ຫຼື ໄຟລ໌ຕັ້ງຄ່າຕ່າງກັນ. ກຳນົດວ່າຕົວຢ່າງ Squid ອື່ນຍັງແລ່ນຢູ່ຫຼືບໍ່ ກ່ອນຈະຖືວ່າວັດຖຸໜຶ່ງເກົ່າແກ່.
ຈາກນັ້ນອ່ານການປະຕິບັດທີ່ລົ້ມເຫຼວຢ່າງແທ້ຈິງ. ຄວາມຜິດພາດ PID ກ່ຽວກັບຕຳແໜ່ງ PID ທີ່ຕັ້ງຄ່າ ແລະ ໂຟນເດີແມ່ຂອງມັນ. ຄວາມຜິດພາດ log ກ່ຽວກັບໄຟລ໌ ຫຼື ໂຟນເດີ log. ຄວາມຜິດພາດການເລີ່ມ cache ກ່ຽວກັບບ່ອນເກັບ. ຄວາມຜິດພາດ shm_open ກ່ຽວກັບວັດຖຸຄວາມຊົງຈຳຮ່ວມທີ່ມີຊື່ ແລະ ອາດລວມເຖິງນະໂຍບາຍຄວາມປອດໄພທີ່ໃຊ້ກັບຂະບວນການ.
ສຳລັບແຕ່ລະແຫຼ່ງ ໃຫ້ປຽບທຽບການເຂົ້າເຖິງຕອນຮັນທີ່ຕ້ອງການກັບເຈົ້າຂອງ ແລະ ໂໝດປັດຈຸບັນ. ຖ້າສິດປົກກະຕິເບິ່ງຄືພຽງພໍ ໃຫ້ກວດຫຼັກຖານການປະຕິເສດທີ່ກ່ຽວຂ້ອງໃນ SELinux ຫຼື AppArmor. ພຽງ “Permission denied” ບໍ່ບອກວ່າຊັ້ນໃດປະຕິເສດການເຂົ້າເຖິງ.
ແກ້ເຈົ້າຂອງໂດຍບໍ່ສ້າງບັນຫາທີສອງ
ຮັກສາບັນຊີຮັນໃຫ້ສອດຄ່ອງກັບການຕັ້ງຄ່າບໍລິການຂອງການຕິດຕັ້ງ. ການປ່ຽນທຸກຢ່າງໄປເປັນ nobody ອາດເຮັດໃຫ້ການເຂົ້າເຖິງຂອງຕົວຊ່ວຍແຕກ ແລະ ນຳຄວາມບໍ່ສອດຄ່ອງໃໝ່ກັບໄຟລ໌ທີ່ບໍລິການຈັດການ.
ການລຶບທຸກວັດຖຸທີ່ເບິ່ງຄື Squid ໃນ /dev/shm ກໍບໍ່ແມ່ນກ້າວທຳອິດທີ່ດີ. ວັດຖຸທີ່ມີຊື່ອາດເປັນຂອງຕົວຢ່າງທີ່ກຳລັງເຮັດວຽກ. ການທຳຄວາມສະອາດ ເມື່ອຈຳເປັນ ຄວນເລັ່ງໃສ່ຊັບພະຍາກອນທີ່ຖືກປະໄວ້ຢ່າງຢືນຢັນ ໂດຍຢຸດບໍລິການທີ່ກະທົບ ແລ້ວເລີ່ມຜ່ານກົນໄກບໍລິການປົກກະຕິ.
ຜົນທີ່ເປັນປະໂຫຍດແມ່ນແບບຈຳລອງການເລີ່ມ ແລະ ເຈົ້າຂອງທີ່ສອດຄ່ອງ. ການຮັນຄຳສັ່ງດຽວເປັນ root ຈົນຄວາມຜິດພາດຫາຍໄປ ອາດປະໃຫ້ການເລີ່ມໃໝ່ຕາມປົກກະຕິຄັ້ງຕໍ່ໄປມີບັນຫາເໝືອນເດີມ.