Senas sprendimas perkėlė OpenVPN vykdomąjį failą į kitą vietą ir paliko shell apvalkalą pradiniame kelyje. Po kelių mėnesių ateina atnaujinimas, ir to sprendimo atšaukimas virsta spėlione, kuris failas iš tikrųjų yra klientas. Komandos pavadinimas, paslaugoje sukonfigūruotas vykdomasis failas ir paties paketo failų sąrašas gali rodyti skirtingus objektus, o vieno jų taisymas be kitų sukuria šeimininką, kuris atrodo sutaisytas ir elgiasi prasčiau.

Pradėkite nuo kelio, kurį paleidžia paslauga

Terminalas ir systemd blokas vykdomųjų failų neapsprendžia vienodai. Shell ieško PATH; blokas nurodo kelią, o drop-in pakeitimai gali jį pakeisti neliesdami failo, kurį skaitote. Šis skirtumas paaiškina didžiąją dalį šios užduoties painiavos. Jis taip pat nulemia, į kurį failą turi taikyti jūsų taisymas.

Paklauskite bloko, ką jis vykdo, įskaitant jį keičiančius drop-in failus, ir skaitykite gautą ExecStart eilutę, o ne fragmentą, kurį laikote autoritetingu. Tada sekite tą kelią per bet kurią simbolinę nuorodą iki galutinio failo. Apvalkalas, kuris baigiasi exec į paslėptą katalogą, yra įprasta šių senų pataisų konstrukcija.

Užsirašykite išspręstą kelią prieš ką nors keisdami.

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

Palyginkite komandos pavadinimą su paslaugos keliu

Du atsakymai dažnai skiriasi, ir tas skirtumas savaime nėra gedimas. NetworkManager papildinys gali paleisti savo kelią, o konteineris gali prijungti dar vieną.

Svarbu žinoti, kuris savininkas paleidžia procesą, kuris aptarnauja srautą. Jei blokas vykdo /usr/local/sbin/openvpn-wrapper, o jūsų shell sprendžia /usr/sbin/openvpn, antrojo failo taisymas paslaugoje nieko nekeičia.

Paklauskite, kuriam paketui priklauso kiekvienas kandidatas, tada nuspręskite, ar failą valdo paketas, ar jis įdėtas vietoje. Failas be jį valdančio paketo yra failas, kurį kas nors sąmoningai ten įdėjo, ir jis nusipelno vardo, savininko ir priežasties prieš jį ištrinant. Atvirkštinė klaida taip pat dažna: paketo failo perrašymas senu išsaugotu dvejetainiu failu, nes forumo įraše buvo naudojamas tas pats katalogas.

Leiskite paketų duomenų bazei kalbėti apie paketo failus

Kai programinė įranga atėjo iš Debian paketo, paketų duomenų bazė gali pasakyti, ar jo failai vis dar atitinka tai, kas buvo įdiegta. Tai siauras vientisumo klausimas, o ne saugumo nuosprendis, ir skirtumas svarbus, kai nusprendžiate, ką taisyti. Neatitikimas reiškia, kad failas pasikeitė po diegimo, o tai galėjo būti jūsų senas sprendimas arba teisėtas vietinis pakeitimas. Išvestis nenusprendžia, kuris, todėl skaitykite ją kaip nuorodą, o ne kaip išvadą.

Paleiskite patikrą ir skaitykite išvestį, o ne laikykite tuščio rezultato ko nors įrodymu.

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

dpkg vadovas dokumentuoja, kad patikra lygina įdiegtus failus su vietoje įrašytais metaduomenimis, naudodama išsaugotas kontrolines sumas ten, kur jos yra. Ji pastebi pakeistą paketo failą ir negali pasakyti, ar vietoj jo paleidžiamas kitas dvejetainis failas.

Įrašykite būseną prieš taisydami

Surinkite išspręstą paleidimo kelią, failo ryšį su paketu, apvalkalo vietą ir pakeitimo įrašą, kuris jį įtraukė. Nukopijuokite apvalkalą į apsaugotą vietą, jei jame yra integracijos darbo, kurio prireiks vėliau.

Neįklijuokite apvalkalo turinio į pagalbos temą prieš jį perskaitę, nes šie scenarijai kartais neša prisijungimo duomenis ar šliuzo informaciją.

Užrašykite, kokius profilius naudoja paslauga ir kas prisijungęs, kol dirbate, nes tunelio paleidimas iš naujo gali nutraukti sesiją, kuria administruojate šeimininką.

Patikrinkite paleidimą, tada pašalinkite apvalkalą

Po taisymo paleiskite paslaugą ir patvirtinkite, kad procesas veikia numatytu keliu. Rankiniu būdu įvykdyta versijos užklausa įrodo, kad failas veikia; ji neįrodo, kad blokas jį naudoja.

Tada vėl prijunkite klientą ir patikrinkite, ar profilis vis dar autentifikuojasi, nes dvejetainio failo pakeitimas, ignoruojantis pradinius parametrus, žlugs taip, kad atrodys kaip sertifikato problema.

Pašalinkite perkeltą apvalkalą per tą patį pakeitimo įrašą, kuris jį įtraukė. Užbaigtas taisymas nurodo, kuris vykdomasis failas veikia, kodėl ir kuris failas buvo pašalintas; failo vardo atkūrimas ir viltis nėra tas pats.

Susiję straipsniai