Vanha kiertotapa siirsi OpenVPN:n suoritettavan tiedoston muualle ja jätti shell-kääreen alkuperäiselle polulle. Kuukausia myöhemmin saapuu päivitys, ja kiertotavan purkaminen muuttuu arvailuksi siitä, mikä tiedosto oikeastaan on asiakasohjelma. Komennon nimi, palveluun määritetty suoritettava tiedosto ja paketin oma tiedostoluettelo voivat kaikki osoittaa eri objekteihin, ja yhden niistä korjaaminen ilman muita tuottaa isäntäkoneen, joka näyttää korjatulta ja käyttäytyy huonommin.

Aloita polusta, jonka palvelu käynnistää

Pääte ja systemd-yksikkö eivät ratkaise suoritettavia tiedostoja samalla tavalla. Kuori etsii PATHista; yksikkö nimeää polun, ja drop-in-määritykset voivat korvata sen koskematta tiedostoon, jota luet. Tämä ero selittää suurimman osan tämän tehtävän sekaannuksesta. Se myös ratkaisee, mihin tiedostoon korjauksesi on kohdistuttava.

Kysy yksiköltä, mitä se suorittaa, mukaan lukien sitä muuttavat drop-in-tiedostot, ja lue tuloksena oleva ExecStart-rivi sen sijaan, että luottaisit oletettuun katkelmaan. Seuraa sitten tätä polkua minkä tahansa symbolisen linkin kautta lopulliseen tiedostoon. Kääre, joka päättyy exec piilotettuun hakemistoon, on näiden vanhojen korjausten tavallinen järjestely.

Kirjoita ratkaistu polku muistiin ennen kuin muutat mitään.

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

Vertaa komennon nimeä palvelun polkuun

Kaksi vastausta eroavat usein, eikä ero ole automaattisesti vika. NetworkManagerin liitännäinen voi käynnistää oman polkunsa, ja kontti voi liittää vielä yhden.

Ratkaisevaa on tietää, mikä omistaja käynnistää liikennettä palvelevan prosessin. Jos yksikkö suorittaa /usr/local/sbin/openvpn-wrapper, kun taas kuoresi ratkaisee /usr/sbin/openvpn, toisen tiedoston korjaaminen ei muuta palvelussa mitään.

Kysy, mikä paketti omistaa kunkin ehdokkaan, ja päätä sitten, onko tiedosto paketinhallinnassa vai paikallisesti sijoitettu. Tiedosto, jolla ei ole omistavaa pakettia, on tiedosto, jonka joku on tarkoituksella laittanut sinne, ja se ansaitsee nimen, omistajan ja syyn ennen poistamistaan. Myös päinvastainen virhe on yleinen: paketin tiedoston ylikirjoittaminen vanhalla tallennetulla binäärillä, koska foorumiviesti käytti samaa hakemistoa.

Anna pakettitietokannan puhua paketin tiedostoista

Kun ohjelmisto tuli Debian-paketista, pakettitietokanta voi kertoa, vastaavatko sen tiedostot edelleen asennettua. Se on kapea eheyskysymys, ei turvallisuustuomio, ja ero on tärkeä, kun päätät, mitä korjata. Poikkeama tarkoittaa, että tiedosto muuttui asennuksen jälkeen, mikä voi olla vanha kiertotapasi tai laillinen paikallinen muokkaus. Tuloste ei ratkaise kumpi, joten lue sitä osoittimena, älä johtopäätöksenä.

Suorita tarkistus ja lue tuloste sen sijaan, että pitäisit tyhjää tulosta todisteena mistään.

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

dpkg-käsikirja dokumentoi, että tarkistus vertaa asennettuja tiedostoja paikallisesti tallennettuihin metatietoihin käyttäen tallennettuja tarkistussummia siellä, missä niitä on. Se huomaa muuttuneen paketin tiedoston, eikä se voi kertoa, käynnistetäänkö sen sijaan jokin toinen binääri.

Kirjaa tila ennen korjausta

Kokoa ratkaistu käynnistyspolku, tiedoston pakettisuhde, kääreen sijainti ja muutosmerkintä, joka sen toi. Kopioi kääre suojattuun paikkaan, jos se sisältää integraatiotyötä, jota tarvitaan myöhemmin.

Älä liitä kääreen sisältöä tukiketjuun ennen kuin olet lukenut sen, sillä nämä skriptit kantavat joskus tunnuksia tai yhdyskäytävän tietoja.

Kirjaa, mitä profiileja palvelu käyttää ja kuka on yhdistetty työskennellessäsi, sillä tunnelin uudelleenkäynnistys voi katkaista istunnon, jolla hallitset isäntää.

Vahvista käynnistys ja poista sitten kääre

Korjauksen jälkeen käynnistä palvelu ja vahvista, että prosessi käyttää aiottua polkua. Käsin tehty versiokysely todistaa, että tiedosto toimii; se ei todista, että yksikkö käyttää sitä.

Yhdistä sitten asiakasohjelma uudelleen ja tarkista, että profiili todentaa edelleen, sillä binäärin vaihto, joka jättää alkuperäiset valinnat huomiotta, epäonnistuu tavalla, joka näyttää varmenneongelmalta.

Poista syrjäytetty kääre saman muutosmerkinnän kautta, joka sen toi. Valmis korjaus kertoo, mikä suoritettava tiedosto on käynnissä, miksi ja mikä tiedosto poistettiin; tiedostonimen palauttaminen ja toivominen eivät ole sama asia.

Aiheeseen liittyvät artikkelit