Hookar rapporterer suksess, og den same stigen ser framleis tom ut frå ein shell. Begge påstandane kan vere sanne samstundes, fordi ein systemd-teneste kan leva i sitt eige mount-namnerom med ei privat mellombels mappe. Når det er forstått, blir det interessante spørsmålet om skrivinga i det heile lukkast.

To mellombelse mapper, ein stig

Isolasjonsinnstillinga gjev eininga eit privat syn på dei mellombelse mappene i staden for å gjere dei skriveverna. Prosessar utanfor eininga kan ikkje sjå kva ho skriv der, og alt ho lèt etter seg, blir kasta når eininga stoppar. Ein stig som hooken skriv ut, og ein stig som blir kontrollert frå ein shell, kan difor peike på ulike objekt med same namn.

Dette er eit synlegheitsproblem, og det ser ut som eit datatapsproblem. Ingenting vart sletta, fordi fila rett og slett ligg i eit namnerom som shellen ikkje er medlem av. Den same kommandoen oppfører seg annleis når han blir køyrd inne i eininga, og det er den observasjonen som vanlegvis avgjer diskusjonen. Les innstillingane til eininga før du konkluderer noko om skrivinga.

Skil usynleg frå uskriveleg

Ei vellukka skriving og ei mislukka opning gjev ulike bevis, og skilnaden avgjer reparasjonen. Viss hooken seier at fila vart oppretta, men ein ekstern lesar ikkje finn ho, har du eit namneromsspørsmål. Viss hooken rapporterer ein tillatingsfeil eller ei mislukka opning, vart fila aldri skriven, og inga endring av namnerommet vil hjelpe.

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-state

Stigen via prosessrota viser tenesta sitt eige filsystemsyn, underlagt tillatingskontrollar på den prosessen medan han framleis køyrer. Les journalen til eininga i same økta, fordi ein skrivefeil og ei manglande fil lett blir forveksla når nokon først har bestemt årsaka.

Gje delte data ein eksplisitt stad

Data som berre tenesta treng, høyrer i den private mellombelse mappa hennar. Data som ein annan prosess må lese, treng ein stig definert for begge, med oppgjeven eigar, modus og utløp. Avgjer kva av dei to du har, før du redigerer eininga. Dei fleste av desse hendingane kjem av å handsame ei privat fil som ei delt.

[Service]
RuntimeDirectory=openvpn-hook-office
RuntimeDirectoryMode=0750

Ei runtime-mappe plasserer mappa under runtime-området til systemet, opprettar ho for den konfigurerte brukaren og gruppa til eininga og fjernar ho når eininga stoppar. Legg ho til via ein drop-in slik at eininga til pakken held seg intakt, last deretter inn administratoren på nytt og start den instansen på nytt, med aksept for at klientane hans koplar seg til igjen.

Hald på kvar runtime-mappe som den installerte eininga allereie krev. Å erstatte lista i staden for å leggje til i ho er ein vanleg måte å øydeleggje ein urelatert funksjon som ingen knyter til endringa.

To privilegjelag kan vere usamde

Tenesteadministratoren opprettar mappa for den konfigurerte brukaren til eininga, medan VPN-demonen separat kan gå ned til sin eigen konto før han køyrer ein tilkoplingshook. Det er ulike lag, og dei kan namngje ulike identitetar.

Ei root-eigd mappe med restriktiv modus er fullt synleg for ein demon som allereie har gjeve slepp på privilegium, og framleis uskriveleg for han. Feilen blir då lesen som eit tillatingsproblem sjølv om stigen finst nøyaktig der du venta. Samanlikn eigaren av mappa med identiteten hooken rapporterer. Når dei er ulike, var modusen aldri spørsmålet.

Kontroller identiteten hooken faktisk køyrer som, før du endrar eigarskap. Å endre den køyrande brukaren til tenesta for å rette ei mappe kan endre einingstilgang og nettverksprivilegium andre stader, noko som er ein høg pris for eit lite problem.

Verifiser heile overleveringa

Stadfest fire ting på ein gong: hooken skriv under sin verkelege identitet, den tiltenkte lesaren kan bruke fila, urelaterte brukarar kan ikkje, og stopp av eininga ryddar opp som designa. At ei fil dukkar opp i den delte mellombelse mappa til verten er ikkje eit krav, og det er vanlegvis eit teikn på at utvekslinga aldri fekk sin eigen stig. Test lesaren etter ein omstart, ikkje berre under den første køyringa. Oppryddingsåtferd er ein del av designet, så observer han i staden for å anta han.

Vedvarande tilstand høyrer heime ein stad med tilsvarande levetid, sidan ei runtime-mappe er meint å forsvinne. Vel plasseringa etter levetid i staden for etter komfort. Den vanen hindrar neste versjon av nettopp denne undersøkinga.

Relaterte artiklar