status=200/CHDIR: systemd OpenVPN-г хэзээ ч эхлүүлээгүй
CHDIR алдаа нь systemd каталогт орж чадаагүйг илэрхийлнэ, OpenVPN профайл уншиж чадаагүйг биш. VPN тохиргоог хөндөхөөс өмнө unit-г уншина уу.
Үйлчилгээ бүтэлгүйтэж, бүртгэлд spawn болон каталог дурдагдаж, эхний зөн совин VPN тохиргоог шалгах байдаг. Тэр файлаас юу ч уншигдаагүй байна. systemd процессийг бэлтгэх үеэр, гүйцэтгэх файл ажиллахаас өмнө бүтэлгүйтсэн тул нэг ч парсер, нэг ч гэрчилгээ, нэг ч алсын хост асуугдаагүй. Төлөвийн кодыг OpenVPN-ийн тухай бус systemd-ийн тухай мэдэгдэл гэж унших нь үүнийг богино мөрдөн шалгалт болгодог.
Төлөвийн кодыг програмаас өмнө уншина уу
Үйлчилгээний нэрний дараах тоон код нь бүтэлгүйтсэн үе шатыг нэрлэнэ. Каталогийн алдааг CHDIR төлөв гэж мэдээлдэг бол ажиллуулж чадаагүй гүйцэтгэх файл нь огт өөр код юм. Хоёулаа хураангуй мөрөнд төстэй харагдах бөгөөд шалтгаанд нь нийтлэг зүйл байхгүй.
Энэ ялгаа чухал, учир нь засварууд өөр файлд байдаг. CHDIR алдаа нь зам болон үйлчилгээ түүнийг хэрхэн хардагтай холбоотой. Exec алдаа нь бинарын файл, түүний хөрвүүлэгч эсвэл холбоогүй mount-той холбоотой. VPN-ийн алсын цэг, шифрийн жагсаалт эсвэл гэрчилгээний замыг өөрчлөх нь аль нэгийг ч засахгүй.
Алдаа нь амжилттай ажилласны дараа бус эхлэх үед болж байгааг баталгаажуулна уу. Үйлчилгээ өчигдөр ажиллаж байсан бол одоо мөн үе шатанд бүтэлгүйтвэл каталог, түүний эрх эсвэл unit өөрөө өөрчлөгдсөн бөгөөд тэр өөрчлөлт нь хайх нотолгоо юм.
Unit-ээс хаана байхыг хүсч байгааг асууна уу
Суулгасан гэж бодож буй файлыг бус үр дүнтэй unit-г уншина уу, учир нь drop-in файлууд үндсэн unit-г хэзээ ч засалгүйгээр ажлын каталогийг дарж болно. Show-гийн гаралт асуултад шууд хариулна:
systemctl cat [email protected]
systemctl show [email protected] -p WorkingDirectory -p RootDirectory -p User -p ProtectHome
journalctl -u [email protected] -b --no-pager | tail -30
Upstream серверийн загварын хувьд ажлын каталог нь серверийн тохиргооны каталог бөгөөд instance-ийн нэр доторх профайлыг сонгоно. Тиймээс branch нэртэй instance өөрийн файлыг мөн каталогт хүлээж, өөр газар байрлуулсан профайл ажлын каталогийн шаардлагыг огт хангахгүй.
Unit-ийн шаардсаныг байгаа зүйлтэй харьцуулна уу. Өмнө байсан зам, одоо өөр газар заасан симболын холбоос эсвэл каталогтой тохирохоо больсон instance-ийн нэр нь яг энэ алдааг үүсгэдэг энгийн өөрчлөлтүүд юм.
Замыг үйлчилгээний хардаг байдлаар шалгана уу
Таны shell болон үйлчилгээ файлын системийн ижил дүр зургийг хуваалцдаггүй. Тохируулсан үндсэн каталог эсвэл root image нь unit доторх абсолют замын утгыг өөрчилдөг бөгөөд хост дээр тодорхой байгаа зам тэр нэрийн орон зайд байхгүй байж болно. Гараар хийсэн туршилтад итгэхээс өмнө unit-ийн тохиргоог уншина уу.
Эрхүүд асуудлыг улам хүндрүүлдэг. Үйлчилгээ тодорхой хэрэглэгчээр ажилладаг бөгөөд тэр хэрэглэгч зорилгод хүрэхийн тулд эх каталог бүрээр дамжих боломжтой байх ёстой, зөвхөн зорилгыг өөрөө унших биш. Root-д уншигдах боловч үйлчилгээний хэрэглэгчид дамжигдахгүй каталог нь алга болсон зам мэт харагдах алдаа үүсгэдэг.
namei -l /etc/openvpn/server
systemctl show [email protected] -p ProtectSystem -p ReadOnlyPaths
Хатууруулах тохиргоо мөн энэ зургийн хэсэг юм. Гэрийн каталогуудыг нуух эсвэл файлын системийн нэг хэсгийг зөвхөн уншигдахаар болгох unit нь тохируулсан ёсоор ажиллаж, ажлын каталог нь sandbox түүнийг одоо ч ил гаргадаг газарт байх ёстой.
Эзэмшигчийг засаж, дараа нь өөр алдаа хүлээнэ үү
Зохион байгуулалт эсвэл unit-г тэр тохиргоог эзэмшдэг хүнээр засуулна уу. Профайлыг хүлээгдэж буй каталогт шилжүүлэх нь зохион байгуулалт буруу үед хууль ёсны засвар боловч орж болохгүй каталогийг тайлбарлахгүй тул үүнийг ерөнхий хариулт гэж бүү үзээрэй.
Тохиргооны мод дээрх эрхийг өргөтгөх эсвэл sandbox-г хасах богино замаас татгалзаарай. Хоёулаа шинж тэмдгийг арилгахын зэрэгцээ тэнд зориуд тавьсан хамгаалалтыг авч хаядаг бөгөөд дараагийн алдааг тайлбарлахад хэцүү болно.
Instance-г дахин эхлүүлж, амжилт гэж таамаглахын оронд дараагийн үйл явдлыг уншина уу. Дараагийн магадлалтай алдаа нь OpenVPN өөрийн тохиргооны файлыг нээж чадахгүй байх бөгөөд энэ нь ахиц: ажлын каталогт орж, парсер одоо ажиллаж байна. Тэндээс unit-ийн бодит файлын зураглалыг дагаж, сүлжээний алдаа шийдвэрлэх рүү буцаж болохгүй.
systemd-ийн гүйцэтгэлийн лавлагаа нь ажлын каталог үндсэн каталог болон sandbox-той хэрхэн тайлбарлагдахыг тодорхойлдог. Санах ёстой хэв маяг энгийн: төлөвийн код бүр өөр үе шатыг нэрлэдэг бөгөөд зөвхөн програмын өөрийн алдаа програмыг тодорхойлдог.