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 په توګه تر هغې چلول چې تېروتنه ورک شي کېدای شي بله نورماله بیا پیلونه همدغه ستونزه سره پرېږدي.