OpenVPN ca.crt نه مومي، سره له دې چې پروفایل بارېږي
د پروفایل لار د هغې دننه د فایلونو بنسټ نه دی. وګورئ چې ولې مطلق --config لا هم پر ca.crt ناکامېږي او څنګه پیل کول ځواب ټاکي.
خدمت پیلېږي، پروفایل پرته له کوم شکایت لوستل کېږي او بیا په یوه داسې کرښه کې مري چې بېربطه ښکاري: دا نشي کولی ca.crt خلاص کړي۔ په سند کې هېڅ نه دی بدل شوی، او په unit فایل کې د پروفایل لار مطلقه ده۔ همدا ترکیب نښه ده۔ هغه لار چې تاسو ورکړې یو فایل ښیي، او د هغه فایل دننه نومونه په بشپړ ډول بل ځای حل کېږي، نو هغه پیل چې بشپړ وړ ښکاري لا هم کولای شي خپل کیلي له هغې ډایرکټرۍ څخه ولولي چې چا نه وه غوښتې۔
ناکامي لږ لاملونه لري، او ارزښت لري چې په ترتیب سره جلا شي: هغه بنسټیزه ډایرکټري چې پروسې واقعاً درلوده، د خدمت د پیل شالید، او د فایل شاوخوا اجازې یا sandbox کله چې لاره سمه وي۔ هر یو بېل اثر پریږدي — په unit کې، په پروسه کې او په فایل سیسټم کې۔
د پروفایل لار بنسټیزه ډایرکټري نه ده
هغه پروسه تصور کړئ چې په /tmp کې پیلېږي او /etc/vpn/prod/tenant-a.ovpn ورته ورکول کېږي۔ د هغه پروفایل دننه، کرښه ca ca.crt یوه نسبي لار نوموي۔ په هغه دلیل کې هېڅ نشته چې پروفایل یې وموند او هغه نوم بیا لیکي، نو پروسه /tmp/ca.crt لټوي او د ورک فایل راپور ورکوي۔
ګډوډي د تېروتنو په ترتیب کې ده۔ OpenVPN لومړی تنظیمات تحلیلوي او هغه فایلونه چې ورته اشاره شوې ده پرانیزي کله چې ورته رسېږي، نو په پروفایل کې ټایپو د هر کلي دمخه راپور کېږي، پداسې حال کې چې ورک سند یوازې هغه وخت ښکاري چې تحلیل هلته ورسېږي۔ نو هغه پروفایل چې بارېږي د دې ثبوت دی چې نحو سم دی، نه د دې چې هغه فایلونه چې نوموي یې موندل شوي۔
لارښود څه جلا کوي: --config او --cd
د OpenVPN 2.6 لارښود دوه بېلابېل انتخابونه بیانوي۔ یو یې د تنظیماتو فایل باروي۔ بل یې د پروسې ډایرکټري بدلوي مخکې له دې چې تنظیمات، کلي، سکریپټ او نور فایلونه ولوستل شي، او مطلقه ډایرکټري غواړي پرته له دې چې اوسنۍ ته اشاره وکړي۔
openvpn --cd /etc/vpn/prod --config tenant-a.ovpn
هغه بلنه یو بڼه ده، نه لارښوونه چې د بل چا پروفایل پیل کړئ۔ څه چې درکوي هغه ټینګار دی: په زنځیر کې د هر نسبي نوم بنسټ په حکم کې ویل کېږي نه دا چې له هغې شیل یا مدیر څخه چې پروسه یې پیل کړه په میراث وي۔ بدیل هم هومره سم دی او د خدمت لپاره ډېری وخت غوره: کاري ډایرکټري پرېږدئ او په پروفایل کې دننه هر هغه فایل چې ورته اشاره شوې مطلق کړئ۔
هر څه چې غوره کړئ، ټوله زنځیر پلټنه کړئ نه لومړنۍ ناکامي۔ پروفایل کولای شي بل د تنظیماتو فایل راکاږي، او د شامل شوي فایل نسبي نومونه د هغه فایل پر ډایرکټري نه بلکې پر هماغه پروسې ډایرکټري حل کېږي۔ د لاګ لارې، د تصدیق فایلونه او مرستندویه سکریپټونه هماغه قاعده تعقیبوي۔
خدمت بل ځای پیلېږي
په پروفایل ډایرکټري کې متقابل شیل د کڅوړه شوې unit په اړه هېڅ نه ثابتوي۔ مدیران خپله کاري ډایرکټري ټاکي، او د پوښ سکریپټ کولای شي دا بیا بدل کړي مخکې له دې چې بائنري وچلېږي۔ هغه unit چې ناکامېږي یوازینی پیل دی چې د فکر کولو ارزښت لري۔
systemctl show -p WorkingDirectory -p ExecStart --value openvpn@tenant-a
ls -l /proc/$(pgrep -n openvpn)/cwd
دوهم حکم هغه ډایرکټري ښیي چې ژوندې پروسه واقعاً نیولې ده، او کله چې پوښ شامل وي دا د unit فایل څخه ډېر باوري دی۔ که دواړه سره سم نه وي، ځواب پوښ دی او unit ګمراه کوونکې نښه ده۔
له لټون وروسته: اجازې، chroot او sandbox
سمه بنسټیزه ډایرکټري لا هم هماغه پیغام ورکولای شي، ځکه چې حل او لاسرسی جلا ګامونه دي۔ پروسې ته په هر مورني ډایرکټري کې د اجرا اجازه او په فایل کې د لوستلو اجازه ورته اړتیا ده، او هغه خدمتي unit چې د فایل سیسټم یوه برخه پټوي بدلوي چې پروسه اصلاً څه لیدلای شي۔
درې عام ډولونه ورته تېروتنه جوړوي۔ فایل یوازې root لپاره لوستل کېږي پداسې حال کې چې خدمت د خلاصولو دمخه له امتیازاتو تېرېږي۔ unit د فایل سیسټم ساتونکی لید ټاکي چې د پروفایل ډایرکټري نه لري۔ ډیمون د chroot سره چلېږي، نو هغه لاره چې په کوربه کې شته په هغه لید کې نشته۔
تشخیص د فایل مالکیت او د پروسې هویت سره وکړئ، نه د اجازو سستولو سره۔ د دې تېروتنې خاموشولو لپاره شخصي کلي د ټولو لپاره لوستل کېدونکې کول لوړه ناکامي په خاموشه بدلوي، او کلي هغه برخه ده چې تاسو یې لږترلږه افشا کول غواړئ۔
سمون د خپل پیل سره ثابت کړئ
اصلي unit له هغې ډایرکټري څخه بیا پیل کړئ چې پروفایل ته اړه نه لري او هماغه د پیل کرښه وګورئ۔ بیا تایید کړئ چې پروسه د چلېدو پر مهال غوښتل شوې ډایرکټري نیولې ده، او هغه سند چې بار کړی هغه دی چې تاسو یې تمه لرله۔
systemctl restart openvpn@tenant-a
systemctl status openvpn@tenant-a --no-pager
journalctl -u openvpn@tenant-a -n 20 --no-pager
کله چې د لارو بارول بریالي شي، تصدیق او لارښوونه لا هم خپلې ناکامۍ لرونکې جلا پړاوونه دي، او هغه اړیکه چې پورته راځي خو هېڅ ترافیک نه تېروي بله څېړنه ده۔ دلته سمون یوازې د دې اړه دی چې فایلونه له کومې ډایرکټرۍ څخه راغلي، او باید په بلنه کې ښکاره وي نه دا چې څوک یې وروستی ځل په لاس چل کړی یاد یې وي۔
که پروفایل د تنظیماتو مدیر لخوا ځای پرځای کېږي، بنسټیزه ډایرکټري یا مطلق فایل نومونه هلته هم کېږدئ۔ په یوه کوربه کې لاسي سمون د دې ستونزې هغه نسخه ده چې د بل بیا جوړولو وروسته بېرته راځي۔