Հին լուծումներից մեկը OpenVPN-ի գործարկվող ֆայլը տեղափոխել էր այլ տեղ և սկզբնական ուղու վրա թողել shell-փաթաթան։ Ամիսներ անց գալիս է թարմացում, և լուծումը հետարկելը վերածվում է գուշակության խաղի այն մասին, թե որ ֆայլն է իրականում հաճախորդը։ Հրամանի անունը, ծառայությունում կարգավորված գործարկվող ֆայլը և փաթեթի սեփական ֆայլերի ցանկը կարող են մատնանշել տարբեր օբյեկտների, և դրանցից մեկը մյուսներից անկախ վերանորոգելը ստեղծում է հոսթ, որը վերանորոգված է թվում և ավելի վատ վարվում։

Սկսեք այն ուղուց, որը գործարկում է ծառայությունը

Տերմինալը և systemd-միավորը գործարկվող ֆայլերը նույն կերպ չեն լուծում։ Shell-ը փնտրում է PATH-ում, միավորը նշում է ուղի, և drop-in վերագրանցումները կարող են փոխարինել այն՝ չդիպչելով ձեր կարդացած ֆայլին։ Այդ տարբերությունը բացատրում է այս առաջադրանքի շփոթության մեծ մասը։ Այն նաև որոշում է, թե որ ֆայլին պետք է ուղղվի ձեր վերանորոգումը։

Հարցրեք միավորին, թե ինչ է այն գործարկում, ներառյալ այն փոփոխող drop-in-ները, և կարդացեք ստացված ExecStart տողը, այլ ոչ այն հատվածը, որը հեղինակավոր եք համարում։ Այնուհետև հետևեք այդ ուղուն ցանկացած սիմվոլիկ հղումով մինչև վերջնական ֆայլը։ Փաթաթան, որը exec-ով ավարտվում է թաքնված պանակում, այս հին լուծումների սովորական դասավորությունն է։

Գրի առեք լուծված ուղին, նախքան ինչ-որ բան փոխելը։

systemctl cat [email protected] | grep -n 'ExecStart'
readlink -f "$(command -v openvpn)"

Համեմատեք հրամանի անունը ծառայության ուղու հետ

Երկու պատասխանները հաճախ տարբեր են, և այդ տարբերությունն ինքնաբերաբար թերություն չէ։ NetworkManager-ի պլագինը կարող է գործարկել իր ուղին, իսկ կոնտեյները՝ տեղադրել ևս մեկը։

Կարևոր է իմանալ, թե որ սեփականատերն է գործարկում երթևեկությունը սպասարկող գործընթացը։ Եթե միավորը գործարկում է /usr/local/sbin/openvpn-wrapper, մինչ ձեր shell-ը լուծում է /usr/sbin/openvpn, ապա երկրորդ ֆայլի վերանորոգումը ոչինչ չի փոխում ծառայության մեջ։

Հարցրեք, թե որ փաթեթին է պատկանում յուրաքանչյուր թեկնածու, ապա որոշեք՝ ֆայլը կառավարվում է փաթեթի կողմից, թե տեղադրված է տեղում։ Ֆայլը, որն ունեցող փաթեթ չունի, ֆայլ է, որը ինչ-որ մեկը դիտավորյալ դրել է այնտեղ, և այն արժանի է անվան, սեփականատիրոջ և պատճառի՝ նախքան ջնջվելը։ Հակառակ սխալը նույնպես տարածված է. փաթեթի ֆայլը հին պահված երկուականով վերագրանցելը, որովհետև ֆորումի գրառումն օգտագործել է նույն պանակը։

Թույլ տվեք փաթեթների տվյալների բազային խոսել փաթեթի ֆայլերի մասին

Երբ ծրագրաշարը եկել է Debian փաթեթից, փաթեթների տվյալների բազան կարող է ասել՝ արդյոք նրա ֆայլերը դեռ համապատասխանում են տեղադրվածին։ Սա ամբողջականության նեղ հարց է, ոչ անվտանգության դատավճիռ, և տարբերությունը կարևոր է, երբ որոշում եք, թե ինչ վերանորոգել։ Անհամապատասխանությունը նշանակում է, որ ֆայլը փոխվել է տեղադրումից հետո, ինչը կարող է լինել ձեր հին լուծումը կամ օրինական տեղական խմբագրում։ Ելքը չի որոշում, թե որն է, ուստի կարդացեք այն որպես ցուցիչ, ոչ որպես եզրակացություն։

Գործարկեք ստուգումը և կարդացեք ելքը՝ դատարկ արդյունքը որպես ինչ-որ բանի ապացույց չընդունելու փոխարեն։

dpkg -S /usr/sbin/openvpn
dpkg --verify openvpn

dpkg ձեռնարկը փաստում է, որ ստուգումը համեմատում է տեղադրված ֆայլերը տեղում գրանցված մետատվյալների հետ՝ օգտագործելով պահված ստուգիչ գումարները, որտեղ դրանք կան։ Այն նկատում է փոփոխված փաթեթի ֆայլը և չի կարող ասել՝ արդյոք դրա փոխարեն գործարկվում է մեկ այլ երկուական։

Գրանցեք վիճակը նախքան վերանորոգումը

Հավաքեք լուծված գործարկման ուղին, ֆայլի կապը փաթեթի հետ, փաթաթանի գտնվելու վայրը և այն փոփոխության գրառումը, որը ներմուծել է այն։ Պատճենեք փաթաթանը պաշտպանված վայրում, եթե այն պարունակում է ինտեգրման աշխատանք, որը հետագայում անհրաժեշտ կլինի։

Չտեղադրեք փաթաթանի բովանդակությունը աջակցության թեմայում նախքան այն կարդալը, քանի որ այս սկրիպտները երբեմն կրում են հավատարմագրեր կամ դարպասի մանրամասներ։

Գրանցեք, թե ծառայությունն ինչ պրոֆիլներ է օգտագործում և ով է միացած, մինչ աշխատում եք, քանի որ թունելի վերսկսումը կարող է ընդհատել այն սեսիան, որով կառավարում եք հոսթը։

Ստուգեք գործարկումը, ապա հեռացրեք փաթաթանը

Վերանորոգումից հետո գործարկեք ծառայությունը և հաստատեք, որ գործընթացն աշխատում է ձեր նախատեսած ուղով։ Ձեռքով կատարված տարբերակի հարցումը ապացուցում է, որ ֆայլն աշխատում է, այն չի ապացուցում, որ միավորն օգտագործում է այն։

Այնուհետև նորից միացրեք հաճախորդին և ստուգեք, որ պրոֆիլը դեռ նույնականացվում է, քանի որ սկզբնական ընտրանքներն անտեսող երկուականի փոխարինումը կձախողվի այնպես, որ նման կլինի վկայագրի խնդրի։

Հեռացրեք տեղափոխված փաթաթանը նույն փոփոխության գրառումով, որը ներմուծել է այն։ Ավարտված վերանորոգումը նշում է, թե որ գործարկվող ֆայլն է աշխատում, ինչու և որ ֆայլը հեռացվել է, մինչ ֆայլի անունը վերականգնելն ու հուսալը նույն բանը չեն։

Առնչվող հոդվածներ