PrivateTmp: de hook skreau it bestân – wêr is it hinne?
In privee tydlike nammeromte ferstoppet it bestân ynstee fan it te wiskjen. Kontrolearje de prosessewoartel foardat jo de unit feroarje, en jou dan dielde gegevens in echt paad.
Hooks melde sukses, en itselde paad liket noch altyd leech fan in shell ôf. Beide bewearings kinne tagelyk wier wêze, om’t in systemd-tsjinst yn syn eigen nammeromte libje kin, mei in privee tydlike map. As dat ienris begrepen is, wurdt de nijsgjirrige fraach oft it skriuwen wol slagge is.
Twa tydlike mappen, ien paad
De isolaasje-ynstelling jout de unit in privee sicht op de tydlike mappen ynstee fan se allinnich-lêze te meitsjen. Prosessen bûten de unit kinne net sjen wat er dêr skriuwt, en alles wat er efterlit wurdt fuortgoaid as de unit stoppet. In paad dat de hook printsje lit en in paad dat fan in shell ôf kontrolearre wurdt, kinne dêrom nei ferskate objekten mei deselde namme ferwize.
Dat is in sichtberensprobleem, en it liket op in probleem fan gegevensferlies. Der is neat wiske, om’t it bestân gewoan yn in nammeromte sit dêr’t de shell gjin lid fan is. Itselde kommando draacht him oars as it yn de unit útfierd wurdt, en dat is de waarnimming dy’t it skeel meastentiids besljochtet. Lês de ynstellingen fan de unit foardat jo oer it skriuwen wat konkludearje.
Skied ûnsichtber fan net-skriuwber
In slagge skriuwing en in mislearre iepening leverje ferskillend bewiis, en dat ferskil beslút de reparaasje. As de hook seit dat it bestân oanmakke is mar in bûtenlêzer kin it net fine, hawwe jo in nammeromte-fraach. As de hook in tastimmingsflater of in mislearre iepening rapportearret, is it bestân nea skreaun en sil gjin nammeromteferoaring helpe.
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-stateIt paad fia de prosessewoartel lit de eigen bestânssysteemsicht fan ’e tsjinst sjen, ôfhinklik fan tastimmingskontrôles op dat proses salang’t it noch rint. Lês it sjoernaal fan de unit yn deselde sesje, om’t in skriuwflater en in ûntbrekkend bestân maklik trochelaske wurde as immen de oarsaak al besljochte hat.
Jou dielde gegevens in dúdlike lokaasje
Gegevens dêr’t allinnich de tsjinst ferlet fan hat, hearre yn syn privee tydlike map. Gegevens dy’t in oar proses lêze moat, hawwe in paad nedich dat foar beide definiearre is, mei in oanjûn eigener, in modus en in ferfaldatum. Beslis hokker fan de twa jo hawwe foardat jo de unit bewurkje. De measte fan dizze foarfallen komme derfan dat in privee bestân as in dield bestân behannele wurdt.
[Service]
RuntimeDirectory=openvpn-hook-office
RuntimeDirectoryMode=0750In runtima-map set de map ûnder it runtima-gebiet fan it systeem, makket it oan foar de konfigurearre brûker en groep fan ’e unit en ferwideret it as de unit stoppet. Foegje it ta fia in drop-in dat de unit fan it pakket yntakt bliuwt, laad dan de behearder op ’e nij en start dat eksimplaar op ’e nij, en akseptearje dat syn kliïnten wer ferbine.
Hâld elke runtima-map dy’t de ynstallearre unit al ferget. It list ferfange ynstee fan oan te foegjen is in gewoane manier om in net-relatearre funksje te brekken dy’t gjinien mei de feroaring ferbynt.
Twa privileezjelagen kinne ferskille
De tsjinstbehearder makket de map foar de konfigurearre brûker fan ’e unit, wylst de VPN-daemon apart nei syn eigen account sakje kin foardat er in ferbiningshook útfiere. Dat binne ferskillende lagen, en se kinne ferskillende identiteiten neame.
In map yn eigendom fan root mei in beheinende modus is folslein sichtber foar in daemon dy’t al privileezjes ôfstien hat, en dochs net-skriuwber foar him. De flater wurdt dan lêzen as in tastimmingsprobleem, hoewol it paad krekt bestiet dêr’t jo it ferwachten. Fergelykje de eigener fan ’e map mei de identiteit dy’t de hook rapportearret. As se ferskille, wie de modus nea de fraach.
Kontrolearje de identiteit dêr’t de hook echt ûnder rint foardat jo it eigendom feroarje. It feroarjen fan ’e útfierbrûker fan ’e tsjinst om in map te reparearjen kin apparaattagong en netwurkprivileezjes earne oars feroarje, wat in hege priis is foar in lyts probleem.
Kontrolearje de hiele oerdracht
Befêstigje fjouwer dingen tagelyk: de hook skriuwt ûnder syn echte identiteit, de bedoelde lêzer kin it bestân brûke, net-relatearre brûkers kinne dat net, en it stopjen fan ’e unit rommet op sa’t it ûntwurpen is. In bestân dat yn ’e dielde tydlike map fan ’e host ferskynt is gjin eask, en it is meast in teken dat de útwikseling nea in eigen paad krige. Test de lêzer nei in nijstart, net allinnich by de earste rin. Opromjend gedrach is part fan it ûntwerp, dus observearje it ynstee fan it oan te nimmen.
Oanhâldende steat heart earne mei in oerienkommende libbensdoer, om’t in runtima-map bedoeld is om te ferdwinen. Kies de lokaasje op libbensdoer ynstee fan op gemak. Dy gewoante foarkomt de folgjende ferzje fan itselde ûndersyk.