PrivateTmp: hook kirjoitti tiedoston, mutta mihin se meni?
Yksityinen väliaikainen nimiavaruus piilottaa tiedoston sen sijaan, että poistaisi sen. Tarkista prosessin juuri ennen unitin muuttamista ja anna sitten jaetuille tiedoille oikea polku.
Hookit ilmoittavat onnistumisesta, ja sama polku näyttää edelleen tyhjältä kuoresta katsottuna. Molemmat väitteet voivat olla yhtä aikaa tosia, koska systemd-palvelu voi elää omassa mount-nimiavaruudessaan yksityisen väliaikaishakemiston kanssa. Kun tämä ymmärretään, kiinnostava kysymys on, onnistuiko kirjoitus ylipäätään.
Kaksi väliaikaishakemistoa, yksi polku
Eristysasetus antaa unitille yksityisen näkymän väliaikaishakemistoihin sen sijaan, että tekisi niistä vain luku -hakemistoja. Unitin ulkopuoliset prosessit eivät näe, mitä se kirjoittaa sinne, ja kaikki, mitä se jättää jälkeensä, hylätään unitin pysähtyessä. Siksi hookin tulostama polku ja kuoresta tarkistettu polku voivat viitata eri objekteihin, joilla on sama nimi.
Kyse on näkyvyysongelmasta, ja se näyttää tietojen menetyksen ongelmalta. Mitään ei poistettu, koska tiedosto on yksinkertaisesti nimiavaruudessa, jonka jäsen kuori ei ole. Sama komento käyttäytyy eri tavoin unitin sisällä suoritettuna, ja juuri tämä havainto ratkaisee kiistan yleensä. Lue unitin asetukset ennen kuin päättelet kirjoituksesta mitään.
Erota näkymätön kirjoittamiskelvottomasta
Onnistunut kirjoitus ja epäonnistunut avaus tuottavat erilaista näyttöä, ja tämä ero ratkaisee korjauksen. Jos hook kertoo tiedoston syntyneen mutta ulkopuolinen lukija ei löydä sitä, sinulla on nimiavaruuskysymys. Jos hook ilmoittaa käyttöoikeusvirheen tai epäonnistuneen avauksen, tiedostoa ei koskaan kirjoitettu, eikä mikään nimiavaruuden muutos auta.
systemctl show [email protected] -p PrivateTmp -p User -p Group -p RuntimeDirectory
systemctl show [email protected] -p MainPID --value
sudo ls -l /proc/PID/root/tmp/client-stateProsessin juuripolku paljastaa palvelun oman tiedostojärjestelmänäkymän, riippuen kyseiseen prosessiin kohdistuvista käyttöoikeustarkistuksista, kun se vielä toimii. Lue unitin lokia samassa istunnossa, koska kirjoitusvirhe ja puuttuva tiedosto sekoittuvat helposti, kun joku on jo päättänyt syyn.
Anna jaetuille tiedoille selkeä sijainti
Tiedot, joita vain palvelu tarvitsee, kuuluvat sen yksityiseen väliaikaishakemistoon. Tiedot, jotka toisen prosessin on luettava, tarvitsevat molemmille määritellyn polun, jossa on ilmoitettu omistaja, tila ja voimassaolo. Päätä, kumpi näistä kahdesta tapauksesta sinulla on, ennen kuin muokkaat unitia. Useimmat näistä tapauksista johtuvat siitä, että yksityistä tiedostoa kohdellaan jaettuna.
[Service]
RuntimeDirectory=openvpn-hook-office
RuntimeDirectoryMode=0750Suoritushakemisto sijoittaa kansion järjestelmän suoritusalueen alle, luo sen unitin määritetylle käyttäjälle ja ryhmälle ja poistaa sen, kun unit pysähtyy. Lisää se drop-inin kautta, jotta paketin unit pysyy ehjänä, lataa sitten hallinta uudelleen ja käynnistä kyseinen instanssi uudelleen hyväksyen, että sen asiakkaat yhdistävät uudelleen.
Säilytä jokainen suoritushakemisto, jota asennettu unit jo vaatii. Luettelon korvaaminen sen täydentämisen sijaan on tavallinen tapa rikkoa riippumaton ominaisuus, jota kukaan ei yhdistä muutokseen.
Kaksi käyttöoikeuskerrosta voivat olla eri mieltä
Palveluhallinta luo hakemiston unitin määritetylle käyttäjälle, kun taas VPN-taustaohjelma voi erikseen laskeutua omalle tililleen ennen yhteyshookin suorittamista. Ne ovat eri kerroksia, ja ne voivat nimetä eri identiteettejä.
Rootin omistama hakemisto rajoittavalla tilalla on täysin näkyvissä taustaohjelmalle, joka on jo luopunut käyttöoikeuksistaan, ja silti sen kirjoittamiskelvoton. Virhe luetaan silloin käyttöoikeusongelmana, vaikka polku on täsmälleen siellä, missä odotit. Vertaa hakemiston omistajaa identiteettiin, jonka hook ilmoittaa. Kun ne eroavat, tila ei ollut koskaan kysymys.
Tarkista identiteetti, jona hook todella toimii, ennen omistajuuden muuttamista. Palvelun suorituskäyttäjän muuttaminen hakemiston korjaamiseksi voi muuttaa laitepääsyä ja verkkokäyttöoikeuksia muualla, mikä on suuri hinta pienestä ongelmasta.
Tarkista koko luovutus
Vahvista neljä asiaa kerralla: hook kirjoittaa todellisen identiteettinsä alla, aiottu lukija voi kuluttaa tiedoston, asiaankuulumattomat käyttäjät eivät voi, ja unitin pysäyttäminen siivoaa suunnitellusti. Tiedoston ilmestyminen isännän jaettuun väliaikaishakemistoon ei ole vaatimus, ja se on yleensä merkki siitä, että vaihto ei koskaan saanut omaa polkuaan. Testaa lukijaa uudelleenkäynnistyksen jälkeen, ei vain ensimmäisellä ajokerralla. Siivouskäyttäytyminen on osa suunnittelua, joten tarkkaile sitä sen sijaan, että olettaisit sen.
Pysyvä tila kuuluu paikkaan, jonka elinikä vastaa, koska suoritushakemisto on tarkoitettu katoamaan. Valitse sijainti eliniän, älä mukavuuden perusteella. Tämä tapa estää saman tutkimuksen seuraavan version.