Hokoj raportas sukceson, kaj la sama vojo ankoraŭ aspektas malplena el ŝelo. Ambaŭ asertoj povas esti veraj samtempe, ĉar systemd-servo povas loĝi en sia propra muntada nomspaco kun privata provizora dosierujo. Kiam tio estas komprenita, la interesa demando fariĝas, ĉu la skribo entute sukcesis.

Du provizoraj dosierujoj, unu vojo

La izola agordo donas al la unuo privatan vidon de la provizoraj dosierujoj anstataŭ igi ilin nurlegeblaj. Procezoj ekstere de la unuo ne povas vidi, kion ĝi skribas tie, kaj ĉio, kion ĝi lasas malantaŭe, estas forĵetata kiam la unuo haltas. Vojo presita de la hoko kaj vojo kontrolita el ŝelo povas do rilati al malsamaj objektoj kun la sama nomo.

Tio estas videbleca problemo, kaj ĝi aspektas kiel datenperda problemo. Nenio estis forigita, ĉar la dosiero simple troviĝas en nomspaco, kies membro la ŝelo ne estas. La sama komando kondutas malsame kiam ĝi ruliĝas ene de la unuo, kaj tiu observo kutime solvas la disputon. Legu la agordojn de la unuo antaŭ ol konkludi ion ajn pri la skribo.

Apartigu nevideblan de neskribebla

Sukcesa skribo kaj malsukcesa malfermo produktas malsamajn pruvojn, kaj la distingo decidas la riparon. Se la hoko diras, ke la dosiero estis kreita sed ekstera leganto ne povas trovi ĝin, vi havas nomspacan demandon. Se la hoko raportas permesan eraron aŭ malsukcesan malfermon, la dosiero neniam estis skribita kaj neniu nomspaca ŝanĝo helpos.

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

La proceza radika vojo elmontras la propran dosiersisteman vidon de la servo, kondiĉite de permesoj sur tiu procezo dum ĝi ankoraŭ funkcias. Legu la ĵurnalon de la unuo en la sama sesio, ĉar skriberaro kaj mankanta dosiero facile konfuziĝas post kiam iu jam decidis la kaŭzon.

Donu al dividitaj datumoj eksplicitan lokon

Datumoj, kiujn bezonas nur la servo, apartenas al ĝia privata provizora dosierujo. Datumoj, kiujn alia procezo devas legi, bezonas vojon difinitan por ambaŭ, kun deklarita posedanto, reĝimo kaj findato. Decidu, kiun el la du kazoj vi havas, antaŭ ol redakti la unuon. Plej multaj el ĉi tiuj incidentoj venas de tio, ke privata dosiero estas traktata kiel dividita.

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

Rultempa dosierujo lokigas la dosierujon sub la rultempan areon de la sistemo, kreas ĝin por la agordita uzanto kaj grupo de la unuo kaj forigas ĝin kiam la unuo haltas. Aldonu ĝin per drop-in, por ke la unuo de la pakaĵo restu sendifekta, poste reŝargu la administrilon kaj restartigu tiun kazon, akceptante, ke ĝiaj klientoj rekonektiĝos.

Konservu ĉiun rultempan dosierujon, kiun la instalita unuo jam postulas. Anstataŭigi la liston anstataŭ aldoni al ĝi estas ofta maniero rompi nerilatan funkcion, kiun neniu ligas al la ŝanĝo.

Du tavoloj de privilegioj povas malkonsenti

La servoadministrilo kreas la dosierujon por la agordita uzanto de la unuo, dum la VPN-demono povas aparte malaltiĝi al sia propra konto antaŭ ol ruli konektan hokon. Tiuj estas malsamaj tavoloj, kaj ili povas nomi malsamajn identecojn.

Dosierujo posedata de root kun restrikta reĝimo estas tute videbla por demono, kiu jam delasis privilegiojn, kaj tamen neskribebla de ĝi. La eraro tiam legeblas kiel permesa problemo, kvankam la vojo ekzistas ĝuste tie, kie vi atendis. Komparu la posedanton de la dosierujo kun la identeco, kiun la hoko raportas. Kiam ili diferencas, la reĝimo neniam estis la demando.

Kontrolu la identecon, sub kiu la hoko vere ruliĝas, antaŭ ol ŝanĝi posedrajton. Ŝanĝi la ruluzanton de la servo por ripari dosierujon povas ŝanĝi aparatan aliron kaj retajn privilegiojn aliloke, kio estas alta prezo por malgranda problemo.

Kontrolu la tutan transdonon

Konfirmu kvar aferojn samtempe: la hoko skribas sub sia reala identeco, la celita leganto povas konsumi la dosieron, nerilataj uzantoj ne povas, kaj haltigo de la unuo purigas laŭ la plano. Dosiero aperanta en la dividita provizora dosierujo de la gastiganto ne estas postulo, kaj ĝi kutime signas, ke la interŝanĝo neniam ricevis propran vojon. Testu la leganton post restartigo, ne nur dum la unua rulado. Purigokonduto estas parto de la dezajno, do observu ĝin anstataŭ supozi ĝin.

Daŭra stato apartenas al loko kun kongrua vivodaŭro, ĉar rultempa dosierujo estas destinita malaperi. Elektu la lokon laŭ vivodaŭro, ne laŭ oportuno. Tiu kutimo malhelpas la sekvan version de ĝuste ĉi tiu esploro.

Rilataj artikoloj