Кызмат иштебей калат, журналдарда 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 менен кантип түшүндүрүлүшүн аныктайт. Эсте калтыруучу үлгү жөнөкөй: ар бир абал коду башка баскычты атайт, жана колдонмонун өз каталары гана колдонмону сүрөттөйт.

Тектеш макалалар